From frik85@svn.reactos.com Wed Nov 16 22:20:35 2005 From: frik85@svn.reactos.com To: ros-diffs@reactos.org Subject: [ros-diffs] [frik85] 19276: RosCMS (Part 2) Date: Wed, 16 Nov 2005 22:20:47 +0100 Message-ID: <000001c5eaf3$9c7c9510$6b01a8c0@PENELOPE> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0049348072195527161==" --===============0049348072195527161== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit RosCMS (Part 2) Added: trunk/web/reactos.org/htdocs/roscms/inc/ Added: trunk/web/reactos.org/htdocs/roscms/inc/404.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_content.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_content_edit.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_dyncontent.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_dyncontent_edit.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_generate_menu.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_generate_menu_topframe.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_generator.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_help.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_inctext.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_languages.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_languages_edit.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_overview.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_pages.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_pages_delete.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_pages_edit.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_pages_save.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_seclog.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_seclog_edit.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_subsys.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_subsys_check.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_subsys_deluser.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_subsys_fix.php Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_user_accounts.php _____ Added: trunk/web/reactos.org/htdocs/roscms/inc/404.php --- trunk/web/reactos.org/htdocs/roscms/inc/404.php 2005-11-16 21:17:43 UTC (rev 19275) +++ trunk/web/reactos.org/htdocs/roscms/inc/404.php 2005-11-16 21:19:57 UTC (rev 19276) @@ -0,0 +1,46 @@ + + Klemens Friedl + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +// To prevent hacking activity: +if ( !defined('ROSCMS_SYSTEM') ) +{ + if ( !defined('ROSCMS_SYSTEM_LOG') ) { + define ("ROSCMS_SYSTEM_LOG", "Hacking attempt"); + } + $seclog_section="roscms_interface"; + $seclog_level="50"; + $seclog_reason="Hacking attempt: noaccess.php"; + define ("ROSCMS_SYSTEM", "Hacking attempt"); + include('securitylog.php'); // open security log + die("Hacking attempt"); +} +?> +

404 - Page not found

+

Page not found

+

Our Web server cannot find the page or file you asked for.

+

The link you followed may be broken or expired.

+

Please use one of the following links to find the information you are looking + for:

+ Property changes on: trunk/web/reactos.org/htdocs/roscms/inc/404.php ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/web/reactos.org/htdocs/roscms/inc/admin.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin.php 2005-11-16 21:17:43 UTC (rev 19275) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin.php 2005-11-16 21:19:57 UTC (rev 19276) @@ -0,0 +1,181 @@ + + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + // To prevent hacking activity: + if ( !defined('ROSCMS_SYSTEM') ) + { + if ( !defined('ROSCMS_SYSTEM_LOG') ) { + define ("ROSCMS_SYSTEM_LOG", "Hacking attempt"); + } + $seclog_section="roscms_admin_interface"; + $seclog_level="50"; + $seclog_reason="Hacking attempt: admin.php"; + define ("ROSCMS_SYSTEM", "Hacking attempt"); + include('securitylog.php'); // open security log + die("Hacking attempt"); + } + + + if ( !defined('ROSCMS_SYSTEM_ADMIN') ) { + define ("ROSCMS_SYSTEM_ADMIN", "Admin Interface"); // to prevent hacking activity + } + + if ($roscms_intern_usrgrp_admin == true) { // only for (super) admin group member + if ($rpm_site == "") { + create_head($rpm_page_title, $rpm_logo, $roscms_langres); + create_structure($rpm_page); + } + + switch ($rpm_sec) { + case "generator": // static page generator (output/view) + if ($rpm_site == "") { + echo '
Admin Interface - Generator'; + include("inc/generate_page.php"); + echo "
"; + } + else { + if ($rpm_sec3 == "menu") { + include("admin_generate_menu.php"); + } + if ($rpm_sec3 == "menutop") { + include("admin_generate_menu_topframe.php"); + } + else { + include("inc/generate_page.php"); + } + } + break; + case "generate": // generator menu page + include("inc/admin_generator.php"); + break; + case "pages": + if ($rpm_sec2=="view") { + include("inc/admin_pages.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/admin_pages_edit.php"); + } + else if ($rpm_sec2=="delete") { + include("inc/admin_pages_delete.php"); + } + else if ($rpm_sec2=="save") { + include("inc/admin_pages_save.php"); + } + break; + case "content": + if ($rpm_sec2=="view") { + include("inc/admin_content.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/admin_content_edit.php"); + } + else if ($rpm_sec2=="delete") { + include("inc/admin_content.php"); + //include("inc/admin_content_delete.php"); + } + else if ($rpm_sec2=="save") { + include("inc/admin_content_edit.php"); + //include("inc/admin_content_save.php"); + } + break; + case "dyncontent": + if ($rpm_sec2=="view") { + include("inc/admin_dyncontent.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/admin_dyncontent_edit.php"); + } + /*else if ($rpm_sec2=="delete") { + include("inc/admin_content.php"); + //include("inc/admin_content_delete.php"); + }*/ + else if ($rpm_sec2=="save") { + include("inc/admin_dyncontent_edit.php"); + } + break; + case "inctext": + if ($rpm_sec2=="view") { + include("inc/admin_inctext.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/nopermission.php"); + } + else if ($rpm_sec2=="delete") { + include("inc/nopermission.php"); + } + else if ($rpm_sec2=="save") { + include("inc/nopermission.php"); + } + break; + case "languages": + if ($rpm_sec2=="view") { + include("inc/admin_languages.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/admin_languages_edit.php"); + } + else if ($rpm_sec2=="delete") { + include("inc/admin_languages.php"); + //include("inc/admin_languages_delete.php"); + } + else if ($rpm_sec2=="save") { + include("inc/admin_languages.php"); + //include("inc/admin_languages_save.php"); + } + break; + case "users": + include("inc/admin_user_accounts.php"); + break; + case "usergroups": + include("inc/admin_user_groups.php"); + break; + case "usrgrpmbr": + include("inc/admin_user_group_memebers.php"); + break; + case "sessions": + include("inc/admin_user_sessions.php"); + break; + case "seclog": + if ($rpm_sec2=="view") { + include("inc/admin_seclog.php"); + } + else if ($rpm_sec2=="edit") { + include("inc/admin_seclog_edit.php"); + } + break; + case "stats": + include("../roswebstats/rospage_stats/admin/view_stats.php"); + break; + case "help": + include("inc/admin_help.php"); + break; + case "subsys": + include("inc/admin_subsys.php"); + break; + case "overview": + default: + include("inc/admin_overview.php"); + break; + } + } + else { // for all other user groups + header("location:?page=nopermission"); + } +?> Property changes on: trunk/web/reactos.org/htdocs/roscms/inc/admin.php ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_content.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin_content.php 2005-11-16 21:17:43 UTC (rev 19275) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin_content.php 2005-11-16 21:19:57 UTC (rev 19276) @@ -0,0 +1,423 @@ + + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + // To prevent hacking activity: + if ( !defined('ROSCMS_SYSTEM') ) + { + if ( !defined('ROSCMS_SYSTEM_LOG') ) { + define ("ROSCMS_SYSTEM_LOG", "Hacking attempt"); + } + $seclog_section="roscms_interface"; + $seclog_level="50"; + $seclog_reason="Hacking attempt: admin_content.php"; + define ("ROSCMS_SYSTEM", "Hacking attempt"); + include('securitylog.php'); // open security log + die("Hacking attempt"); + } + if ($rpm_page != "admin" && $rpm_page != "dev" && $rpm_page != "team" && $rpm_page != "trans") { + die(""); + } + if ($roscms_intern_usrgrp_admin == true || $roscms_intern_usrgrp_dev == true || $roscms_intern_usrgrp_team == true || $roscms_intern_usrgrp_trans == true) { + +?> + +
Admin Interface - Content + +

Action: New + Content | reset filters & + sort

+ + 50) { + $rpm_content_active=""; + $rpm_content_active_set=""; + if(array_key_exists("content_active", $_GET)) $rpm_content_active=$_GET["content_active"]; + if(array_key_exists("content_active_set", $_GET)) $rpm_content_active_set=$_GET["content_active_set"]; + + if ($rpm_content_active != "" AND $rpm_content_active_set != "") { + $content_postc="UPDATE `content` SET `content_active` = '$rpm_content_active' WHERE `content_id` = '$rpm_content_active_set' LIMIT 1 ;"; + $content_post_listc=mysql_query($content_postc); + } + } + + + if ($rpm_lang_id == "") { + if (($roscms_intern_usrgrp_trans == true || $roscms_intern_usrgrp_team == true) && ($rpm_page == "trans" || $rpm_page == "team")) { + $rpm_lang_id="en"; + } + else { + $rpm_lang_id="all"; + } + } + echo '

Language: '; + if ($roscms_intern_usrgrp_dev == true || $roscms_intern_usrgrp_admin == true) { + if ($rpm_lang_id == "all") { + echo 'All'; + $ros_cms_intern_content_lang = ""; + } + else { + echo 'All'; + } + echo ' | '; + if ($rpm_lang_id == "nolang") { + echo 'International'; + $ros_cms_intern_content_lang = "AND content_lang = 'all'"; + } + else { + echo 'In ternational'; + } + } + else { + echo '->'; + } + // Languages + $sql_lang="SELECT * + FROM languages + WHERE lang_level != '0' + ORDER BY 'lang_level' DESC"; + $sql_query_lang=mysql_query($sql_lang); + while($myrow_lang=mysql_fetch_row($sql_query_lang)) { + $roscms_sel_lang = $myrow_lang[0]; + echo ' | '; + if ($rpm_lang_id == $roscms_sel_lang) { + echo ''.$myrow_lang[1].''; + $ros_cms_intern_content_lang = "AND content_lang = '".$roscms_sel_lang."'"; + } + else { + echo ''.$myrow_lang[1].''; + } + } + + + if ($rpm_filt == "") { + if ($roscms_intern_usrgrp_admin == true) { + $rpm_filt="active"; + } + if ($roscms_intern_usrgrp_dev == true && $rpm_page == "dev") { + $rpm_filt="anvc"; + } + if (($roscms_intern_usrgrp_team == true && $rpm_page == "team") || ($roscms_intern_usrgrp_trans == true && $rpm_page == "trans")) { + $rpm_filt="anvc"; + } + } + echo '

Filter: '; + if (($roscms_intern_usrgrp_admin == true && $rpm_page == "admin") || ($roscms_intern_usrgrp_dev == true && $rpm_page == "dev")) { + if ($rpm_filt == "active") { + echo 'active content'; + $ros_cms_intern_content_filt = "WHERE content_active = '1'"; + } + else { + echo 'active content'; + } + echo ' | '; + if ($rpm_filt == "all") { + echo 'all content'; + $ros_cms_intern_content_filt = "WHERE `content_name` != ''"; + } + else { + echo 'all content'; + } + echo ' | '; + } + if ($rpm_filt == "anvc") { + echo 'active and visible content'; + $ros_cms_intern_content_filt = "WHERE content_active = '1' AND content_visible = '1'"; + } + else { + echo 'active and visible content'; + } + echo ' | '; + if ($rpm_filt == "user") { + echo 'current user'; + $ros_cms_intern_content_filt = "WHERE content_usrname_id = '".$roscms_intern_account_id."'"; + } + else { + echo 'current user'; + } + if ($rpm_filt == "history") { + echo ' | history'; + $ros_cms_intern_content_filt = "WHERE content_name = '".$rpm_opt."'"; + } + echo '

'; + + if ($rpm_sort == "") { + $rpm_sort="id"; + } + echo '

Sorted by: '; + if ($rpm_sort == "id") { + echo 'content id'; + $ros_cms_intern_content_sortby="content_name"; + $ros_cms_intern_content_sort="ASC"; + } + else { + echo 'con tent id'; + } + echo ' | '; + if ($rpm_sort == "date") { + echo 'date'; + $ros_cms_intern_content_sortby="content_date"; + $ros_cms_intern_content_sort="DESC"; + } + else { + echo 'd ate'; + } + echo ' | '; + if ($rpm_sort == "user") { + echo 'user'; + $ros_cms_intern_content_sortby="content_usrname_id"; + $ros_cms_intern_content_sort="ASC"; + } + else { + echo 'u ser'; + } + echo ' | '; + if ($rpm_sort == "active") { + echo 'active'; + $ros_cms_intern_content_sortby="content_active"; + $ros_cms_intern_content_sort="DESC"; + } + else { + echo 'active'; + } + echo ' | '; + if ($rpm_sort == "visible") { + echo 'visible'; + $ros_cms_intern_content_sortby="content_visible"; + $ros_cms_intern_content_sort="DESC"; + } + else { + echo 'visible'; + } + echo ' | '; + if ($rpm_sort == "version") { + echo 'version'; + $ros_cms_intern_content_sortby="content_version"; + $ros_cms_intern_content_sort="DESC"; + } + else { + echo 'version'; + } + echo ' | '; + if ($rpm_sort == "language") { + echo 'language'; + $ros_cms_intern_content_sortby="content_lang"; + $ros_cms_intern_content_sort="ASC"; + } + else { + echo 'language'; + } + echo ' | '; + if ($rpm_sort == "editor") { + echo 'editor'; + $ros_cms_intern_content_sortby="content_editor"; + $ros_cms_intern_content_sort="DESC"; + } + else { + echo 'editor'; + } + echo '

'; + +?> + + + + + + + + + + + + + + + + + + + + + + + + + +
Action
Info
Content + ID
Language
Content
Rev.
+
+ Date
User
"> +
+ + + Translate + + View + + + Delete + + ">Filter: history +
+ + active + + NOT active + +
+ + visible + + NOT visible + +
+ + Locked + + Rich
Text Editor + + bbcode
Editor + +
".$result_content['content_name']."]"; ?>
">
+ + +
">
+ +
+
+ +
+ ".$roscms_intern_accountuser."
Profile"; + } + else { + echo "RosCMS"; + } + ?> +
+ +
+ Property changes on: trunk/web/reactos.org/htdocs/roscms/inc/admin_content.php ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/web/reactos.org/htdocs/roscms/inc/admin_content_edit.php --- trunk/web/reactos.org/htdocs/roscms/inc/admin_content_edit.php 2005-11-16 21:17:43 UTC (rev 19275) +++ trunk/web/reactos.org/htdocs/roscms/inc/admin_content_edit.php 2005-11-16 21:19:57 UTC (rev 19276) @@ -0,0 +1,413 @@ + + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +?> +
Admin Interface - Content + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Content + ID
+ [#cont_ + + ]   (e.g. "media")
Language
+ +
Content
Revision
+ +
Visible
+ yes   no'; + } + else { + echo ' yes   no'; + } + ?> +
Active
+ yes   no'; + } + else { + echo ' yes   no'; + } + ?> +
Editor
Date
+ +
Time
+ +
Action
+

+ BasePath = '/FCKeditor/' ; // '/FCKeditor/' is the default value. + $sBasePath = $_SERVER['PHP_SELF'] ; + $sBasePath = substr( $sBasePath, 0, strpos( $sBasePath, "_samples" ) ) ; + + $oFCKeditor = new FCKeditor('FCKeditor') ; + //$oFCKeditor->BasePath = $sBasePath ; + //$oFCKeditor->ToolbarSet = "Basic"; + $oFCKeditor->BasePath = '../editor/FC/'; + + $oFCKeditor->Height = 500; + $oFCKeditor->Value = $roscms_intern_editor_content; + $oFCKeditor->Create() ; + } + if ($result_content['content_editor']=="bbcode") { + include("../editor/bbcode/bbcodeeditor.php"); + include("../editor/bbcode/cbparser.php"); + if (isset($_POST['content_rad_opt'])) { + echo "

Preview".bb2html(stripslashes(@$_POST['po st']),'')."

"; + } + else { + echo "

Preview".bb2html(stripslashes($roscms_int ern_editor_content),'')."

"; + //echo "


".bb2html(stripslashes($roscms_intern_editor_content),'')."
< /p>"; + } + } + + $roscms_intern_content_name=$result_content['content_name']; + ?> +

+

+ + + Translate +

Please check, if you selected the right language, before you + click "submit"!

+ +

 

+ + > + Save (new version)   + + > + Update + + + + Preview +

+

+ + + + Locked (you need + a higher account level to save the content to the database)

+ +

Info: for each [#inc_xyz] tag the RosCMS will include + the code that is linked with this tag from database.
+
+ Hints:

+
    +
  • use &amp; instead of "&" in links, e.g. http://www.reactos.org/?page=support&amp;lang=en
  • +
  • "<placeholder>" => &lt;placeholder&gt;
  • +
  • ReactOS Homepage URL: [#roscms_path_homepage]
  • +
+
+ + + aa".$content_act; + if ($content_langa == "") { + $content_langa = "all"; + } + + if ($content_vis == "yes") { + $content_vis="1"; + } + else { + $content_vis="0"; + } + + if ($content_act == "yes") { + $content_act="1"; + } + else { + $content_act="0"; [truncated at 1000 lines; 3865 more skipped] --===============0049348072195527161== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+CjxoZWFkPgo8c3R5bGU+CjwhLS0KYm9keSB7IGJhY2tncm91bmQtY29sb3I6I2ZmZmZm ZiB9Ci5maWxlIHsgYm9yZGVyOjFweCBzb2xpZCAjZWVlZWVlOyBtYXJnaW4tdG9wOjFlbTsgbWFy Z2luLWJvdHRvbToxZW0gfQoucGF0aG5hbWUgeyBmb250LWZhbWlseTptb25vc3BhY2U7IGZsb2F0 OnJpZ2h0IH0KLmZpbGVoZWFkZXIgeyBtYXJnaW4tYm90dG9tOi41ZW0gfQouZGlmZiB7IG1hcmdp bjowIH0KLnRhc2tsaXN0IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7 IG1hcmdpbi10b3A6MWVtIH0KLnRhc2tsaXN0IHVsIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tYm90 dG9tOjAgfQp0ci5hbHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQojYWRkZWQgeyBiYWNr Z3JvdW5kLWNvbG9yOiNkZGZmZGQgfQojYWRkZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6Izk5 ZmY5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0KdHIuYWx0ICNhZGRlZCB7IGJhY2tncm91bmQtY29s b3I6I2NjZjdjYyB9CiNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZmZkZGRkIH0KI3JlbW92 ZWRjaGFycyB7IGJhY2tncm91bmQtY29sb3I6I2ZmOTk5OTsgZm9udC13ZWlnaHQ6Ym9sZGVyIH0K dHIuYWx0ICNyZW1vdmVkIHsgYmFja2dyb3VuZC1jb2xvcjojZjdjY2NjIH0KI2luZm8geyBjb2xv cjojODg4ODg4IH0KI2NvbnRleHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiNlZWVlZWUgfQp0ZCB7cGFk ZGluZy1sZWZ0Oi4zZW07IHBhZGRpbmctcmlnaHQ6LjNlbSB9CnRyLmhlYWQgeyBib3JkZXItYm90 dG9tLXdpZHRoOjFweDsgYm9yZGVyLWJvdHRvbS1zdHlsZTpzb2xpZCB9CnRyLmhlYWQgdGQgeyBw YWRkaW5nOjA7IHBhZGRpbmctdG9wOi4yZW0gfQoudGFzayB7IGJhY2tncm91bmQtY29sb3I6I2Zm ZmYwMCB9Ci5jb21tZW50IHsgcGFkZGluZzo0cHg7IGJvcmRlcjoxcHggZGFzaGVkICMwMDAwMDA7 IGJhY2tncm91bmQtY29sb3I6I2ZmZmZkZCB9Ci5lcnJvciB7IGNvbG9yOnJlZCB9CmhyIHsgYm9y ZGVyLXdpZHRoOjBweDsgaGVpZ2h0OjJweDsgYmFja2dyb3VuZDpibGFjayB9Ci0tPgo8L3N0eWxl Pgo8L2hlYWQ+Cjxib2R5Pgo8cHJlIGNsYXNzPSJjb21tZW50Ij5Sb3NDTVMgKFBhcnQgMik8L3By ZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iYWRkZWQiPkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5v cmcvaHRkb2NzL3Jvc2Ntcy9pbmMvCkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2Nz L3Jvc2Ntcy9pbmMvNDA0LnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9y b3NjbXMvaW5jL2FkbWluLnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9y b3NjbXMvaW5jL2FkbWluX2NvbnRlbnQucGhwCkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcv aHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fY29udGVudF9lZGl0LnBocApBZGRlZDogdHJ1bmsvd2Vi L3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX2R5bmNvbnRlbnQucGhwCkFkZGVk OiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fZHluY29udGVu dF9lZGl0LnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMvaW5j L2FkbWluX2dlbmVyYXRlX21lbnUucGhwCkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRk b2NzL3Jvc2Ntcy9pbmMvYWRtaW5fZ2VuZXJhdGVfbWVudV90b3BmcmFtZS5waHAKQWRkZWQ6IHRy dW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9nZW5lcmF0b3IucGhw CkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5faGVs cC5waHAKQWRkZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1p bl9pbmN0ZXh0LnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMv aW5jL2FkbWluX2xhbmd1YWdlcy5waHAKQWRkZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRv Y3Mvcm9zY21zL2luYy9hZG1pbl9sYW5ndWFnZXNfZWRpdC5waHAKQWRkZWQ6IHRydW5rL3dlYi9y ZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9vdmVydmlldy5waHAKQWRkZWQ6IHRy dW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9wYWdlcy5waHAKQWRk ZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9wYWdlc19k ZWxldGUucGhwCkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMv YWRtaW5fcGFnZXNfZWRpdC5waHAKQWRkZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mv cm9zY21zL2luYy9hZG1pbl9wYWdlc19zYXZlLnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mu b3JnL2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX3NlY2xvZy5waHAKQWRkZWQ6IHRydW5rL3dlYi9y ZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9zZWNsb2dfZWRpdC5waHAKQWRkZWQ6 IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9zdWJzeXMucGhw CkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fc3Vi c3lzX2NoZWNrLnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMv aW5jL2FkbWluX3N1YnN5c19kZWx1c2VyLnBocApBZGRlZDogdHJ1bmsvd2ViL3JlYWN0b3Mub3Jn L2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX3N1YnN5c19maXgucGhwCkFkZGVkOiB0cnVuay93ZWIv cmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fdXNlcl9hY2NvdW50cy5waHAKPC9w cmU+PGhyIC8+PGRpdiBjbGFzcz0iZmlsZSI+CjxkaXYgY2xhc3M9ImZpbGVoZWFkZXIiPjxiaWc+ PGI+QWRkZWQ6IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy80MDQucGhw PC9iPjwvYmlnPjwvZGl2Pgo8cHJlIGNsYXNzPSJkaWZmIj48c21hbGwgaWQ9ImluZm8iPi0tLSB0 cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvNDA0LnBocAkyMDA1LTExLTE2 IDIxOjE3OjQzIFVUQyAocmV2IDE5Mjc1KQorKysgdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9j cy9yb3NjbXMvaW5jLzQwNC5waHAJMjAwNS0xMS0xNiAyMToxOTo1NyBVVEMgKHJldiAxOTI3NikK QEAgLTAsMCArMSw0NiBAQAo8L3NtYWxsPjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYiIGlkPSJhZGRl ZCI+KyZsdDs/cGhwCisgJm5ic3A7ICZuYnNwOy8qCisgJm5ic3A7ICZuYnNwO1Jvc0NNUyAtIFJl YWN0T1MgQ29udGVudCBNYW5hZ2VtZW50IFN5c3RlbQorICZuYnNwOyAmbmJzcDtDb3B5cmlnaHQg KEMpIDIwMDUgJm5ic3A7R2UgdmFuIEdlbGRvcnAgJmx0O2d2Z0ByZWFjdG9zLm9yZyZndDsKKwkg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7S2xlbWVucyBGcmllZGwgJmx0O2ZyaWs4NUByZWFjdG9zLm9yZyZndDsKKwor ICZuYnNwOyAmbmJzcDtUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICZuYnNwOyAmbmJzcDtpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICZu YnNwOyAmbmJzcDt0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgorICZuYnNwOyAmbmJzcDsoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorCisgJm5ic3A7ICZuYnNwO1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICZuYnNwOyAmbmJzcDtidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorICZuYnNwOyAmbmJzcDtNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICZuYnNwO1NlZSB0aGUKKyAmbmJzcDsgJm5ic3A7R05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICZuYnNwOyAmbmJzcDtZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor ICZuYnNwOyAmbmJzcDthbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorICZuYnNwOyAmbmJzcDtGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFz cyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAmbmJzcDsgJm5ic3A7Ki8KKworLy8g VG8gcHJldmVudCBoYWNraW5nIGFjdGl2aXR5OgoraWYgKCAhZGVmaW5lZCgnUk9TQ01TX1NZU1RF TScpICkKK3sKKwlpZiAoICFkZWZpbmVkKCdST1NDTVNfU1lTVEVNX0xPRycpICkgeworCQlkZWZp bmUgKCZxdW90O1JPU0NNU19TWVNURU1fTE9HJnF1b3Q7LCAmcXVvdDtIYWNraW5nIGF0dGVtcHQm cXVvdDspOworCX0KKwkkc2VjbG9nX3NlY3Rpb249JnF1b3Q7cm9zY21zX2ludGVyZmFjZSZxdW90 OzsKKwkkc2VjbG9nX2xldmVsPSZxdW90OzUwJnF1b3Q7OworCSRzZWNsb2dfcmVhc29uPSZxdW90 O0hhY2tpbmcgYXR0ZW1wdDogbm9hY2Nlc3MucGhwJnF1b3Q7OworCWRlZmluZSAoJnF1b3Q7Uk9T Q01TX1NZU1RFTSZxdW90OywgJnF1b3Q7SGFja2luZyBhdHRlbXB0JnF1b3Q7KTsKKwlpbmNsdWRl KCdzZWN1cml0eWxvZy5waHAnKTsgLy8gb3BlbiBzZWN1cml0eSBsb2cKKwlkaWUoJnF1b3Q7SGFj a2luZyBhdHRlbXB0JnF1b3Q7KTsKK30KKz8mZ3Q7CismbHQ7aDEmZ3Q7NDA0IC0gUGFnZSBub3Qg Zm91bmQmbHQ7L2gxJmd0OworJmx0O2gyJmd0O1BhZ2Ugbm90IGZvdW5kJmx0Oy9oMiZndDsKKyZs dDtwJmd0O091ciBXZWIgc2VydmVyIGNhbm5vdCBmaW5kIHRoZSBwYWdlIG9yIGZpbGUgeW91IGFz a2VkIGZvci4mbHQ7L3AmZ3Q7CismbHQ7cCZndDtUaGUgbGluayB5b3UgZm9sbG93ZWQgbWF5IGJl IGJyb2tlbiBvciBleHBpcmVkLiAmbHQ7L3AmZ3Q7CismbHQ7cCZndDtQbGVhc2UgdXNlIG9uZSBv ZiB0aGUgZm9sbG93aW5nIGxpbmtzIHRvIGZpbmQgdGhlIGluZm9ybWF0aW9uIHlvdSBhcmUgbG9v a2luZyAKKyAmbmJzcDtmb3I6Jmx0Oy9wJmd0OworJmx0O3VsJmd0OworICZuYnNwOyZsdDtsaSZn dDsmbHQ7YSBocmVmPSZxdW90O2h0dHA6Ly93d3cucmVhY3Rvcy5vcmcvJnF1b3Q7Jmd0O3d3dy5y ZWFjdG9zLm9yZyBIb21lcGFnZSZsdDsvYSZndDsgJmx0Oy9saSZndDsKKyAmbmJzcDsmbHQ7bGkm Z3Q7Jmx0O2EgaHJlZj0mcXVvdDtodHRwOi8vd3d3LnJlYWN0b3Mub3JnLz9wYWdlPXNpdGVtYXAm cXVvdDsmZ3Q7d3d3LnJlYWN0b3Mub3JnIFNpdGVtYXAmbHQ7L2EmZ3Q7IAorICZuYnNwOyZsdDsv bGkmZ3Q7CismbHQ7L3VsJmd0Owo8L3ByZT48cHJlIGNsYXNzPSJkaWZmIiBpZD0iY29udGV4dCI+ UHJvcGVydHkgY2hhbmdlcyBvbjogdHJ1bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMv aW5jLzQwNC5waHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAmbmJzcDsgKyBuYXRp dmUKPC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxl aGVhZGVyIj48YmlnPjxiPkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Nt cy9pbmMvYWRtaW4ucGhwPC9iPjwvYmlnPjwvZGl2Pgo8cHJlIGNsYXNzPSJkaWZmIj48c21hbGwg aWQ9ImluZm8iPi0tLSB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRt aW4ucGhwCTIwMDUtMTEtMTYgMjE6MTc6NDMgVVRDIChyZXYgMTkyNzUpCisrKyB0cnVuay93ZWIv cmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW4ucGhwCTIwMDUtMTEtMTYgMjE6MTk6 NTcgVVRDIChyZXYgMTkyNzYpCkBAIC0wLDAgKzEsMTgxIEBACjwvc21hbGw+PC9wcmU+PHByZSBj bGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rJmx0Oz9waHAKKyAmbmJzcDsgJm5ic3A7LyoKKyAmbmJz cDsgJm5ic3A7Um9zQ01TIC0gUmVhY3RPUyBDb250ZW50IE1hbmFnZW1lbnQgU3lzdGVtCisgJm5i c3A7ICZuYnNwO0NvcHlyaWdodCAoQykgMjAwNSAmbmJzcDtLbGVtZW5zIEZyaWVkbCAmbHQ7ZnJp azg1QHJlYWN0b3Mub3JnJmd0OworCisgJm5ic3A7ICZuYnNwO1RoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgJm5ic3A7 ICZuYnNwO2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisgJm5ic3A7ICZuYnNwO3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgJm5ic3A7ICZuYnNw OyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAmbmJzcDsgJm5ic3A7VGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgJm5ic3A7ICZuYnNwO2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgJm5ic3A7ICZuYnNwO01FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gJm5ic3A7U2VlIHRoZQorICZuYnNw OyAmbmJzcDtHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg Jm5ic3A7ICZuYnNwO1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgJm5ic3A7ICZuYnNwO2Fsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgJm5ic3A7ICZuYnNwO0Zv dW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgor ICZuYnNwOyAmbmJzcDsqLworCisJLy8gVG8gcHJldmVudCBoYWNraW5nIGFjdGl2aXR5OgorCWlm ICggIWRlZmluZWQoJ1JPU0NNU19TWVNURU0nKSApCisJeworCQlpZiAoICFkZWZpbmVkKCdST1ND TVNfU1lTVEVNX0xPRycpICkgeworCQkJZGVmaW5lICgmcXVvdDtST1NDTVNfU1lTVEVNX0xPRyZx dW90OywgJnF1b3Q7SGFja2luZyBhdHRlbXB0JnF1b3Q7KTsKKwkJfQorCQkkc2VjbG9nX3NlY3Rp b249JnF1b3Q7cm9zY21zX2FkbWluX2ludGVyZmFjZSZxdW90OzsKKwkJJHNlY2xvZ19sZXZlbD0m cXVvdDs1MCZxdW90OzsKKwkJJHNlY2xvZ19yZWFzb249JnF1b3Q7SGFja2luZyBhdHRlbXB0OiBh ZG1pbi5waHAmcXVvdDs7CisJCWRlZmluZSAoJnF1b3Q7Uk9TQ01TX1NZU1RFTSZxdW90OywgJnF1 b3Q7SGFja2luZyBhdHRlbXB0JnF1b3Q7KTsKKwkJaW5jbHVkZSgnc2VjdXJpdHlsb2cucGhwJyk7 IC8vIG9wZW4gc2VjdXJpdHkgbG9nCisJCWRpZSgmcXVvdDtIYWNraW5nIGF0dGVtcHQmcXVvdDsp OworCX0KKworCisJaWYgKCAhZGVmaW5lZCgnUk9TQ01TX1NZU1RFTV9BRE1JTicpICkgeworCQlk ZWZpbmUgKCZxdW90O1JPU0NNU19TWVNURU1fQURNSU4mcXVvdDssICZxdW90O0FkbWluIEludGVy ZmFjZSZxdW90Oyk7IC8vIHRvIHByZXZlbnQgaGFja2luZyBhY3Rpdml0eQorCX0KKworCWlmICgk cm9zY21zX2ludGVybl91c3JncnBfYWRtaW4gPT0gdHJ1ZSkgeyAvLyBvbmx5IGZvciAoc3VwZXIp IGFkbWluIGdyb3VwIG1lbWJlcgorCQlpZiAoJHJwbV9zaXRlID09ICZxdW90OyZxdW90Oykgewor CQkJY3JlYXRlX2hlYWQoJHJwbV9wYWdlX3RpdGxlLCAkcnBtX2xvZ28sICRyb3NjbXNfbGFuZ3Jl cyk7CisJCQljcmVhdGVfc3RydWN0dXJlKCRycG1fcGFnZSk7CisJCX0KKwkKKwkJc3dpdGNoICgk cnBtX3NlYykgeworCQkJY2FzZSAmcXVvdDtnZW5lcmF0b3ImcXVvdDs6IC8vIHN0YXRpYyBwYWdl IGdlbmVyYXRvciAob3V0cHV0L3ZpZXcpCisJCQkJaWYgKCRycG1fc2l0ZSA9PSAmcXVvdDsmcXVv dDspIHsKKwkJCQkJZWNobyAnJmx0O2RpdiBjbGFzcz0mcXVvdDtjb250ZW50U21hbGwmcXVvdDsm Z3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O2NvbnRlbnRTbWFsbFRpdGxlJnF1b3Q7Jmd0O0FkbWlu IEludGVyZmFjZSAtIEdlbmVyYXRvciZsdDsvc3BhbiZndDsnOworCQkJCQlpbmNsdWRlKCZxdW90 O2luYy9nZW5lcmF0ZV9wYWdlLnBocCZxdW90Oyk7IAorCQkJCQllY2hvICZxdW90OyZsdDsvZGl2 Jmd0OyZxdW90OzsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCWlmICgkcnBtX3NlYzMgPT0gJnF1 b3Q7bWVudSZxdW90OykgeworCQkJCQkJaW5jbHVkZSgmcXVvdDthZG1pbl9nZW5lcmF0ZV9tZW51 LnBocCZxdW90Oyk7CisJCQkJCX0KKwkJCQkJaWYgKCRycG1fc2VjMyA9PSAmcXVvdDttZW51dG9w JnF1b3Q7KSB7CisJCQkJCQlpbmNsdWRlKCZxdW90O2FkbWluX2dlbmVyYXRlX21lbnVfdG9wZnJh bWUucGhwJnF1b3Q7KTsKKwkJCQkJfQorCQkJCQllbHNlIHsKKwkJCQkJCWluY2x1ZGUoJnF1b3Q7 aW5jL2dlbmVyYXRlX3BhZ2UucGhwJnF1b3Q7KTsgCisJCQkJCX0KKwkJCQl9CisJCQkJYnJlYWs7 CisJCQljYXNlICZxdW90O2dlbmVyYXRlJnF1b3Q7OiAvLyBnZW5lcmF0b3IgbWVudSBwYWdlCisJ CQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fZ2VuZXJhdG9yLnBocCZxdW90Oyk7IAorCQkJCWJy ZWFrOworCQkJY2FzZSAmcXVvdDtwYWdlcyZxdW90OzoKKwkJCQlpZiAoJHJwbV9zZWMyPT0mcXVv dDt2aWV3JnF1b3Q7KSB7CisJCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX3BhZ2VzLnBocCZx dW90Oyk7IAorCQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O2VkaXQmcXVvdDsp IHsKKwkJCQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fcGFnZXNfZWRpdC5waHAmcXVvdDspOyAK KwkJCQl9CisJCQkJZWxzZSBpZiAoJHJwbV9zZWMyPT0mcXVvdDtkZWxldGUmcXVvdDspIHsKKwkJ CQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fcGFnZXNfZGVsZXRlLnBocCZxdW90Oyk7IAorCQkJ CX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O3NhdmUmcXVvdDspIHsKKwkJCQkJaW5j bHVkZSgmcXVvdDtpbmMvYWRtaW5fcGFnZXNfc2F2ZS5waHAmcXVvdDspOyAKKwkJCQl9CisJCQkJ YnJlYWs7CisJCQljYXNlICZxdW90O2NvbnRlbnQmcXVvdDs6CisJCQkJaWYgKCRycG1fc2VjMj09 JnF1b3Q7dmlldyZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9hZG1pbl9jb250ZW50 LnBocCZxdW90Oyk7IAorCQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O2VkaXQm cXVvdDspIHsKKwkJCQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fY29udGVudF9lZGl0LnBocCZx dW90Oyk7IAorCQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O2RlbGV0ZSZxdW90 OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9hZG1pbl9jb250ZW50LnBocCZxdW90Oyk7IAor CQkJCQkvL2luY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX2NvbnRlbnRfZGVsZXRlLnBocCZxdW90Oyk7 IAorCQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O3NhdmUmcXVvdDspIHsKKwkJ CQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fY29udGVudF9lZGl0LnBocCZxdW90Oyk7IAorCQkJ CQkvL2luY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX2NvbnRlbnRfc2F2ZS5waHAmcXVvdDspOyAKKwkJ CQl9CisJCQkJYnJlYWs7CisJCQljYXNlICZxdW90O2R5bmNvbnRlbnQmcXVvdDs6CisJCQkJaWYg KCRycG1fc2VjMj09JnF1b3Q7dmlldyZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9h ZG1pbl9keW5jb250ZW50LnBocCZxdW90Oyk7IAorCQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3Nl YzI9PSZxdW90O2VkaXQmcXVvdDspIHsKKwkJCQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fZHlu Y29udGVudF9lZGl0LnBocCZxdW90Oyk7IAorCQkJCX0KKwkJCQkvKmVsc2UgaWYgKCRycG1fc2Vj Mj09JnF1b3Q7ZGVsZXRlJnF1b3Q7KSB7CisJCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX2Nv bnRlbnQucGhwJnF1b3Q7KTsgCisJCQkJCS8vaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fY29udGVu dF9kZWxldGUucGhwJnF1b3Q7KTsgCisJCQkJfSovCisJCQkJZWxzZSBpZiAoJHJwbV9zZWMyPT0m cXVvdDtzYXZlJnF1b3Q7KSB7CisJCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX2R5bmNvbnRl bnRfZWRpdC5waHAmcXVvdDspOyAKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlICZxdW90O2lu Y3RleHQmcXVvdDs6CisJCQkJaWYgKCRycG1fc2VjMj09JnF1b3Q7dmlldyZxdW90OykgeworCQkJ CQlpbmNsdWRlKCZxdW90O2luYy9hZG1pbl9pbmN0ZXh0LnBocCZxdW90Oyk7IAorCQkJCX0KKwkJ CQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O2VkaXQmcXVvdDspIHsKKwkJCQkJaW5jbHVkZSgm cXVvdDtpbmMvbm9wZXJtaXNzaW9uLnBocCZxdW90Oyk7IAorCQkJCX0KKwkJCQllbHNlIGlmICgk cnBtX3NlYzI9PSZxdW90O2RlbGV0ZSZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9u b3Blcm1pc3Npb24ucGhwJnF1b3Q7KTsgCisJCQkJfQorCQkJCWVsc2UgaWYgKCRycG1fc2VjMj09 JnF1b3Q7c2F2ZSZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9ub3Blcm1pc3Npb24u cGhwJnF1b3Q7KTsgCisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSAmcXVvdDtsYW5ndWFnZXMm cXVvdDs6CisJCQkJaWYgKCRycG1fc2VjMj09JnF1b3Q7dmlldyZxdW90OykgeworCQkJCQlpbmNs dWRlKCZxdW90O2luYy9hZG1pbl9sYW5ndWFnZXMucGhwJnF1b3Q7KTsgCisJCQkJfQorCQkJCWVs c2UgaWYgKCRycG1fc2VjMj09JnF1b3Q7ZWRpdCZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90 O2luYy9hZG1pbl9sYW5ndWFnZXNfZWRpdC5waHAmcXVvdDspOyAKKwkJCQl9CisJCQkJZWxzZSBp ZiAoJHJwbV9zZWMyPT0mcXVvdDtkZWxldGUmcXVvdDspIHsKKwkJCQkJaW5jbHVkZSgmcXVvdDtp bmMvYWRtaW5fbGFuZ3VhZ2VzLnBocCZxdW90Oyk7IAorCQkJCQkvL2luY2x1ZGUoJnF1b3Q7aW5j L2FkbWluX2xhbmd1YWdlc19kZWxldGUucGhwJnF1b3Q7KTsgCisJCQkJfQorCQkJCWVsc2UgaWYg KCRycG1fc2VjMj09JnF1b3Q7c2F2ZSZxdW90OykgeworCQkJCQlpbmNsdWRlKCZxdW90O2luYy9h ZG1pbl9sYW5ndWFnZXMucGhwJnF1b3Q7KTsgCisJCQkJCS8vaW5jbHVkZSgmcXVvdDtpbmMvYWRt aW5fbGFuZ3VhZ2VzX3NhdmUucGhwJnF1b3Q7KTsgCisJCQkJfQorCQkJCWJyZWFrOworCQkJY2Fz ZSAmcXVvdDt1c2VycyZxdW90OzoKKwkJCQlpbmNsdWRlKCZxdW90O2luYy9hZG1pbl91c2VyX2Fj Y291bnRzLnBocCZxdW90Oyk7IAorCQkJCWJyZWFrOworCQkJY2FzZSAmcXVvdDt1c2VyZ3JvdXBz JnF1b3Q7OgorCQkJCWluY2x1ZGUoJnF1b3Q7aW5jL2FkbWluX3VzZXJfZ3JvdXBzLnBocCZxdW90 Oyk7IAorCQkJCWJyZWFrOworCQkJY2FzZSAmcXVvdDt1c3JncnBtYnImcXVvdDs6CisJCQkJaW5j bHVkZSgmcXVvdDtpbmMvYWRtaW5fdXNlcl9ncm91cF9tZW1lYmVycy5waHAmcXVvdDspOyAKKwkJ CQlicmVhazsKKwkJCWNhc2UgJnF1b3Q7c2Vzc2lvbnMmcXVvdDs6CisJCQkJaW5jbHVkZSgmcXVv dDtpbmMvYWRtaW5fdXNlcl9zZXNzaW9ucy5waHAmcXVvdDspOyAKKwkJCQlicmVhazsKKwkJCWNh c2UgJnF1b3Q7c2VjbG9nJnF1b3Q7OgorCQkJCWlmICgkcnBtX3NlYzI9PSZxdW90O3ZpZXcmcXVv dDspIHsKKwkJCQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fc2VjbG9nLnBocCZxdW90Oyk7IAor CQkJCX0KKwkJCQllbHNlIGlmICgkcnBtX3NlYzI9PSZxdW90O2VkaXQmcXVvdDspIHsKKwkJCQkJ aW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fc2VjbG9nX2VkaXQucGhwJnF1b3Q7KTsgCisJCQkJfQor CQkJCWJyZWFrOworCQkJY2FzZSAmcXVvdDtzdGF0cyZxdW90OzoKKwkJCQlpbmNsdWRlKCZxdW90 Oy4uL3Jvc3dlYnN0YXRzL3Jvc3BhZ2Vfc3RhdHMvYWRtaW4vdmlld19zdGF0cy5waHAmcXVvdDsp OyAKKwkJCQlicmVhazsKKwkJCWNhc2UgJnF1b3Q7aGVscCZxdW90OzoKKwkJCQlpbmNsdWRlKCZx dW90O2luYy9hZG1pbl9oZWxwLnBocCZxdW90Oyk7IAorCQkJCWJyZWFrOworCQkJY2FzZSAmcXVv dDtzdWJzeXMmcXVvdDs6CisJCQkJaW5jbHVkZSgmcXVvdDtpbmMvYWRtaW5fc3Vic3lzLnBocCZx dW90Oyk7CisJCQkJYnJlYWs7CisJCQljYXNlICZxdW90O292ZXJ2aWV3JnF1b3Q7OgorCQkJZGVm YXVsdDoKKwkJCQlpbmNsdWRlKCZxdW90O2luYy9hZG1pbl9vdmVydmlldy5waHAmcXVvdDspOyAK KwkJCQlicmVhazsKKwkJfQkKKwl9CisJZWxzZSB7IC8vIGZvciBhbGwgb3RoZXIgdXNlciBncm91 cHMKKwkJaGVhZGVyKCZxdW90O2xvY2F0aW9uOj9wYWdlPW5vcGVybWlzc2lvbiZxdW90Oyk7CisJ fQorPyZndDsKPC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImNvbnRleHQiPlByb3BlcnR5IGNo YW5nZXMgb246IHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbi5w aHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAmbmJzcDsgKyBuYXRpdmUKPC9wcmU+ PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxlaGVhZGVyIj48 YmlnPjxiPkFkZGVkOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRt aW5fY29udGVudC5waHA8L2I+PC9iaWc+PC9kaXY+CjxwcmUgY2xhc3M9ImRpZmYiPjxzbWFsbCBp ZD0iaW5mbyI+LS0tIHRydW5rL3dlYi9yZWFjdG9zLm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1p bl9jb250ZW50LnBocAkyMDA1LTExLTE2IDIxOjE3OjQzIFVUQyAocmV2IDE5Mjc1KQorKysgdHJ1 bmsvd2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX2NvbnRlbnQucGhwCTIw MDUtMTEtMTYgMjE6MTk6NTcgVVRDIChyZXYgMTkyNzYpCkBAIC0wLDAgKzEsNDIzIEBACjwvc21h bGw+PC9wcmU+PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rJmx0Oz9waHAKKyAmbmJzcDsg Jm5ic3A7LyoKKyAmbmJzcDsgJm5ic3A7Um9zQ01TIC0gUmVhY3RPUyBDb250ZW50IE1hbmFnZW1l bnQgU3lzdGVtCisgJm5ic3A7ICZuYnNwO0NvcHlyaWdodCAoQykgMjAwNSAmbmJzcDtLbGVtZW5z IEZyaWVkbCAmbHQ7ZnJpazg1QHJlYWN0b3Mub3JnJmd0OworCisgJm5ic3A7ICZuYnNwO1RoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisgJm5ic3A7ICZuYnNwO2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgJm5ic3A7ICZuYnNwO3RoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y CisgJm5ic3A7ICZuYnNwOyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAm bmJzcDsgJm5ic3A7VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisgJm5ic3A7ICZuYnNwO2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgJm5ic3A7ICZuYnNwO01F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gJm5ic3A7 U2VlIHRoZQorICZuYnNwOyAmbmJzcDtHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorCisgJm5ic3A7ICZuYnNwO1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgJm5ic3A7ICZuYnNwO2Fsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisg Jm5ic3A7ICZuYnNwO0ZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBN QSAwMjEzOSwgVVNBLgorICZuYnNwOyAmbmJzcDsqLworCisJLy8gVG8gcHJldmVudCBoYWNraW5n IGFjdGl2aXR5OgorCWlmICggIWRlZmluZWQoJ1JPU0NNU19TWVNURU0nKSApCisJeworCQlpZiAo ICFkZWZpbmVkKCdST1NDTVNfU1lTVEVNX0xPRycpICkgeworCQkJZGVmaW5lICgmcXVvdDtST1ND TVNfU1lTVEVNX0xPRyZxdW90OywgJnF1b3Q7SGFja2luZyBhdHRlbXB0JnF1b3Q7KTsKKwkJfQor CQkkc2VjbG9nX3NlY3Rpb249JnF1b3Q7cm9zY21zX2ludGVyZmFjZSZxdW90OzsKKwkJJHNlY2xv Z19sZXZlbD0mcXVvdDs1MCZxdW90OzsKKwkJJHNlY2xvZ19yZWFzb249JnF1b3Q7SGFja2luZyBh dHRlbXB0OiBhZG1pbl9jb250ZW50LnBocCZxdW90OzsKKwkJZGVmaW5lICgmcXVvdDtST1NDTVNf U1lTVEVNJnF1b3Q7LCAmcXVvdDtIYWNraW5nIGF0dGVtcHQmcXVvdDspOworCQlpbmNsdWRlKCdz ZWN1cml0eWxvZy5waHAnKTsgLy8gb3BlbiBzZWN1cml0eSBsb2cKKwkJZGllKCZxdW90O0hhY2tp bmcgYXR0ZW1wdCZxdW90Oyk7CisJfQorCWlmICgkcnBtX3BhZ2UgIT0gJnF1b3Q7YWRtaW4mcXVv dDsgJmFtcDsmYW1wOyAkcnBtX3BhZ2UgIT0gJnF1b3Q7ZGV2JnF1b3Q7ICZhbXA7JmFtcDsgJHJw bV9wYWdlICE9ICZxdW90O3RlYW0mcXVvdDsgJmFtcDsmYW1wOyAkcnBtX3BhZ2UgIT0gJnF1b3Q7 dHJhbnMmcXVvdDspIHsKKwkJZGllKCZxdW90OyZxdW90Oyk7CisJfQorCWlmICgkcm9zY21zX2lu dGVybl91c3JncnBfYWRtaW4gPT0gdHJ1ZSB8fCAkcm9zY21zX2ludGVybl91c3JncnBfZGV2ID09 IHRydWUgfHwgJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX3RlYW0gPT0gdHJ1ZSB8fCAkcm9zY21zX2lu dGVybl91c3JncnBfdHJhbnMgPT0gdHJ1ZSkgeworCis/Jmd0OworIAorJmx0O2RpdiBjbGFzcz0m cXVvdDtjb250ZW50U21hbGwmcXVvdDsmZ3Q7ICZsdDtzcGFuIGNsYXNzPSZxdW90O2NvbnRlbnRT bWFsbFRpdGxlJnF1b3Q7Jmd0O0FkbWluIEludGVyZmFjZSAtIENvbnRlbnQmbHQ7L3NwYW4mZ3Q7 IAorICZuYnNwOyZsdDt1bCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0O2xpJmd0OyZsdDtzdHJvbmcm Z3Q7Q29udGVudCZsdDsvc3Ryb25nJmd0OyZsdDsvbGkmZ3Q7CisgJm5ic3A7Jmx0Oy91bCZndDsK KyAmbmJzcDsmbHQ7cCZndDtBY3Rpb246ICZsdDs/cGhwIGlmICgkcm9zY21zX2ludGVybl91c3Jn cnBfYWRtaW4gPT0gdHJ1ZSAmYW1wOyZhbXA7ICRycG1fcGFnZSA9PSAmcXVvdDthZG1pbiZxdW90 OykgeyA/Jmd0OyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jmx0Oz9waHAgZWNobyAkcnBtX3BhZ2U7 ID8mZ3Q7JmFtcDthbXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPWVkaXQmYW1wO2FtcDtvcHQ9 aW5zZXJ0JmFtcDthbXA7Jmx0Oz9waHAgZWNobyAnc29ydD0nLiRycG1fc29ydC4nJmFtcDthbXA7 ZmlsdD0nLiRycG1fZmlsdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkIDsgPyZndDsm YW1wO2FtcDtkYl9pZD1uZXcmcXVvdDsmZ3Q7TmV3IAorICZuYnNwOyAmbmJzcDtDb250ZW50Jmx0 Oy9hJmd0OyB8ICZsdDs/cGhwIH0gPyZndDsmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPSZsdDs/cGhw IGVjaG8gJHJwbV9wYWdlOyA/Jmd0OyZhbXA7c2VjPWNvbnRlbnQmYW1wO3NlYzI9dmlldyZxdW90 OyZndDtyZXNldCBmaWx0ZXJzICZhbXA7IAorICZuYnNwOyAmbmJzcDtzb3J0Jmx0Oy9hJmd0OyZs dDsvcCZndDsKKyAmbmJzcDsgJm5ic3A7CisgJm5ic3A7Jmx0Oz9waHAKKwlpZigkcm9zY21zX2lu dGVybl9hY2NvdW50X2xldmVsJmd0OzUwKSB7CisJCSRycG1fY29udGVudF9hY3RpdmU9JnF1b3Q7 JnF1b3Q7OworCQkkcnBtX2NvbnRlbnRfYWN0aXZlX3NldD0mcXVvdDsmcXVvdDs7CisJCWlmKGFy cmF5X2tleV9leGlzdHMoJnF1b3Q7Y29udGVudF9hY3RpdmUmcXVvdDssICRfR0VUKSkgJHJwbV9j b250ZW50X2FjdGl2ZT0kX0dFVFsmcXVvdDtjb250ZW50X2FjdGl2ZSZxdW90O107CisJCWlmKGFy cmF5X2tleV9leGlzdHMoJnF1b3Q7Y29udGVudF9hY3RpdmVfc2V0JnF1b3Q7LCAkX0dFVCkpICRy cG1fY29udGVudF9hY3RpdmVfc2V0PSRfR0VUWyZxdW90O2NvbnRlbnRfYWN0aXZlX3NldCZxdW90 O107CisJCisJCWlmICgkcnBtX2NvbnRlbnRfYWN0aXZlICE9ICZxdW90OyZxdW90OyBBTkQgJHJw bV9jb250ZW50X2FjdGl2ZV9zZXQgIT0gJnF1b3Q7JnF1b3Q7KSB7CisJCQkkY29udGVudF9wb3N0 Yz0mcXVvdDtVUERBVEUgYGNvbnRlbnRgIFNFVCBgY29udGVudF9hY3RpdmVgID0gJyRycG1fY29u dGVudF9hY3RpdmUnIFdIRVJFIGBjb250ZW50X2lkYCA9ICckcnBtX2NvbnRlbnRfYWN0aXZlX3Nl dCcgTElNSVQgMSA7JnF1b3Q7OworCQkJJGNvbnRlbnRfcG9zdF9saXN0Yz1teXNxbF9xdWVyeSgk Y29udGVudF9wb3N0Yyk7CisJCX0KKwl9CisKKworCWlmICgkcnBtX2xhbmdfaWQgPT0gJnF1b3Q7 JnF1b3Q7KSB7CisJCWlmICgoJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX3RyYW5zID09IHRydWUgfHwg JHJvc2Ntc19pbnRlcm5fdXNyZ3JwX3RlYW0gPT0gdHJ1ZSkgJmFtcDsmYW1wOyAoJHJwbV9wYWdl ID09ICZxdW90O3RyYW5zJnF1b3Q7IHx8ICRycG1fcGFnZSA9PSAmcXVvdDt0ZWFtJnF1b3Q7KSkg eworCQkJJHJwbV9sYW5nX2lkPSZxdW90O2VuJnF1b3Q7OworCQl9CisJCWVsc2UgeworCQkJJHJw bV9sYW5nX2lkPSZxdW90O2FsbCZxdW90OzsKKwkJfQorCX0KKwllY2hvICcmbHQ7cCZndDtMYW5n dWFnZTogJzsKKwlpZiAoJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX2RldiA9PSB0cnVlIHx8ICRyb3Nj bXNfaW50ZXJuX3VzcmdycF9hZG1pbiA9PSB0cnVlKSB7CisJCWlmICgkcnBtX2xhbmdfaWQgPT0g JnF1b3Q7YWxsJnF1b3Q7KSB7CQorCQkJZWNobyAnJmx0O2ImZ3Q7QWxsJmx0Oy9iJmd0Oyc7CisJ CQkkcm9zX2Ntc19pbnRlcm5fY29udGVudF9sYW5nID0gJnF1b3Q7JnF1b3Q7OworCQl9CisJCWVs c2UgeworCQkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0nLiRycG1fcGFnZS4nJmFtcDth bXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PScuJHJwbV9zb3J0 LicmYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFt cDthbXA7bGFuZ2lkPWFsbCZxdW90OyZndDtBbGwmbHQ7L2EmZ3Q7JzsKKwkJfQorCQllY2hvICcg fCAnOworCQlpZiAoJHJwbV9sYW5nX2lkID09ICZxdW90O25vbGFuZyZxdW90OykgewkKKwkJCWVj aG8gJyZsdDtiJmd0O0ludGVybmF0aW9uYWwmbHQ7L2ImZ3Q7JzsKKwkJCSRyb3NfY21zX2ludGVy bl9jb250ZW50X2xhbmcgPSAmcXVvdDtBTkQgY29udGVudF9sYW5nID0gJ2FsbCcmcXVvdDs7CisJ CX0KKwkJZWxzZSB7CisJCQllY2hvICcmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPScuJHJwbV9wYWdl LicmYW1wO2FtcDtzZWM9Y29udGVudCZhbXA7YW1wO3NlYzI9dmlldyZhbXA7YW1wO3NvcnQ9Jy4k cnBtX3NvcnQuJyZhbXA7YW1wO2ZpbHQ9Jy4kcnBtX2ZpbHQuJyZhbXA7YW1wO29wdD0nLiRycG1f b3B0LicmYW1wO2FtcDtsYW5naWQ9bm9sYW5nJnF1b3Q7Jmd0O0ludGVybmF0aW9uYWwmbHQ7L2Em Z3Q7JzsKKwkJfQorCX0KKwllbHNlIHsKKwkJZWNobyAnLSZndDsnOworCX0KKwkvLyBMYW5ndWFn ZXMKKwkkc3FsX2xhbmc9JnF1b3Q7U0VMRUNUICogCisJCQkJRlJPTSBsYW5ndWFnZXMKKwkJCQlX SEVSRSBsYW5nX2xldmVsICE9ICcwJworCQkJCU9SREVSIEJZICdsYW5nX2xldmVsJyBERVNDJnF1 b3Q7OworCSRzcWxfcXVlcnlfbGFuZz1teXNxbF9xdWVyeSgkc3FsX2xhbmcpOworCXdoaWxlKCRt eXJvd19sYW5nPW15c3FsX2ZldGNoX3Jvdygkc3FsX3F1ZXJ5X2xhbmcpKSB7CisJCSRyb3NjbXNf c2VsX2xhbmcgPSAkbXlyb3dfbGFuZ1swXTsKKwkJZWNobyAnIHwgJzsKKwkJaWYgKCRycG1fbGFu Z19pZCA9PSAkcm9zY21zX3NlbF9sYW5nKSB7CQorCQkJZWNobyAnJmx0O2ImZ3Q7Jy4kbXlyb3df bGFuZ1sxXS4nJmx0Oy9iJmd0Oyc7CisJCQkkcm9zX2Ntc19pbnRlcm5fY29udGVudF9sYW5nID0g JnF1b3Q7QU5EIGNvbnRlbnRfbGFuZyA9ICcmcXVvdDsuJHJvc2Ntc19zZWxfbGFuZy4mcXVvdDsn JnF1b3Q7OworCQl9CisJCWVsc2UgeworCQkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0n LiRycG1fcGFnZS4nJmFtcDthbXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2Ft cDtzb3J0PScuJHJwbV9zb3J0LicmYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtv cHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJvc2Ntc19zZWxfbGFuZy4nJnF1b3Q7 Jmd0OycuJG15cm93X2xhbmdbMV0uJyZsdDsvYSZndDsnOworCQl9CisJfQorCisKKwlpZiAoJHJw bV9maWx0ID09ICZxdW90OyZxdW90OykgeworCQlpZiAoJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX2Fk bWluID09IHRydWUpIHsKKwkJCSRycG1fZmlsdD0mcXVvdDthY3RpdmUmcXVvdDs7CisJCX0KKwkJ aWYgKCRyb3NjbXNfaW50ZXJuX3VzcmdycF9kZXYgPT0gdHJ1ZSAmYW1wOyZhbXA7ICRycG1fcGFn ZSA9PSAmcXVvdDtkZXYmcXVvdDspIHsKKwkJCSRycG1fZmlsdD0mcXVvdDthbnZjJnF1b3Q7Owor CQl9CisJCWlmICgoJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX3RlYW0gPT0gdHJ1ZSAmYW1wOyZhbXA7 ICRycG1fcGFnZSA9PSAmcXVvdDt0ZWFtJnF1b3Q7KSB8fCAoJHJvc2Ntc19pbnRlcm5fdXNyZ3Jw X3RyYW5zID09IHRydWUgJmFtcDsmYW1wOyAkcnBtX3BhZ2UgPT0gJnF1b3Q7dHJhbnMmcXVvdDsp KSB7CisJCQkkcnBtX2ZpbHQ9JnF1b3Q7YW52YyZxdW90OzsKKwkJfQorCX0KKwllY2hvICcmbHQ7 cCZndDtGaWx0ZXI6ICc7CisJaWYgKCgkcm9zY21zX2ludGVybl91c3JncnBfYWRtaW4gPT0gdHJ1 ZSAmYW1wOyZhbXA7ICRycG1fcGFnZSA9PSAmcXVvdDthZG1pbiZxdW90OykgfHwgKCRyb3NjbXNf aW50ZXJuX3VzcmdycF9kZXYgPT0gdHJ1ZSAmYW1wOyZhbXA7ICRycG1fcGFnZSA9PSAmcXVvdDtk ZXYmcXVvdDspKSB7CisJCWlmICgkcnBtX2ZpbHQgPT0gJnF1b3Q7YWN0aXZlJnF1b3Q7KSB7CQor CQkJZWNobyAnJmx0O2ImZ3Q7YWN0aXZlIGNvbnRlbnQmbHQ7L2ImZ3Q7JzsKKwkJCSRyb3NfY21z X2ludGVybl9jb250ZW50X2ZpbHQgPSAmcXVvdDtXSEVSRSBjb250ZW50X2FjdGl2ZSA9ICcxJyZx dW90OzsKKwkJfQorCQllbHNlIHsKKwkJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jy4k cnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12aWV3JmFtcDthbXA7 c29ydD0nLiRycG1fc29ydC4nJmFtcDthbXA7ZmlsdD1hY3RpdmUmYW1wO2FtcDtsYW5naWQ9Jy4k cnBtX2xhbmdfaWQuJyZxdW90OyZndDthY3RpdmUgY29udGVudCZsdDsvYSZndDsnOworCQl9CisJ CWVjaG8gJyB8ICc7CisJCWlmICgkcnBtX2ZpbHQgPT0gJnF1b3Q7YWxsJnF1b3Q7KSB7CQorCQkJ ZWNobyAnJmx0O2ImZ3Q7YWxsIGNvbnRlbnQmbHQ7L2ImZ3Q7JzsKKwkJCSRyb3NfY21zX2ludGVy bl9jb250ZW50X2ZpbHQgPSAmcXVvdDtXSEVSRSBgY29udGVudF9uYW1lYCAhPSAnJyZxdW90OzsK KwkJfQorCQllbHNlIHsKKwkJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jy4kcnBtX3Bh Z2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12aWV3JmFtcDthbXA7c29ydD0n LiRycG1fc29ydC4nJmFtcDthbXA7ZmlsdD1hbGwmYW1wO2FtcDtsYW5naWQ9Jy4kcnBtX2xhbmdf aWQuJyZxdW90OyZndDthbGwgY29udGVudCZsdDsvYSZndDsnOworCQl9CisJCWVjaG8gJyB8ICc7 CisJfQorCWlmICgkcnBtX2ZpbHQgPT0gJnF1b3Q7YW52YyZxdW90OykgewkKKwkJZWNobyAnJmx0 O2ImZ3Q7YWN0aXZlIGFuZCB2aXNpYmxlIGNvbnRlbnQmbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNf aW50ZXJuX2NvbnRlbnRfZmlsdCA9ICZxdW90O1dIRVJFIGNvbnRlbnRfYWN0aXZlID0gJzEnIEFO RCBjb250ZW50X3Zpc2libGUgPSAnMScmcXVvdDs7CisJfQorCWVsc2UgeworCQllY2hvICcmbHQ7 YSBocmVmPSZxdW90Oz9wYWdlPScuJHJwbV9wYWdlLicmYW1wO2FtcDtzZWM9Y29udGVudCZhbXA7 YW1wO3NlYzI9dmlldyZhbXA7YW1wO3NvcnQ9Jy4kcnBtX3NvcnQuJyZhbXA7YW1wO2ZpbHQ9YW52 YyZhbXA7YW1wO2xhbmdpZD0nLiRycG1fbGFuZ19pZC4nJnF1b3Q7Jmd0O2FjdGl2ZSBhbmQgdmlz aWJsZSBjb250ZW50Jmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7CisJaWYgKCRycG1fZmls dCA9PSAmcXVvdDt1c2VyJnF1b3Q7KSB7CQorCQllY2hvICcmbHQ7YiZndDtjdXJyZW50IHVzZXIm bHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNfaW50ZXJuX2NvbnRlbnRfZmlsdCA9ICZxdW90O1dIRVJF IGNvbnRlbnRfdXNybmFtZV9pZCA9ICcmcXVvdDsuJHJvc2Ntc19pbnRlcm5fYWNjb3VudF9pZC4m cXVvdDsnJnF1b3Q7OworCX0KKwllbHNlIHsKKwkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFn ZT0nLiRycG1fcGFnZS4nJmFtcDthbXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZpZXcmYW1w O2FtcDtzb3J0PScuJHJwbV9zb3J0LicmYW1wO2FtcDtmaWx0PXVzZXImYW1wO2FtcDtsYW5naWQ9 Jy4kcnBtX2xhbmdfaWQuJyZxdW90OyZndDtjdXJyZW50IHVzZXImbHQ7L2EmZ3Q7JzsKKwl9CisJ aWYgKCRycG1fZmlsdCA9PSAmcXVvdDtoaXN0b3J5JnF1b3Q7KSB7CQorCQllY2hvICcgfCAmbHQ7 YiZndDtoaXN0b3J5Jmx0Oy9iJmd0Oyc7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X2ZpbHQg PSAmcXVvdDtXSEVSRSBjb250ZW50X25hbWUgPSAnJnF1b3Q7LiRycG1fb3B0LiZxdW90OycmcXVv dDs7CisJfQorCWVjaG8gJyZsdDsvcCZndDsnOworCisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDsm cXVvdDspIHsKKwkJJHJwbV9zb3J0PSZxdW90O2lkJnF1b3Q7OworCX0KKwllY2hvICcmbHQ7cCZn dDtTb3J0ZWQgYnk6ICc7CisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDtpZCZxdW90OykgewkKKwkJ ZWNobyAnJmx0O2ImZ3Q7Y29udGVudCBpZCZsdDsvYiZndDsnOworCQkkcm9zX2Ntc19pbnRlcm5f Y29udGVudF9zb3J0Ynk9JnF1b3Q7Y29udGVudF9uYW1lJnF1b3Q7OworCQkkcm9zX2Ntc19pbnRl cm5fY29udGVudF9zb3J0PSZxdW90O0FTQyZxdW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZs dDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jy4kcnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFt cDthbXA7c2VjMj12aWV3JmFtcDthbXA7c29ydD1pZCZhbXA7YW1wO2ZpbHQ9Jy4kcnBtX2ZpbHQu JyZhbXA7YW1wO29wdD0nLiRycG1fb3B0LicmYW1wO2FtcDtsYW5naWQ9Jy4kcnBtX2xhbmdfaWQu JyZxdW90OyZndDtjb250ZW50IGlkJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7CisJaWYg KCRycG1fc29ydCA9PSAmcXVvdDtkYXRlJnF1b3Q7KSB7CQorCQllY2hvICcmbHQ7YiZndDtkYXRl Jmx0Oy9iJmd0Oyc7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnRieT0mcXVvdDtjb250 ZW50X2RhdGUmcXVvdDs7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnQ9JnF1b3Q7REVT QyZxdW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jy4k cnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12aWV3JmFtcDthbXA7 c29ydD1kYXRlJmFtcDthbXA7ZmlsdD0nLiRycG1fZmlsdC4nJmFtcDthbXA7b3B0PScuJHJwbV9v cHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1fbGFuZ19pZC4nJnF1b3Q7Jmd0O2RhdGUmbHQ7L2Em Z3Q7JzsKKwl9CisJZWNobyAnIHwgJzsKKwlpZiAoJHJwbV9zb3J0ID09ICZxdW90O3VzZXImcXVv dDspIHsJCisJCWVjaG8gJyZsdDtiJmd0O3VzZXImbHQ7L2ImZ3Q7JzsKKwkJJHJvc19jbXNfaW50 ZXJuX2NvbnRlbnRfc29ydGJ5PSZxdW90O2NvbnRlbnRfdXNybmFtZV9pZCZxdW90OzsKKwkJJHJv c19jbXNfaW50ZXJuX2NvbnRlbnRfc29ydD0mcXVvdDtBU0MmcXVvdDs7CisJfQorCWVsc2Ugewor CQllY2hvICcmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPScuJHJwbV9wYWdlLicmYW1wO2FtcDtzZWM9 Y29udGVudCZhbXA7YW1wO3NlYzI9dmlldyZhbXA7YW1wO3NvcnQ9dXNlciZhbXA7YW1wO2ZpbHQ9 Jy4kcnBtX2ZpbHQuJyZhbXA7YW1wO29wdD0nLiRycG1fb3B0LicmYW1wO2FtcDtsYW5naWQ9Jy4k cnBtX2xhbmdfaWQuJyZxdW90OyZndDt1c2VyJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7 CisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDthY3RpdmUmcXVvdDspIHsJCisJCWVjaG8gJyZsdDti Jmd0O2FjdGl2ZSZsdDsvYiZndDsnOworCQkkcm9zX2Ntc19pbnRlcm5fY29udGVudF9zb3J0Ynk9 JnF1b3Q7Y29udGVudF9hY3RpdmUmcXVvdDs7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3Nv cnQ9JnF1b3Q7REVTQyZxdW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1 b3Q7P3BhZ2U9Jy4kcnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12 aWV3JmFtcDthbXA7c29ydD1hY3RpdmUmYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2Ft cDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmcXVvdDsm Z3Q7YWN0aXZlJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7CisJaWYgKCRycG1fc29ydCA9 PSAmcXVvdDt2aXNpYmxlJnF1b3Q7KSB7CQorCQllY2hvICcmbHQ7YiZndDt2aXNpYmxlJmx0Oy9i Jmd0Oyc7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnRieT0mcXVvdDtjb250ZW50X3Zp c2libGUmcXVvdDs7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnQ9JnF1b3Q7REVTQyZx dW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1b3Q7P3BhZ2U9Jy4kcnBt X3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12aWV3JmFtcDthbXA7c29y dD12aXNpYmxlJmFtcDthbXA7ZmlsdD0nLiRycG1fZmlsdC4nJmFtcDthbXA7b3B0PScuJHJwbV9v cHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1fbGFuZ19pZC4nJnF1b3Q7Jmd0O3Zpc2libGUmbHQ7 L2EmZ3Q7JzsKKwl9CisJZWNobyAnIHwgJzsKKwlpZiAoJHJwbV9zb3J0ID09ICZxdW90O3ZlcnNp b24mcXVvdDspIHsJCisJCWVjaG8gJyZsdDtiJmd0O3ZlcnNpb24mbHQ7L2ImZ3Q7JzsKKwkJJHJv c19jbXNfaW50ZXJuX2NvbnRlbnRfc29ydGJ5PSZxdW90O2NvbnRlbnRfdmVyc2lvbiZxdW90OzsK KwkJJHJvc19jbXNfaW50ZXJuX2NvbnRlbnRfc29ydD0mcXVvdDtERVNDJnF1b3Q7OworCX0KKwll bHNlIHsKKwkJZWNobyAnJmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0nLiRycG1fcGFnZS4nJmFtcDth bXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PXZlcnNpb24mYW1w O2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7 bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmcXVvdDsmZ3Q7dmVyc2lvbiZsdDsvYSZndDsnOworCX0K KwllY2hvICcgfCAnOworCWlmICgkcnBtX3NvcnQgPT0gJnF1b3Q7bGFuZ3VhZ2UmcXVvdDspIHsJ CisJCWVjaG8gJyZsdDtiJmd0O2xhbmd1YWdlJmx0Oy9iJmd0Oyc7CisJCSRyb3NfY21zX2ludGVy bl9jb250ZW50X3NvcnRieT0mcXVvdDtjb250ZW50X2xhbmcmcXVvdDs7CisJCSRyb3NfY21zX2lu dGVybl9jb250ZW50X3NvcnQ9JnF1b3Q7QVNDJnF1b3Q7OworCX0KKwllbHNlIHsKKwkJZWNobyAn Jmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0nLiRycG1fcGFnZS4nJmFtcDthbXA7c2VjPWNvbnRlbnQm YW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PWxhbmd1YWdlJmFtcDthbXA7ZmlsdD0nLiRy cG1fZmlsdC4nJmFtcDthbXA7b3B0PScuJHJwbV9vcHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1f bGFuZ19pZC4nJnF1b3Q7Jmd0O2xhbmd1YWdlJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyB8ICc7 CisJaWYgKCRycG1fc29ydCA9PSAmcXVvdDtlZGl0b3ImcXVvdDspIHsJCisJCWVjaG8gJyZsdDti Jmd0O2VkaXRvciZsdDsvYiZndDsnOworCQkkcm9zX2Ntc19pbnRlcm5fY29udGVudF9zb3J0Ynk9 JnF1b3Q7Y29udGVudF9lZGl0b3ImcXVvdDs7CisJCSRyb3NfY21zX2ludGVybl9jb250ZW50X3Nv cnQ9JnF1b3Q7REVTQyZxdW90OzsKKwl9CisJZWxzZSB7CisJCWVjaG8gJyZsdDthIGhyZWY9JnF1 b3Q7P3BhZ2U9Jy4kcnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj12 aWV3JmFtcDthbXA7c29ydD1lZGl0b3ImYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2Ft cDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmcXVvdDsm Z3Q7ZWRpdG9yJmx0Oy9hJmd0Oyc7CisJfQorCWVjaG8gJyZsdDsvcCZndDsnOworCis/Jmd0Owor ICZuYnNwOyZsdDt0YWJsZSB3aWR0aD0mcXVvdDsxMDAlJnF1b3Q7IGJvcmRlcj0mcXVvdDswJnF1 b3Q7IGNlbGxwYWRkaW5nPSZxdW90OzEmcXVvdDsgY2VsbHNwYWNpbmc9JnF1b3Q7MSZxdW90OyZn dDsKKyAmbmJzcDsgJm5ic3A7Jmx0O3RyIGJnY29sb3I9JnF1b3Q7IzU5ODRDMyZxdW90OyZndDsg CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1b3Q7OSUmcXVvdDsmZ3Q7ICZs dDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90OyNG RkZGRkYmcXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7 Jmd0OyZsdDtzdHJvbmcmZ3Q7QWN0aW9uJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9mb250Jmd0OyZsdDsv ZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1 b3Q7OCUmcXVvdDsgY29sc3Bhbj0mcXVvdDszJnF1b3Q7IGJnY29sb3I9JnF1b3Q7IzU5ODRDMyZx dW90OyZndDsgJmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2ZvbnQgY29s b3I9JnF1b3Q7I0ZGRkZGRiZxdW90OyBmYWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMt c2VyaWYmcXVvdDsmZ3Q7Jmx0O3N0cm9uZyZndDtJbmZvJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9mb250 Jmd0OyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQg d2lkdGg9JnF1b3Q7MTMlJnF1b3Q7IGJnY29sb3I9JnF1b3Q7IzU5ODRDMyZxdW90OyZndDsgJmx0 O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7I0ZG RkZGRiZxdW90OyBmYWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsm Z3Q7Jmx0O3N0cm9uZyZndDtDb250ZW50IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDtJRCZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0 OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90OzEzJSZxdW90OyZndDsg Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7 I0ZGRkZGRiZxdW90OyBmYWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVv dDsmZ3Q7Jmx0O3N0cm9uZyZndDtMYW5ndWFnZSZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsm bHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRo PSZxdW90OzI2JSZxdW90OyBiZ2NvbG9yPSZxdW90OyM1OTg0QzMmcXVvdDsmZ3Q7ICZsdDtkaXYg YWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90OyNGRkZGRkYm cXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZs dDtzdHJvbmcmZ3Q7Q29udGVudCZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7L2RpdiZn dDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90Ozcl JnF1b3Q7Jmd0OyAmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBj b2xvcj0mcXVvdDsjRkZGRkZGJnF1b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZiZxdW90OyZndDsmbHQ7c3Ryb25nJmd0O1Jldi4mbHQ7L3N0cm9uZyZndDsmbHQ7L2Zv bnQmZ3Q7Jmx0Oy9kaXYmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2RpdiBh bGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJz cDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB3aWR0aD0mcXVvdDsxMyUmcXVvdDsmZ3Q7ICZsdDtkaXYg YWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90OyNGRkZGRkYm cXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZs dDtzdHJvbmcmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDtEYXRlJmx0 Oy9zdHJvbmcmZ3Q7Jmx0Oy9mb250Jmd0OyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7 ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1b3Q7MTAlJnF1b3Q7Jmd0OyAmbHQ7ZGl2IGFs aWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBjb2xvcj0mcXVvdDsjRkZGRkZGJnF1 b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiZxdW90OyZndDsmbHQ7 c3Ryb25nJmd0O1VzZXImbHQ7L3N0cm9uZyZndDsmbHQ7L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0 Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0Oy90ciZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0Oz9w aHAKKworCWlmKCRyb3NjbXNfaW50ZXJuX3VzcmdycF9zYWRtaW4gPT0gdHJ1ZSkgeworCQkkcXVl cnlfY29udGVudCA9IG15c3FsX3F1ZXJ5KCZxdW90O1NFTEVDVCAqIAorCQkJCUZST00gY29udGVu dAorCQkJCSRyb3NfY21zX2ludGVybl9jb250ZW50X2ZpbHQgJHJvc19jbXNfaW50ZXJuX2NvbnRl bnRfbGFuZworCQkJCU9SREVSIEJZICckcm9zX2Ntc19pbnRlcm5fY29udGVudF9zb3J0YnknICRy b3NfY21zX2ludGVybl9jb250ZW50X3NvcnQmcXVvdDspIDsKKwkJLyokcXVlcnlfY29udGVudCA9 IG15c3FsX3F1ZXJ5KCZxdW90O1NFTEVDVCAqIAorCQkJCUZST00gY29udGVudAorCQkJCSRyb3Nf Y21zX2ludGVybl9jb250ZW50X2ZpbHQgJHJvc19jbXNfaW50ZXJuX2NvbnRlbnRfbGFuZworCQkJ CU9SREVSIEJZICckcm9zX2Ntc19pbnRlcm5fY29udGVudF9zb3J0YnknICRyb3NfY21zX2ludGVy bl9jb250ZW50X3NvcnQmcXVvdDspIDsqLworCX0KKwllbHNlaWYgKCRyb3NjbXNfaW50ZXJuX3Vz cmdycF9hZG1pbiA9PSB0cnVlKSB7CisJCSRxdWVyeV9jb250ZW50ID0gbXlzcWxfcXVlcnkoJnF1 b3Q7U0VMRUNUICogCisJCQkJRlJPTSBjb250ZW50CisJCQkJJHJvc19jbXNfaW50ZXJuX2NvbnRl bnRfZmlsdCBBTkQgY29udGVudF92aXNpYmxlICE9IDAgJHJvc19jbXNfaW50ZXJuX2NvbnRlbnRf bGFuZworCQkJCU9SREVSIEJZICckcm9zX2Ntc19pbnRlcm5fY29udGVudF9zb3J0YnknICRyb3Nf Y21zX2ludGVybl9jb250ZW50X3NvcnQmcXVvdDspIDsKKwl9CisJZWxzZWlmICgkcm9zY21zX2lu dGVybl91c3JncnBfZGV2ID09IHRydWUpIHsKKwkJJHF1ZXJ5X2NvbnRlbnQgPSBteXNxbF9xdWVy eSgmcXVvdDtTRUxFQ1QgKiAKKwkJCQlGUk9NIGNvbnRlbnQKKwkJCQkkcm9zX2Ntc19pbnRlcm5f Y29udGVudF9maWx0IEFORCBjb250ZW50X3Zpc2libGUgIT0gMCAkcm9zX2Ntc19pbnRlcm5fY29u dGVudF9sYW5nCisJCQkJT1JERVIgQlkgJyRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnRieScg JHJvc19jbXNfaW50ZXJuX2NvbnRlbnRfc29ydCZxdW90OykgOworCX0KKwllbHNlaWYgKCRyb3Nj bXNfaW50ZXJuX3VzcmdycF90ZWFtID09IHRydWUgfHwgJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX3Ry YW5zID09IHRydWUpIHsKKwkJJHF1ZXJ5X2NvbnRlbnQgPSBteXNxbF9xdWVyeSgmcXVvdDtTRUxF Q1QgKiAKKwkJCQlGUk9NIGNvbnRlbnQKKwkJCQkkcm9zX2Ntc19pbnRlcm5fY29udGVudF9maWx0 IEFORCBjb250ZW50X3Zpc2libGUgIT0gMCAkcm9zX2Ntc19pbnRlcm5fY29udGVudF9sYW5nCisJ CQkJT1JERVIgQlkgJyRyb3NfY21zX2ludGVybl9jb250ZW50X3NvcnRieScgJHJvc19jbXNfaW50 ZXJuX2NvbnRlbnRfc29ydCZxdW90OykgOworCX0KKwllbHNlIHsKKwkJZGllKCZxdW90OyZxdW90 Oyk7CisJfQorCisJJGZhcmJlMT0mcXVvdDsjRTJFMkUyJnF1b3Q7OworCSRmYXJiZTI9JnF1b3Q7 I0VFRUVFRSZxdW90OzsKKwkkemFlaGxlcj0mcXVvdDswJnF1b3Q7OworCS8vJGZhcmJlPSZxdW90 OyNDQ0NDQyZxdW90OzsKKwkKKwl3aGlsZSgkcmVzdWx0X2NvbnRlbnQgPSBteXNxbF9mZXRjaF9h cnJheSgkcXVlcnlfY29udGVudCkpIHsgLy8gY29udGVudAorPyZndDsKKyAmbmJzcDsgJm5ic3A7 Jmx0O3RyJmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB3aWR0aD0mcXVvdDs5JSZx dW90OyB2YWxpZ249JnF1b3Q7bWlkZGxlJnF1b3Q7IGJnY29sb3I9JnF1b3Q7Jmx0Oz9waHAKKwkJ CQkJCQkJJHphZWhsZXIrKzsKKwkJCQkJCQkJaWYgKCR6YWVobGVyID09ICZxdW90OzEmcXVvdDsp IHsKKwkJCQkJCQkJCWVjaG8gJGZhcmJlMTsKKwkJCQkJCQkJCSRmYXJiZSA9ICRmYXJiZTE7CisJ CQkJCQkJCX0KKwkJCQkJCQkJZWxzZWlmICgkemFlaGxlciA9PSAmcXVvdDsyJnF1b3Q7KSB7CisJ CQkJCQkJCQkkemFlaGxlcj0mcXVvdDswJnF1b3Q7OworCQkJCQkJCQkJZWNobyAkZmFyYmUyOwor CQkJCQkJCQkJJGZhcmJlID0gJGZhcmJlMjsKKwkJCQkJCQkJfQorCQkJCQkJCSA/Jmd0OyZxdW90 OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2RpdiBhbGlnbj0mcXVvdDtj ZW50ZXImcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7 YSBuYW1lPSZxdW90OyZsdDs/cGhwIGVjaG8gJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2lkJ107 ID8mZ3Q7JnF1b3Q7Jmd0OyZsdDsvYSZndDsKKwkJICZuYnNwOyZsdDs/cGhwCisJCSAmbmJzcDtp ZiAoKCRyb3NjbXNfaW50ZXJuX3VzcmdycF90cmFucyA9PSB0cnVlIHx8ICRyb3NjbXNfaW50ZXJu X3VzcmdycF90ZWFtID09IHRydWUpICZhbXA7JmFtcDsgKCRycG1fcGFnZSA9PSAmcXVvdDt0cmFu cyZxdW90OyB8fCAkcnBtX3BhZ2UgPT0gJnF1b3Q7dGVhbSZxdW90OykgJmFtcDsmYW1wOyAkcnBt X2xhbmdfaWQgPT0gJnF1b3Q7ZW4mcXVvdDspIHsgPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7Jmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0mbHQ7P3BocCBlY2hvICRycG1f cGFnZTsgPyZndDsmYW1wO2FtcDtzZWM9Y29udGVudCZhbXA7YW1wO3NlYzI9ZWRpdCZhbXA7YW1w O29wdD10cmFuc2xhdGUmYW1wO2FtcDsmbHQ7P3BocCBlY2hvICdzb3J0PScuJHJwbV9zb3J0Licm YW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtsYW5naWQ9Jy4kcnBtX2xhbmdfaWQu JyZhbXA7YW1wO2RiX2lkPScuJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2lkJ107ID8mZ3Q7JnF1 b3Q7Jmd0OyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy90b29sLmdpZiZxdW90OyBhbHQ9JnF1b3Q7 VHJhbnNsYXRlJnF1b3Q7IHdpZHRoPSZxdW90OzE5JnF1b3Q7IGhlaWdodD0mcXVvdDsxOCZxdW90 OyBib3JkZXI9JnF1b3Q7MCZxdW90OyZndDsmbHQ7L2EmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocCB9IGVsc2UgeyA/Jmd0OworICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7YSBocmVmPSZxdW90Oz9wYWdlPSZsdDs/cGhwIGVjaG8g JHJwbV9wYWdlOyA/Jmd0OyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDthbXA7c2VjMj1lZGl0JmFt cDthbXA7Jmx0Oz9waHAgZWNobyAnc29ydD0nLiRycG1fc29ydC4nJmFtcDthbXA7ZmlsdD0nLiRy cG1fZmlsdC4nJmFtcDthbXA7bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmYW1wO2FtcDtkYl9pZD0n LiRyZXN1bHRfY29udGVudFsnY29udGVudF9pZCddOyA/Jmd0OyZxdW90OyZndDsmbHQ7aW1nIHNy Yz0mcXVvdDtpbWFnZXMvdmlldy5naWYmcXVvdDsgYWx0PSZxdW90O1ZpZXcmcXVvdDsgd2lkdGg9 JnF1b3Q7MTkmcXVvdDsgaGVpZ2h0PSZxdW90OzE4JnF1b3Q7IGJvcmRlcj0mcXVvdDswJnF1b3Q7 Jmd0OyZsdDsvYSZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/ cGhwCisJCSAmbmJzcDt9CisJCSAmbmJzcDtpZigkcm9zY21zX2ludGVybl91c3JncnBfc2FkbWlu ID09IHRydWUpIHsgPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0 O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyZndDsKKwkJCSZsdDshLS0K KwkJCQlmdW5jdGlvbiBEZWxldGVDb250ZW50KCkgeworCQkJCQl2YXIgY2hrID0gd2luZG93LmNv bmZpcm0oJnF1b3Q7RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbnRlbnQ/JnF1 b3Q7KTsKKwkJCQkJaWYgKGNoayA9PSB0cnVlKSB7CisJCQkJCQkvL3BhcmVudC5sb2NhdGlvbi5o cmVmID0gJnF1b3Q7P3BhZ2U9YWRtaW4mYW1wO2FtcDtzZWM9Y29udGVudCZhbXA7YW1wO3NlYzI9 ZGVsZXRlJmFtcDthbXA7ZGJfaWQ9Jmx0Oz9waHAgZWNobyAkcmVzdWx0X2NvbnRlbnRbJ2NvbnRl bnRfaWQnXTsgPyZndDsmcXVvdDs7CisJCQkJCQlhbGVydCgmcXVvdDtTb3JyeSEgVGhpcyBmZWF0 dXJlIGhhcyBiZWVuIGRpc2FibGVkLiBQbGVhc2UgYXNrIHRoZSBhZG1pbmlzdHJhdG9yIGlmIHlv dSByZWFsbHkgd2FudCB0byBkZWxldGUgYSBjb250ZW50LiZxdW90Oyk7CisJCQkJCX0KKwkJCQl9 CisJCQktLSZndDsKKwkJCSZsdDsvc2NyaXB0Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsmbHQ7YSBocmVmPSZxdW90O2phdmFzY3JpcHQ6RGVsZXRlQ29udGVudCgpJnF1 b3Q7Jmd0OyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy9kZWxldGUuZ2lmJnF1b3Q7IGFsdD0mcXVv dDtEZWxldGUmcXVvdDsgd2lkdGg9JnF1b3Q7MTkmcXVvdDsgaGVpZ2h0PSZxdW90OzE4JnF1b3Q7 IGJvcmRlcj0mcXVvdDswJnF1b3Q7Jmd0OyZsdDsvYSZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwIH0gPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7Jmx0O2EgaHJlZj0mcXVvdDsmbHQ7P3BocCBlY2hvICZxdW90Oz9wYWdlPSZx dW90Oy4kcnBtX3BhZ2UuJnF1b3Q7JmFtcDthbXA7c2VjPWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZp ZXcmYW1wO2FtcDtzb3J0PXZlcnNpb24mYW1wO2FtcDtmaWx0PWhpc3RvcnkmYW1wO2FtcDtvcHQ9 JnF1b3Q7LiRyZXN1bHRfY29udGVudFsnY29udGVudF9uYW1lJ10uJnF1b3Q7JmFtcDthbXA7bGFu Z2lkPSZxdW90Oy4kcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfbGFuZyddOyA/Jmd0OyZxdW90OyZn dDsmbHQ7aW1nIHNyYz0mcXVvdDtpbWFnZXMvaGlzdG9yeS5naWYmcXVvdDsgYWx0PSZxdW90O0Zp bHRlcjogaGlzdG9yeSZxdW90OyB3aWR0aD0mcXVvdDsxOSZxdW90OyBoZWlnaHQ9JnF1b3Q7MTgm cXVvdDsgYm9yZGVyPSZxdW90OzAmcXVvdDsmZ3Q7Jmx0Oy9hJmd0OyAKKyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5i c3A7Jmx0O3RkIHdpZHRoPSZxdW90OzMlJnF1b3Q7IHZhbGlnbj0mcXVvdDttaWRkbGUmcXVvdDsg Ymdjb2xvcj0mcXVvdDsmbHQ7P3BocCBlY2hvICRmYXJiZTsgPyZndDsmcXVvdDsmZ3Q7Jmx0O2Rp diBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsmbHQ7P3BocAorCQkgaWYoJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2FjdGl2 ZSddID09ICZxdW90OzEmcXVvdDspIHsgPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7Jmx0O2EgaHJlZj0mcXVvdDsmbHQ7P3BocCBpZigkcm9zY21zX2ludGVybl91c3Jn cnBfYWRtaW4gPT0gdHJ1ZSkgeyBlY2hvICc/cGFnZT0nLiRycG1fcGFnZS4nJmFtcDthbXA7c2Vj PWNvbnRlbnQmYW1wO2FtcDtzZWMyPXZpZXcmYW1wO2FtcDtzb3J0PScuJHJwbV9zb3J0LicmYW1w O2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2FtcDtvcHQ9Jy4kcnBtX29wdC4nJmFtcDthbXA7 bGFuZ2lkPScuJHJwbV9sYW5nX2lkLicmYW1wO2FtcDtjb250ZW50X2FjdGl2ZT0wJmFtcDthbXA7 Y29udGVudF9hY3RpdmVfc2V0PScuJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2lkJ10gOyB9IGVs c2UgeyBlY2hvICcjJzsgfSA/Jmd0OyZxdW90OyZndDsmbHQ7aW1nIHNyYz0mcXVvdDtpbWFnZXMv YWN0aXZlLmdpZiZxdW90OyBhbHQ9JnF1b3Q7YWN0aXZlJnF1b3Q7IHdpZHRoPSZxdW90OzE5JnF1 b3Q7IGhlaWdodD0mcXVvdDsxOCZxdW90OyBib3JkZXI9JnF1b3Q7MCZxdW90OyZndDsmbHQ7L2Em Z3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocAorCQkgfQor CQkgZWxzZSB7ID8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDth IGhyZWY9JnF1b3Q7Jmx0Oz9waHAgaWYoJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX2FkbWluID09IHRy dWUpIHsgZWNobyAnP3BhZ2U9Jy4kcnBtX3BhZ2UuJyZhbXA7YW1wO3NlYz1jb250ZW50JmFtcDth bXA7c2VjMj12aWV3JmFtcDthbXA7c29ydD0nLiRycG1fc29ydC4nJmFtcDthbXA7ZmlsdD0nLiRy cG1fZmlsdC4nJmFtcDthbXA7b3B0PScuJHJwbV9vcHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1f bGFuZ19pZC4nJmFtcDthbXA7Y29udGVudF9hY3RpdmU9MSZhbXA7YW1wO2NvbnRlbnRfYWN0aXZl X3NldD0nLiRyZXN1bHRfY29udGVudFsnY29udGVudF9pZCddIDsgfSBlbHNlIHsgZWNobyAnIyc7 IH0gPyZndDsmcXVvdDsmZ3Q7Jmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL25vdGFjdGl2ZS5naWYm cXVvdDsgYWx0PSZxdW90O05PVCBhY3RpdmUmcXVvdDsgd2lkdGg9JnF1b3Q7MTkmcXVvdDsgaGVp Z2h0PSZxdW90OzE4JnF1b3Q7IGJvcmRlcj0mcXVvdDswJnF1b3Q7Jmd0OyZsdDsvYSZndDsgCisg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwIH0gPyZndDsKKyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAm bmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90OzMlJnF1b3Q7IHZhbGlnbj0mcXVvdDttaWRk bGUmcXVvdDsgYmdjb2xvcj0mcXVvdDsmbHQ7P3BocCBlY2hvICRmYXJiZTsgPyZndDsmcXVvdDsm Z3Q7Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocAorCQkgaWYoJHJlc3VsdF9jb250ZW50Wydjb250 ZW50X3Zpc2libGUnXSA9PSAmcXVvdDsxJnF1b3Q7KSB7ID8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy92aXNpYmxlLmdpZiZx dW90OyBhbHQ9JnF1b3Q7dmlzaWJsZSZxdW90OyB3aWR0aD0mcXVvdDsxOSZxdW90OyBoZWlnaHQ9 JnF1b3Q7MTgmcXVvdDsgYm9yZGVyPSZxdW90OzAmcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocAorCQkgfQorCQkgZWxzZSB7ID8mZ3Q7CisgJm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy9u b3R2aXNpYmxlLmdpZiZxdW90OyBhbHQ9JnF1b3Q7Tk9UIHZpc2libGUmcXVvdDsgd2lkdGg9JnF1 b3Q7MTkmcXVvdDsgaGVpZ2h0PSZxdW90OzE4JnF1b3Q7IGJvcmRlcj0mcXVvdDswJnF1b3Q7Jmd0 OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oz9waHAgfSA/Jmd0Owor ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5i c3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1b3Q7MyUmcXVvdDsgdmFsaWduPSZxdW90 O21pZGRsZSZxdW90OyBiZ2NvbG9yPSZxdW90OyZsdDs/cGhwIGVjaG8gJGZhcmJlOyA/Jmd0OyZx dW90OyZndDsmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsgCisgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwIGlmKCRyb3NjbXNfaW50ZXJuX2FjY291 bnRfbGV2ZWwmbHQ7PTEwKSB7ID8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyZsdDtpbWcgc3JjPSZxdW90O2ltYWdlcy9sb2NrLmdpZiZxdW90OyBhbHQ9JnF1b3Q7TG9j a2VkJnF1b3Q7IHdpZHRoPSZxdW90OzE5JnF1b3Q7IGhlaWdodD0mcXVvdDsxOCZxdW90OyZndDsg CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwIH0gZWxzZSBpZiAo JHJlc3VsdF9jb250ZW50Wydjb250ZW50X2VkaXRvciddID09ICZxdW90O3JpY2h0ZXh0JnF1b3Q7 KSB7ID8mZ3Q7CisJCQkgJm5ic3A7Jmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL3JpY2h0ZXh0ZWRp dG9yLmdpZiZxdW90OyBhbHQ9JnF1b3Q7UmljaCBUZXh0IEVkaXRvciZxdW90OyB3aWR0aD0mcXVv dDsxOSZxdW90OyBoZWlnaHQ9JnF1b3Q7MTgmcXVvdDsmZ3Q7IAorCQkgJm5ic3A7Jmx0Oz9waHAg fSBlbHNlIGlmICgkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfZWRpdG9yJ10gPT0gJnF1b3Q7YmJj b2RlJnF1b3Q7KSB7ID8mZ3Q7CisJCQkgJm5ic3A7Jmx0O2ltZyBzcmM9JnF1b3Q7aW1hZ2VzL2Ji Y29kZS5naWYmcXVvdDsgYWx0PSZxdW90O2JiY29kZSBFZGl0b3ImcXVvdDsgd2lkdGg9JnF1b3Q7 MTkmcXVvdDsgaGVpZ2h0PSZxdW90OzE4JnF1b3Q7Jmd0OyAKKwkJICZuYnNwOyZsdDs/cGhwIH0g PyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0 OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90OzEzJSZxdW90OyB2YWxp Z249JnF1b3Q7bWlkZGxlJnF1b3Q7IGJnY29sb3I9JnF1b3Q7Jmx0Oz9waHAgZWNobyAkZmFyYmU7 ID8mZ3Q7JnF1b3Q7Jmd0OyAmbHQ7ZGl2IGFsaWduPSZxdW90O2xlZnQmcXVvdDsmZ3Q7Jmx0O2Zv bnQgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZsdDs/ cGhwIGVjaG8gJnF1b3Q7WyNjb250XyZsdDtiJmd0OyZxdW90Oy4kcmVzdWx0X2NvbnRlbnRbJ2Nv bnRlbnRfbmFtZSddLiZxdW90OyZsdDsvYiZndDtdJnF1b3Q7OyA/Jmd0OyZsdDsvZm9udCZndDsm bHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHdpZHRo PSZxdW90OzEzJSZxdW90OyB2YWxpZ249JnF1b3Q7bWlkZGxlJnF1b3Q7IGJnY29sb3I9JnF1b3Q7 Jmx0Oz9waHAgaWYgKCRyZXN1bHRfY29udGVudFsnY29udGVudF9sYW5nJ10gIT0gJnF1b3Q7JnF1 b3Q7KSB7IGVjaG8gJGZhcmJlOyB9IGVsc2UgeyBlY2hvICZxdW90OyNGRjAwMDAmcXVvdDs7IH0g PyZndDsmcXVvdDsmZ3Q7ICZsdDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyAKKyAm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2ZvbnQgZmFjZT0mcXVvdDtBcmlh bCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsmbHQ7P3BocCAKKwkJICZuYnNwOwkkY21zcm9zX2ludGVybl90ZW1wX2xh bmdfc2hvcnQ9JHJlc3VsdF9jb250ZW50Wydjb250ZW50X2xhbmcnXTsKKwkJCSRzcWxfbGFuZz0m cXVvdDtTRUxFQ1QgKiAKKwkJCQlGUk9NIGxhbmd1YWdlcworCQkJCVdIRVJFIGxhbmdfbGV2ZWwg IT0gJzAnIEFORCBsYW5nX2lkID0gJyRjbXNyb3NfaW50ZXJuX3RlbXBfbGFuZ19zaG9ydCcKKwkJ CQlPUkRFUiBCWSAnbGFuZ19sZXZlbCcgREVTQyZxdW90OzsKKwkJCSRzcWxfcXVlcnlfbGFuZz1t eXNxbF9xdWVyeSgkc3FsX2xhbmcpOworCQkJJG15cm93X2xhbmc9bXlzcWxfZmV0Y2hfcm93KCRz cWxfcXVlcnlfbGFuZyk7IC8vIExhbmd1YWdlcworCQkJaWYgKCRteXJvd19sYW5nWzFdICE9ICZx dW90OyZxdW90OykgeworCQkJCWVjaG8gJG15cm93X2xhbmdbMV07CisJCQl9CisJCQllbHNlIGlm ICgkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfbGFuZyddICE9ICZxdW90O2FsbCZxdW90Oykgewor CQkJCWVjaG8gJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2xhbmcnXTsKKwkJCX0KKwkJPyZndDsK KyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy9mb250Jmd0OyZsdDsvZGl2 Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1b3Q7 MjYlJnF1b3Q7IHZhbGlnbj0mcXVvdDttaWRkbGUmcXVvdDsgYmdjb2xvcj0mcXVvdDsmbHQ7P3Bo cCBlY2hvICRmYXJiZTsgPyZndDsmcXVvdDsgdGl0bGU9JnF1b3Q7Jmx0Oz9waHAgCisJCQlpZiAo JHJlc3VsdF9jb250ZW50Wydjb250ZW50X3Zpc2libGUnXSAhPSAxKSB7IGVjaG8gJnF1b3Q7Tk9U IHZpc2libGUhXG5cbiZxdW90OzsgfQorCQkJZWNobyBzdWJzdHIoaHRtbGVudGl0aWVzKCRyZXN1 bHRfY29udGVudFsnY29udGVudF90ZXh0J10sIEVOVF9RVU9URVMpLCAwLCAyMDApLiZxdW90Oy4u LiZxdW90OzsKKwkJPyZndDsmcXVvdDsmZ3Q7ICZsdDtwcmUmZ3Q7Jmx0O2ZvbnQgZmFjZT0mcXVv dDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZsdDs/cGhwIAorCQkJZWNo byBzdWJzdHIoaHRtbGVudGl0aWVzKCRyZXN1bHRfY29udGVudFsnY29udGVudF90ZXh0J10sIEVO VF9RVU9URVMpLCAwLCA0MCkuJnF1b3Q7Li4uJnF1b3Q7IDsKKwkJPyZndDsmbHQ7L2ZvbnQmZ3Q7 Jmx0Oy9wcmUmZ3Q7ICZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lk dGg9JnF1b3Q7NyUmcXVvdDsgdmFsaWduPSZxdW90O21pZGRsZSZxdW90OyBiZ2NvbG9yPSZxdW90 OyZsdDs/cGhwIGVjaG8gJGZhcmJlOyA/Jmd0OyZxdW90OyZndDsgJmx0O2RpdiBhbGlnbj0mcXVv dDtyaWdodCZxdW90OyZndDsmbHQ7Zm9udCBmYWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNh bnMtc2VyaWYmcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsm bHQ7P3BocCAKKwkJCWVjaG8gJHJlc3VsdF9jb250ZW50Wydjb250ZW50X3ZlcnNpb24nXTsKKwkJ PyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy9mb250Jmd0OyZs dDsvZGl2Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtkaXYgYWxpZ249JnF1 b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwg c2Fucy1zZXJpZiZxdW90OyZndDsgJmx0Oy9mb250Jmd0OyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7 CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgd2lkdGg9JnF1b3Q7MTMlJnF1b3Q7IHZhbGln bj0mcXVvdDttaWRkbGUmcXVvdDsgYmdjb2xvcj0mcXVvdDsmbHQ7P3BocCBlY2hvICRmYXJiZTsg PyZndDsmcXVvdDsmZ3Q7ICZsdDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtm b250IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiZxdW90OyZndDsgCisg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwIAorCQkJZWNobyAkcmVz dWx0X2NvbnRlbnRbJ2NvbnRlbnRfZGF0ZSddLiZxdW90OyAmcXVvdDsuJHJlc3VsdF9jb250ZW50 Wydjb250ZW50X3RpbWUnXTs7CisJCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyZsdDsvZm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJz cDsgJm5ic3A7Jmx0O3RkIHdpZHRoPSZxdW90OzEwJSZxdW90OyB2YWxpZ249JnF1b3Q7bWlkZGxl JnF1b3Q7IGJnY29sb3I9JnF1b3Q7Jmx0Oz9waHAgZWNobyAkZmFyYmU7ID8mZ3Q7JnF1b3Q7Jmd0 OyAmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBmYWNlPSZxdW90 O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocCAKKwkJCSRhY2NvdW50aW5mb19xdWVyeSA9IEBt eXNxbF9xdWVyeSgmcXVvdDtTRUxFQ1QgdXNlcl9uYW1lLCB1c2VyX2lkIEZST00gdXNlcnMgV0hF UkUgdXNlcl9pZCA9ICcmcXVvdDsuJHJlc3VsdF9jb250ZW50Wydjb250ZW50X3Vzcm5hbWVfaWQn XS4mcXVvdDsnJnF1b3Q7KSBvciBkaWUoJ0RCIGVycm9yIChhZG1pbiBpbnRlcmZhY2UpIScpOwor CQkJJGFjY291bnRpbmZvX3Jlc3VsdCA9IEBteXNxbF9mZXRjaF9hcnJheSgkYWNjb3VudGluZm9f cXVlcnkpOworCQkJCisJCQkkcm9zY21zX2ludGVybl9hY2NvdW50dXNlciA9ICRhY2NvdW50aW5m b19yZXN1bHRbJ3VzZXJfbmFtZSddOworCQkJaWYgKCRyb3NjbXNfaW50ZXJuX2FjY291bnR1c2Vy ICZhbXA7JmFtcDsgJHJvc2Ntc19pbnRlcm5fYWNjb3VudHVzZXIgIT0gJnF1b3Q7JnF1b3Q7KSB7 CisJCQkJZWNobyAmcXVvdDsmbHQ7YiZndDsmcXVvdDsuJHJvc2Ntc19pbnRlcm5fYWNjb3VudHVz ZXIuJnF1b3Q7Jmx0Oy9iJmd0OyZsdDticiZndDsmbHQ7YSBocmVmPSc/cGFnZT11c2VyJmFtcDth bXA7c2VjPXByb2ZpbCZhbXA7YW1wO3NlYzI9JnF1b3Q7LiRyZXN1bHRfY29udGVudFsnY29udGVu dF91c3JuYW1lX2lkJ10uJnF1b3Q7JyB0YXJnZXQ9J19ibGFuaycmZ3Q7UHJvZmlsZSZsdDsvYSZn dDsmcXVvdDs7CisJCQl9CisJCQllbHNlIHsKKwkJCQllY2hvICZxdW90OyZsdDtiJmd0O1Jvc0NN UyZsdDsvYiZndDsmcXVvdDs7CisJCQl9CisJCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyZsdDsvZm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNw OyAmbmJzcDsmbHQ7L3RyJmd0OworICZuYnNwOyAmbmJzcDsmbHQ7P3BocAkKKwl9CS8vIGVuZCB3 aGlsZQorPyZndDsKKyAmbmJzcDsmbHQ7L3RhYmxlJmd0OworICZuYnNwOyZsdDs/cGhwCisJaW5j bHVkZSgmcXVvdDtpbmMvaW5jX2Rlc2NyaXB0aW9uX3RhYmxlLnBocCZxdW90Oyk7Cis/Jmd0Owor Jmx0Oy9kaXYmZ3Q7CismbHQ7P3BocAorCX0KKz8mZ3Q7CjwvcHJlPjxwcmUgY2xhc3M9ImRpZmYi IGlkPSJjb250ZXh0Ij5Qcm9wZXJ0eSBjaGFuZ2VzIG9uOiB0cnVuay93ZWIvcmVhY3Rvcy5vcmcv aHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fY29udGVudC5waHAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46 ZW9sLXN0eWxlCiAmbmJzcDsgKyBuYXRpdmUKPC9wcmU+PC9kaXY+CjxociAvPjxkaXYgY2xhc3M9 ImZpbGUiPgo8ZGl2IGNsYXNzPSJmaWxlaGVhZGVyIj48YmlnPjxiPkFkZGVkOiB0cnVuay93ZWIv cmVhY3Rvcy5vcmcvaHRkb2NzL3Jvc2Ntcy9pbmMvYWRtaW5fY29udGVudF9lZGl0LnBocDwvYj48 L2JpZz48L2Rpdj4KPHByZSBjbGFzcz0iZGlmZiI+PHNtYWxsIGlkPSJpbmZvIj4tLS0gdHJ1bmsv d2ViL3JlYWN0b3Mub3JnL2h0ZG9jcy9yb3NjbXMvaW5jL2FkbWluX2NvbnRlbnRfZWRpdC5waHAJ MjAwNS0xMS0xNiAyMToxNzo0MyBVVEMgKHJldiAxOTI3NSkKKysrIHRydW5rL3dlYi9yZWFjdG9z Lm9yZy9odGRvY3Mvcm9zY21zL2luYy9hZG1pbl9jb250ZW50X2VkaXQucGhwCTIwMDUtMTEtMTYg MjE6MTk6NTcgVVRDIChyZXYgMTkyNzYpCkBAIC0wLDAgKzEsNDEzIEBACjwvc21hbGw+PC9wcmU+ PHByZSBjbGFzcz0iZGlmZiIgaWQ9ImFkZGVkIj4rJmx0Oz9waHAKKyAmbmJzcDsgJm5ic3A7LyoK KyAmbmJzcDsgJm5ic3A7Um9zQ01TIC0gUmVhY3RPUyBDb250ZW50IE1hbmFnZW1lbnQgU3lzdGVt CisgJm5ic3A7ICZuYnNwO0NvcHlyaWdodCAoQykgMjAwNSAmbmJzcDtLbGVtZW5zIEZyaWVkbCAm bHQ7ZnJpazg1QHJlYWN0b3Mub3JnJmd0OworCisgJm5ic3A7ICZuYnNwO1RoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg Jm5ic3A7ICZuYnNwO2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgJm5ic3A7ICZuYnNwO3RoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgJm5ic3A7 ICZuYnNwOyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAmbmJzcDsgJm5i c3A7VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgJm5ic3A7ICZuYnNwO2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgJm5ic3A7ICZuYnNwO01FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gJm5ic3A7U2VlIHRoZQor ICZuYnNwOyAmbmJzcDtHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorCisgJm5ic3A7ICZuYnNwO1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgJm5ic3A7ICZuYnNwO2Fsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgJm5ic3A7ICZu YnNwO0ZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwg VVNBLgorICZuYnNwOyAmbmJzcDsqLworPyZndDsKKyZsdDtkaXYgY2xhc3M9JnF1b3Q7Y29udGVu dFNtYWxsJnF1b3Q7Jmd0OyAmbHQ7c3BhbiBjbGFzcz0mcXVvdDtjb250ZW50U21hbGxUaXRsZSZx dW90OyZndDtBZG1pbiBJbnRlcmZhY2UgLSBDb250ZW50Jmx0Oy9zcGFuJmd0OyAKKyAmbmJzcDsm bHQ7P3BocCBpZighaXNzZXQoJF9QT1NUWydjb250ZW50X3JhZF9vcHQnXSkgfHwgJF9QT1NUWydj b250ZW50X3JhZF9vcHQnXSA9PSAmcXVvdDtwcmV2aWV3JnF1b3Q7KSB7ID8mZ3Q7CisgJm5ic3A7 Jmx0O3VsJmd0OworICZuYnNwOyAmbmJzcDsmbHQ7bGkmZ3Q7Jmx0O3N0cm9uZyZndDsmbHQ7YSBo cmVmPSZxdW90Oz9wYWdlPSZsdDs/cGhwIGVjaG8gJHJwbV9wYWdlOyA/Jmd0OyZhbXA7c2VjPWNv bnRlbnQmYW1wO3NlYzI9dmlldyZhbXA7YW1wOyZsdDs/cGhwIGVjaG8gJ3NvcnQ9Jy4kcnBtX3Nv cnQuJyZhbXA7YW1wO2ZpbHQ9Jy4kcnBtX2ZpbHQuJyZhbXA7YW1wO2xhbmdpZD0nLiRycG1fbGFu Z19pZC4mcXVvdDsjJnF1b3Q7LiRycG1fZGJfaWQgOyA/Jmd0OyZxdW90OyZndDtDb250ZW50Jmx0 Oy9hJmd0OyZsdDsvc3Ryb25nJmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt1bCZndDsK KyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7bGkmZ3Q7VmlldyBjb250ZW50Jmx0Oy9s aSZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvdWwmZ3Q7CisgJm5ic3A7ICZuYnNwOyZs dDsvbGkmZ3Q7CisgJm5ic3A7Jmx0Oy91bCZndDsKKyAmbmJzcDsmbHQ7P3BocAorCisJJHF1ZXJ5 X2NvbnRlbnQgPSBteXNxbF9xdWVyeSgmcXVvdDtTRUxFQ1QgKiAKKwkJCUZST00gY29udGVudAor CQkJV0hFUkUgY29udGVudF9pZCA9ICckcnBtX2RiX2lkJworCQkJT1JERVIgQlkgJ2NvbnRlbnRf bGFuZycgQVNDJnF1b3Q7KSA7CisKKwkkZmFyYmU9JnF1b3Q7I0UyRTJFMiZxdW90OzsKKwkKKwkk cmVzdWx0X2NvbnRlbnQgPSBteXNxbF9mZXRjaF9hcnJheSgkcXVlcnlfY29udGVudCk7CisJJHJv c2Ntc19pbnRlcm5fZWRpdG9yX2NvbnRlbnQgPSAmcXVvdDsmcXVvdDs7CisJJHJvc2Ntc19pbnRl cm5fZWRpdG9yX2NvbnRlbnQgPSAkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfdGV4dCddOworPyZn dDsKKyAmbmJzcDsmbHQ7Zm9ybSBuYW1lPSZxdW90O2Ntc19jb250ZW50JnF1b3Q7IG1ldGhvZD0m cXVvdDtwb3N0JnF1b3Q7IGFjdGlvbj0mcXVvdDsmbHQ7P3BocCAvL2VjaG8gJF9TRVJWRVJbJ1BI UF9TRUxGJ107CisJCWVjaG8gJz9wYWdlPScuJHJwbV9wYWdlLicmYW1wO2FtcDtzZWM9Y29udGVu dCZhbXA7YW1wO3NlYzI9c2F2ZSZhbXA7YW1wO2RiX2lkPScuJHJwbV9kYl9pZDsKKwkgPyZndDsm cXVvdDsmZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDt0YWJsZSB3aWR0aD0mcXVvdDs2MDAmcXVvdDsg Ym9yZGVyPSZxdW90OzAmcXVvdDsgY2VsbHBhZGRpbmc9JnF1b3Q7MSZxdW90OyBjZWxsc3BhY2lu Zz0mcXVvdDsxJnF1b3Q7Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RyIGJnY29sb3I9 JnF1b3Q7IzU5ODRDMyZxdW90OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0 O3RkIHdpZHRoPSZxdW90OzE1JSZxdW90OyBiZ2NvbG9yPSZxdW90OyM1OTg0QzMmcXVvdDsmZ3Q7 ICZsdDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90 OyNGRkZGRkYmcXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1 b3Q7Jmd0OyZsdDtzdHJvbmcmZ3Q7Q29udGVudCAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwO0lEICZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7L2RpdiZn dDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB3aWR0aD0m cXVvdDs4NSUmcXVvdDsgYmdjb2xvcj0mcXVvdDsjRTJFMkUyJnF1b3Q7Jmd0OyAmbHQ7ZGl2IGFs aWduPSZxdW90O2xlZnQmcXVvdDsmZ3Q7Jmx0O2ZvbnQgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwO1sjY29udF8KKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyZsdDtpbnB1dCBuYW1lPSZxdW90O3R4dF9jb250ZW50aWQmcXVvdDsgdHlwZT0mcXVv dDt0ZXh0JnF1b3Q7IGlkPSZxdW90O3R4dF9jb250ZW50aWQmcXVvdDsgdmFsdWU9JnF1b3Q7Jmx0 Oz9waHAgZWNobyAkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfbmFtZSddOyA/Jmd0OyZxdW90OyBz aXplPSZxdW90OzUwJnF1b3Q7IG1heGxlbmd0aD0mcXVvdDs1MCZxdW90OyZndDsKKyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO10gJmFtcDtuYnNwOyAoZS5nLiAmYW1w O3F1b3Q7bWVkaWEmYW1wO3F1b3Q7KSZsdDsvZm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0 OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy90ciZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNw OyZsdDt0ciZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0m cXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsjNTk4NEMzJnF1b3Q7Jmd0OyAmbHQ7ZGl2IGFs aWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBjb2xvcj0mcXVvdDsjRkZGRkZGJnF1 b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiZxdW90OyZndDsmbHQ7 c3Ryb25nJmd0O0xhbmd1YWdlJmx0Oy9zdHJvbmcmZ3Q7Jmx0Oy9mb250Jmd0OyZsdDsvZGl2Jmd0 OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0m cXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsjRUVFRUVFJnF1b3Q7Jmd0OyZsdDtkaXYgYWxp Z249JnF1b3Q7bGVmdCZxdW90OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsmbHQ7c2VsZWN0IGlkPSZxdW90O3R4dF9sYW5nYSZxdW90OyBzaXplPSZxdW90 OzEmcXVvdDsgbmFtZT0mcXVvdDt0eHRfbGFuZ2EmcXVvdDsgY2xhc3M9JnF1b3Q7c2VsZWN0Ym94 JnF1b3Q7Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyZsdDs/cGhwIAorCQkJCS8vZWNobyAkcmVzdWx0X3BhZ2VbJ3BhZ2VfbGFuZ3VhZ2UnXTsK KwkJCQkkY21zcm9zX2ludGVybl90ZW1wX2xhbmdfc2hvcnQ9JHJlc3VsdF9jb250ZW50Wydjb250 ZW50X2xhbmcnXTsKKwkJCQkkc3FsX2xhbmc9JnF1b3Q7U0VMRUNUICogCisJCQkJCUZST00gbGFu Z3VhZ2VzCisJCQkJCVdIRVJFIGxhbmdfbGV2ZWwgIT0gJzAnIEFORCBsYW5nX2lkID0gJyRjbXNy b3NfaW50ZXJuX3RlbXBfbGFuZ19zaG9ydCcKKwkJCQkJT1JERVIgQlkgJ2xhbmdfbGV2ZWwnIERF U0MgTGltaXQgMSZxdW90OzsKKwkJCQkkc3FsX3F1ZXJ5X2xhbmc9bXlzcWxfcXVlcnkoJHNxbF9s YW5nKTsKKwkJCQkkbXlyb3dfbGFuZz1teXNxbF9mZXRjaF9yb3coJHNxbF9xdWVyeV9sYW5nKTsg Ly8gTGFuZ3VhZ2VzCisJCQk/Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyZsdDtvcHRncm91cCBsYWJlbD0mcXVvdDtsYW5ndWFnZXMmcXVvdDsm Z3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZs dDtvcHRpb24gdmFsdWU9JnF1b3Q7YWxsJnF1b3Q7Jmx0Oz9waHAgaWYgKCRjbXNyb3NfaW50ZXJu X3RlbXBfbGFuZ19zaG9ydCA9PSAmcXVvdDthbGwmcXVvdDspIHsgZWNobyAnIHNlbGVjdGVkPSZx dW90O3NlbGVjdGVkJnF1b3Q7JzsgfSA/Jmd0OyZndDtBbGwmbHQ7L29wdGlvbiZndDsKKyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocAorCQkJ ICZuYnNwOworCQkvLyBMYW5ndWFnZXMKKwkJJHNxbF9sYW5nYT0mcXVvdDtTRUxFQ1QgKiAKKwkJ CQkJRlJPTSBsYW5ndWFnZXMKKwkJCQkJV0hFUkUgbGFuZ19sZXZlbCAhPSAnMCcKKwkJCQkJT1JE RVIgQlkgJ2xhbmdfbGV2ZWwnIERFU0MmcXVvdDs7CisJCSRzcWxfcXVlcnlfbGFuZ2E9bXlzcWxf cXVlcnkoJHNxbF9sYW5nYSk7CisJCXdoaWxlKCRteXJvd19sYW5nYT1teXNxbF9mZXRjaF9yb3co JHNxbF9xdWVyeV9sYW5nYSkpIHsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDtlY2hvICcmbHQ7b3B0aW9uIHZhbHVlPSZxdW90OycuJG15cm93X2xhbmdh WzBdLicmcXVvdDsnOworCQkJICZuYnNwO2lmICgkbXlyb3dfbGFuZ1swXSA9PSAkbXlyb3dfbGFu Z2FbMF0pIHsKKwkJCQkJZWNobyAnIHNlbGVjdGVkPSZxdW90O3NlbGVjdGVkJnF1b3Q7JzsKKwkJ CSAmbmJzcDt9CisJCQkgJm5ic3A7ZWNobyAnJmd0OycuJG15cm93X2xhbmdhWzFdLicmbHQ7L29w dGlvbiZndDsnOworCQl9CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7PyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsmbHQ7L29wdGdyb3VwJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtvcHRncm91cCBsYWJlbD0mcXVvdDtvdGhlciZxdW90OyZn dDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0 O29wdGlvbiB2YWx1ZT0mcXVvdDt4aHRtbCZxdW90OyZsdDs/cGhwIGlmICgkcmVzdWx0X2NvbnRl bnRbJ2NvbnRlbnRfbGFuZyddID09ICZxdW90O3hodG1sJnF1b3Q7KSB7IGVjaG8gJyBzZWxlY3Rl ZD0mcXVvdDtzZWxlY3RlZCZxdW90Oyc7IH0gPyZndDsmZ3Q7WEhUTUwmbHQ7L29wdGlvbiZndDsK KyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7b3B0 aW9uIHZhbHVlPSZxdW90O2h0bWwmcXVvdDsmbHQ7P3BocCBpZiAoJHJlc3VsdF9jb250ZW50Wydj b250ZW50X2xhbmcnXSA9PSAmcXVvdDtodG1sJnF1b3Q7KSB7IGVjaG8gJyBzZWxlY3RlZD0mcXVv dDtzZWxlY3RlZCZxdW90Oyc7IH0gPyZndDsmZ3Q7SFRNTCZsdDsvb3B0aW9uJmd0OworICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvb3B0Z3JvdXAm Z3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L3NlbGVj dCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy9kaXYmZ3Q7Jmx0 Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvdHImZ3Q7CisgJm5ic3A7ICZuYnNw OyAmbmJzcDsmbHQ7P3BocCAKKwlpZiAoJHJlc3VsdF9jb250ZW50Wydjb250ZW50X2VkaXRvcidd ICE9ICZxdW90O3JpY2h0ZXh0JnF1b3Q7ICZhbXA7JmFtcDsgJHJlc3VsdF9jb250ZW50Wydjb250 ZW50X2VkaXRvciddICE9ICZxdW90O2JiY29kZSZxdW90OykgeworPyZndDsKKyAmbmJzcDsgJm5i c3A7ICZuYnNwOyZsdDt0ciZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3Rk IHZhbGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsjNTk4NEMzJnF1b3Q7Jmd0OyZs dDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90OyNG RkZGRkYmcXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7 Jmd0OyZsdDtzdHJvbmcmZ3Q7Q29udGVudCZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7 L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB2 YWxpZ249JnF1b3Q7dG9wJnF1b3Q7IGJnY29sb3I9JnF1b3Q7I0UyRTJFMiZxdW90OyZndDsmbHQ7 dGV4dGFyZWEgbmFtZT0mcXVvdDt0ZXh0YXJlYV9jb250ZW50JnF1b3Q7IGNvbHM9JnF1b3Q7NjAm cXVvdDsgcm93cz0mcXVvdDsyMCZxdW90OyBpZD0mcXVvdDt0ZXh0YXJlYV9jb250ZW50JnF1b3Q7 Jmd0OyZsdDs/cGhwCisJCQkJLy9lY2hvIGh0bWxlbnRpdGllcyhlcmVnX3JlcGxhY2UoJnF1b3Q7 JmFtcDthbXA7KCNbMC05XXs0fTspJnF1b3Q7LCAmcXVvdDsmYW1wO1xcMSZxdW90OywgJHJvc2Nt c19pbnRlcm5fZWRpdG9yX2NvbnRlbnQpLCBFTlRfUVVPVEVTLCAnVVRGLTgnKTsgCisJCQkJZWNo byBlcmVnX3JlcGxhY2UoJnF1b3Q7JmFtcDthbXA7KCNbMC05XXs0fTspJnF1b3Q7LCAmcXVvdDsm YW1wO1xcMSZxdW90OywgaHRtbGVudGl0aWVzKCRyb3NjbXNfaW50ZXJuX2VkaXRvcl9jb250ZW50 LCBFTlRfUVVPVEVTLCAnVVRGLTgnKSkKKworCQkJCS8vZWNobyBodG1sZW50aXRpZXMoJHJvc2Nt c19pbnRlcm5fZWRpdG9yX2NvbnRlbnQpOworCQkJCQorCQkJPyZndDsmbHQ7L3RleHRhcmVhJmd0 OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L3RyJmd0OworICZuYnNwOyAm bmJzcDsgJm5ic3A7Jmx0Oz9waHAKKwl9Cis/Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0 O3RyJmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgdmFsaWduPSZxdW90 O3RvcCZxdW90OyBiZ2NvbG9yPSZxdW90OyM1OTg0QzMmcXVvdDsmZ3Q7Jmx0O2RpdiBhbGlnbj0m cXVvdDtjZW50ZXImcXVvdDsmZ3Q7Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7I0ZGRkZGRiZxdW90OyBm YWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7Jmx0O3N0cm9u ZyZndDtSZXZpc2lvbiZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7 L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB2YWxpZ249JnF1b3Q7 dG9wJnF1b3Q7IGJnY29sb3I9JnF1b3Q7I0VFRUVFRSZxdW90OyZndDsmbHQ7Zm9udCBmYWNlPSZx dW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7IAorICZuYnNwOyAmbmJz cDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocCAKKwkJCWVjaG8gJHJlc3VsdF9jb250ZW50 Wydjb250ZW50X3ZlcnNpb24nXTsKKwkJPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJz cDsgJm5ic3A7Jmx0Oy9mb250Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsm bHQ7L3RyJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RyJmd0OyAKKyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgdmFsaWduPSZxdW90O3RvcCZxdW90OyBiZ2NvbG9yPSZx dW90OyM1OTg0QzMmcXVvdDsmZ3Q7Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsmZ3Q7 Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7I0ZGRkZGRiZxdW90OyBmYWNlPSZxdW90O0FyaWFsLCBIZWx2 ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7Jmx0O3N0cm9uZyZndDtWaXNpYmxlJmx0Oy9zdHJv bmcmZ3Q7Jmx0Oy9mb250Jmd0OyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVv dDsjRTJFMkUyJnF1b3Q7Jmd0OyZsdDtmb250IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwg c2Fucy1zZXJpZiZxdW90OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyZsdDs/cGhwIAorCQkJaWYgKCRyZXN1bHRfY29udGVudFsnY29udGVudF92aXNpYmxlJ10gPT0g MSkgeworCQkJCWVjaG8gJyAmbHQ7aW5wdXQgbmFtZT0mcXVvdDtjb250ZW50X3Zpc2libGUmcXVv dDsgdHlwZT0mcXVvdDtyYWRpbyZxdW90OyB2YWx1ZT0mcXVvdDt5ZXMmcXVvdDsgY2hlY2tlZCZn dDsgeWVzICZhbXA7bmJzcDsgJmx0O2lucHV0IHR5cGU9JnF1b3Q7cmFkaW8mcXVvdDsgbmFtZT0m cXVvdDtjb250ZW50X3Zpc2libGUmcXVvdDsgdmFsdWU9JnF1b3Q7bm8mcXVvdDsmZ3Q7IG5vJzsK KwkJCX0KKwkJCWVsc2UgeworCQkJCWVjaG8gJyAmbHQ7aW5wdXQgbmFtZT0mcXVvdDtjb250ZW50 X3Zpc2libGUmcXVvdDsgdHlwZT0mcXVvdDtyYWRpbyZxdW90OyB2YWx1ZT0mcXVvdDt5ZXMmcXVv dDsmZ3Q7IHllcyAmYW1wO25ic3A7ICZsdDtpbnB1dCB0eXBlPSZxdW90O3JhZGlvJnF1b3Q7IG5h bWU9JnF1b3Q7Y29udGVudF92aXNpYmxlJnF1b3Q7IHZhbHVlPSZxdW90O25vJnF1b3Q7IGNoZWNr ZWQmZ3Q7IG5vJzsKKwkJCX0JCisJCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyZsdDsvZm9udCZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0 Oy90ciZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ciZndDsgCisgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVv dDsjNTk4NEMzJnF1b3Q7Jmd0OyZsdDtkaXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZs dDtmb250IGNvbG9yPSZxdW90OyNGRkZGRkYmcXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0 aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0OyZsdDtzdHJvbmcmZ3Q7QWN0aXZlJmx0Oy9zdHJvbmcm Z3Q7Jmx0Oy9mb250Jmd0OyZsdDsvZGl2Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7Jmx0O3RkIHZhbGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsj RUVFRUVFJnF1b3Q7Jmd0OyZsdDtmb250IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZiZxdW90OyZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZs dDs/cGhwIAorCQkJaWYgKCRyZXN1bHRfY29udGVudFsnY29udGVudF9hY3RpdmUnXSA9PSAxKSB7 CisJCQkJZWNobyAnICZsdDtpbnB1dCBuYW1lPSZxdW90O2NvbnRlbnRfYWN0aXZlJnF1b3Q7IHR5 cGU9JnF1b3Q7cmFkaW8mcXVvdDsgdmFsdWU9JnF1b3Q7eWVzJnF1b3Q7IGNoZWNrZWQmZ3Q7IHll cyAmYW1wO25ic3A7ICZsdDtpbnB1dCB0eXBlPSZxdW90O3JhZGlvJnF1b3Q7IG5hbWU9JnF1b3Q7 Y29udGVudF9hY3RpdmUmcXVvdDsgdmFsdWU9JnF1b3Q7bm8mcXVvdDsmZ3Q7IG5vJzsKKwkJCX0K KwkJCWVsc2UgeworCQkJCWVjaG8gJyAmbHQ7aW5wdXQgbmFtZT0mcXVvdDtjb250ZW50X2FjdGl2 ZSZxdW90OyB0eXBlPSZxdW90O3JhZGlvJnF1b3Q7IHZhbHVlPSZxdW90O3llcyZxdW90OyZndDsg eWVzICZhbXA7bmJzcDsgJmx0O2lucHV0IHR5cGU9JnF1b3Q7cmFkaW8mcXVvdDsgbmFtZT0mcXVv dDtjb250ZW50X2FjdGl2ZSZxdW90OyB2YWx1ZT0mcXVvdDtubyZxdW90OyBjaGVja2VkJmd0OyBu byc7CisJCQl9CQorCQk/Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsm bHQ7L2ZvbnQmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvdHImZ3Q7 CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dHImZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyZsdDt0ZCB2YWxpZ249JnF1b3Q7dG9wJnF1b3Q7IGJnY29sb3I9JnF1b3Q7IzU5ODRD MyZxdW90OyZndDsmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZndDsmbHQ7Zm9udCBj b2xvcj0mcXVvdDsjRkZGRkZGJnF1b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhlbHZldGljYSwgc2Fu cy1zZXJpZiZxdW90OyZndDsmbHQ7c3Ryb25nJmd0O0VkaXRvciZsdDsvc3Ryb25nJmd0OyZsdDsv Zm9udCZndDsmbHQ7L2RpdiZndDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyZsdDt0ZCB2YWxpZ249JnF1b3Q7dG9wJnF1b3Q7IGJnY29sb3I9JnF1b3Q7I0UyRTJFMiZx dW90OyZndDsgJmx0O3NlbGVjdCBpZD0mcXVvdDt0eHRfZXh0cmEmcXVvdDsgc2l6ZT0mcXVvdDsx JnF1b3Q7IG5hbWU9JnF1b3Q7dHh0X2V4dHJhJnF1b3Q7IGNsYXNzPSZxdW90O3NlbGVjdGJveCZx dW90OyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtv cHRncm91cCBsYWJlbD0mcXVvdDtjdXJyZW50JnF1b3Q7Jmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwICZuYnNwOyAKKwkJCQllY2hvICcmbHQ7 b3B0aW9uIHZhbHVlPSZxdW90OycuJHJlc3VsdF9jb250ZW50WyZxdW90O2NvbnRlbnRfZWRpdG9y JnF1b3Q7XS4nJnF1b3Q7JzsKKwkJCQllY2hvICcgc2VsZWN0ZWQ9JnF1b3Q7c2VsZWN0ZWQmcXVv dDsmZ3Q7JzsKKwkJCQkKKwkJCQlpZiAoJHJlc3VsdF9jb250ZW50WyZxdW90O2NvbnRlbnRfZWRp dG9yJnF1b3Q7XT09JnF1b3Q7JnF1b3Q7KSB7CisJCQkJCWVjaG8gJnF1b3Q7cGxhaW4gdGV4dCZx dW90OzsKKwkJCQl9CisJCQkJZWxzZSB7CisJCQkJCWVjaG8gJHJlc3VsdF9jb250ZW50WyZxdW90 O2NvbnRlbnRfZWRpdG9yJnF1b3Q7XTsKKwkJCQl9CisJCQkJZWNobyAnJmx0Oy9vcHRpb24mZ3Q7 JzsKKwkJCQk/Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 Jmx0Oy9vcHRncm91cCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyZsdDtvcHRncm91cCBsYWJlbD0mcXVvdDtleHRyYSBvcHRpb24mcXVvdDsmZ3Q7IAorICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O29wdGlvbiB2YWx1ZT0m cXVvdDsmcXVvdDsmZ3Q7cGxhaW4gdGV4dCZsdDsvb3B0aW9uJmd0OworICZuYnNwOyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O29wdGlvbiB2YWx1ZT0mcXVvdDtyaWNodGV4 dCZxdW90OyZndDtyaWNodGV4dCZsdDsvb3B0aW9uJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O29wdGlvbiB2YWx1ZT0mcXVvdDtiYmNvZGUmcXVvdDsm Z3Q7YmJjb2RlJmx0Oy9vcHRpb24mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyAmbmJzcDsmbHQ7L29wdGdyb3VwJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsmbHQ7L3NlbGVjdCZndDsgJmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNw OyZsdDsvdHImZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dHImZ3Q7IAorICZuYnNwOyAm bmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB2YWxpZ249JnF1b3Q7dG9wJnF1b3Q7IGJnY29sb3I9 JnF1b3Q7IzU5ODRDMyZxdW90OyZndDsmbHQ7ZGl2IGFsaWduPSZxdW90O2NlbnRlciZxdW90OyZn dDsmbHQ7Zm9udCBjb2xvcj0mcXVvdDsjRkZGRkZGJnF1b3Q7IGZhY2U9JnF1b3Q7QXJpYWwsIEhl bHZldGljYSwgc2Fucy1zZXJpZiZxdW90OyZndDsmbHQ7c3Ryb25nJmd0O0RhdGUmbHQ7L3N0cm9u ZyZndDsmbHQ7L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDsmbHQ7dGQgdmFsaWduPSZxdW90O3RvcCZxdW90OyBiZ2NvbG9yPSZxdW90 OyNFRUVFRUUmcXVvdDsmZ3Q7Jmx0O2ZvbnQgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBz YW5zLXNlcmlmJnF1b3Q7Jmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7 Jmx0Oz9waHAgCisJCQllY2hvICRyZXN1bHRfY29udGVudFsnY29udGVudF9kYXRlJ107CisJCT8m Z3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDsvZm9udCZndDsmbHQ7 L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oy90ciZndDsKKyAmbmJzcDsgJm5ic3A7 ICZuYnNwOyZsdDt0ciZndDsgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RkIHZh bGlnbj0mcXVvdDt0b3AmcXVvdDsgYmdjb2xvcj0mcXVvdDsjNTk4NEMzJnF1b3Q7Jmd0OyZsdDtk aXYgYWxpZ249JnF1b3Q7Y2VudGVyJnF1b3Q7Jmd0OyZsdDtmb250IGNvbG9yPSZxdW90OyNGRkZG RkYmcXVvdDsgZmFjZT0mcXVvdDtBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJnF1b3Q7Jmd0 OyZsdDtzdHJvbmcmZ3Q7VGltZSZsdDsvc3Ryb25nJmd0OyZsdDsvZm9udCZndDsmbHQ7L2RpdiZn dDsmbHQ7L3RkJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDt0ZCB2YWxpZ249 JnF1b3Q7dG9wJnF1b3Q7IGJnY29sb3I9JnF1b3Q7I0UyRTJFMiZxdW90OyZndDsmbHQ7Zm9udCBm YWNlPSZxdW90O0FyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7IAorICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7P3BocCAKKwkJCWVjaG8gJHJlc3VsdF9j b250ZW50Wydjb250ZW50X3RpbWUnXTsKKwkJPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDsgJm5ic3A7Jmx0Oy9mb250Jmd0OyZsdDsvdGQmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJz cDsmbHQ7L3RyJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3RyJmd0OyAKKyAmbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgdmFsaWduPSZxdW90O3RvcCZxdW90OyBiZ2NvbG9y PSZxdW90OyM1OTg0QzMmcXVvdDsmZ3Q7Jmx0O2RpdiBhbGlnbj0mcXVvdDtjZW50ZXImcXVvdDsm Z3Q7Jmx0O2ZvbnQgY29sb3I9JnF1b3Q7I0ZGRkZGRiZxdW90OyBmYWNlPSZxdW90O0FyaWFsLCBI ZWx2ZXRpY2EsIHNhbnMtc2VyaWYmcXVvdDsmZ3Q7Jmx0O3N0cm9uZyZndDtBY3Rpb24mbHQ7L3N0 cm9uZyZndDsmbHQ7L2ZvbnQmZ3Q7Jmx0Oy9kaXYmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5i c3A7ICZuYnNwOyAmbmJzcDsmbHQ7dGQgdmFsaWduPSZxdW90O3RvcCZxdW90OyBiZ2NvbG9yPSZx dW90OyNFRUVFRUUmcXVvdDsmZ3Q7Jmx0Oy90ZCZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZs dDsvdHImZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDsvdGFibGUmZ3Q7CisgJm5ic3A7ICZuYnNwOyZs dDtwJmd0OyAKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDs/cGhwCisJCWlmICgkcmVzdWx0X2Nv bnRlbnRbJ2NvbnRlbnRfZWRpdG9yJ109PSZxdW90O3JpY2h0ZXh0JnF1b3Q7KSB7CisKKwkJCWlu Y2x1ZGUoJnF1b3Q7Li4vZWRpdG9yL0ZDL2Zja2VkaXRvci5waHAmcXVvdDspIDsKKwkJCS8vIEF1 dG9tYXRpY2FsbHkgY2FsY3VsYXRlcyB0aGUgZWRpdG9yIGJhc2UgcGF0aCBiYXNlZCBvbiB0aGUg X3NhbXBsZXMgZGlyZWN0b3J5LgorCQkJLy8gVGhpcyBpcyB1c2VmdWxsIG9ubHkgZm9yIHRoZXNl IHNhbXBsZXMuIEEgcmVhbCBhcHBsaWNhdGlvbiBzaG91bGQgdXNlIHNvbWV0aGluZyBsaWtlIHRo aXM6CisJCQkJLy8gJG9GQ0tlZGl0b3ItJmd0O0Jhc2VQYXRoID0gJy9GQ0tlZGl0b3IvJyA7CS8v ICcvRkNLZWRpdG9yLycgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisJCQkkc0Jhc2VQYXRoID0gJF9T RVJWRVJbJ1BIUF9TRUxGJ10gOworCQkJJHNCYXNlUGF0aCA9IHN1YnN0ciggJHNCYXNlUGF0aCwg MCwgc3RycG9zKCAkc0Jhc2VQYXRoLCAmcXVvdDtfc2FtcGxlcyZxdW90OyApICkgOworCQkJCisJ CQkkb0ZDS2VkaXRvciA9IG5ldyBGQ0tlZGl0b3IoJ0ZDS2VkaXRvcicpIDsKKwkJCQkvLyRvRkNL ZWRpdG9yLSZndDtCYXNlUGF0aAk9ICRzQmFzZVBhdGggOworCQkJLy8kb0ZDS2VkaXRvci0mZ3Q7 VG9vbGJhclNldCA9ICZxdW90O0Jhc2ljJnF1b3Q7OworCQkJJG9GQ0tlZGl0b3ItJmd0O0Jhc2VQ YXRoID0gJy4uL2VkaXRvci9GQy8nOworCQkJCisJCQkkb0ZDS2VkaXRvci0mZ3Q7SGVpZ2h0ICZu YnNwOyAmbmJzcDsgPSA1MDA7CisJCQkkb0ZDS2VkaXRvci0mZ3Q7VmFsdWUJCT0gJHJvc2Ntc19p bnRlcm5fZWRpdG9yX2NvbnRlbnQ7CisJCQkkb0ZDS2VkaXRvci0mZ3Q7Q3JlYXRlKCkgOworCQl9 CisJCWlmICgkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfZWRpdG9yJ109PSZxdW90O2JiY29kZSZx dW90OykgeworCQkJaW5jbHVkZSgmcXVvdDsuLi9lZGl0b3IvYmJjb2RlL2JiY29kZWVkaXRvci5w aHAmcXVvdDspOworCQkJaW5jbHVkZSgmcXVvdDsuLi9lZGl0b3IvYmJjb2RlL2NicGFyc2VyLnBo cCZxdW90Oyk7CisJCQlpZiAoaXNzZXQoJF9QT1NUWydjb250ZW50X3JhZF9vcHQnXSkpIHsKKwkJ CQllY2hvICZxdW90OyZsdDtwJmd0OyZsdDtmaWVsZHNldCZndDsmbHQ7bGVnZW5kJmd0O1ByZXZp ZXcmbHQ7L2xlZ2VuZCZndDsmcXVvdDsuYmIyaHRtbChzdHJpcHNsYXNoZXMoQCRfUE9TVFsncG9z dCddKSwnJykuJnF1b3Q7Jmx0Oy9maWVsZHNldCZndDsmbHQ7L3AmZ3Q7JnF1b3Q7OworCQkJfQor CQkJZWxzZSB7CisJCQkJZWNobyAmcXVvdDsmbHQ7cCZndDsmbHQ7ZmllbGRzZXQmZ3Q7Jmx0O2xl Z2VuZCZndDtQcmV2aWV3Jmx0Oy9sZWdlbmQmZ3Q7JnF1b3Q7LmJiMmh0bWwoc3RyaXBzbGFzaGVz KCRyb3NjbXNfaW50ZXJuX2VkaXRvcl9jb250ZW50KSwnJykuJnF1b3Q7Jmx0Oy9maWVsZHNldCZn dDsmbHQ7L3AmZ3Q7JnF1b3Q7OworCQkJCS8vZWNobyAmcXVvdDsmbHQ7cCZndDsmbHQ7aHImZ3Q7 JnF1b3Q7LmJiMmh0bWwoc3RyaXBzbGFzaGVzKCRyb3NjbXNfaW50ZXJuX2VkaXRvcl9jb250ZW50 KSwnJykuJnF1b3Q7Jmx0O2hyJmd0OyZsdDsvcCZndDsmcXVvdDs7CisJCQl9CisJCX0KKwkJCisJ CSRyb3NjbXNfaW50ZXJuX2NvbnRlbnRfbmFtZT0kcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfbmFt ZSddOworCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDsvcCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0 O3AmZ3Q7IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oz9waHAgaWYgKCRycG1fb3B0PT0mcXVv dDt0cmFuc2xhdGUmcXVvdDspIHsgPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtpbnB1 dCBuYW1lPSZxdW90O2NvbnRlbnRfcmFkX29wdCZxdW90OyB0eXBlPSZxdW90O3JhZGlvJnF1b3Q7 IHZhbHVlPSZxdW90O3RyYW5zbGF0ZSZxdW90OyBjaGVja2VkJmd0OworICZuYnNwOyAmbmJzcDsg Jm5ic3A7VHJhbnNsYXRlIAorICZuYnNwOyAmbmJzcDsmbHQ7cCZndDsmbHQ7YiZndDsmbHQ7Ymxp bmsmZ3Q7UGxlYXNlIGNoZWNrLCBpZiB5b3Ugc2VsZWN0ZWQgdGhlIHJpZ2h0IGxhbmd1YWdlLCBi ZWZvcmUgeW91IAorICZuYnNwOyAmbmJzcDsgJm5ic3A7Y2xpY2sgJnF1b3Q7c3VibWl0JnF1b3Q7 ISZsdDsvYmxpbmsmZ3Q7Jmx0Oy9iJmd0OyZsdDsvcCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0O2lu cHV0IHR5cGU9JnF1b3Q7c3VibWl0JnF1b3Q7IG5hbWU9JnF1b3Q7U3VibWl0JnF1b3Q7IHZhbHVl PSZxdW90O1N1Ym1pdCZxdW90OyZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0O3AmZ3Q7JmFtcDtuYnNw OyZsdDsvcCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0Oz9waHAKKwkgJm5ic3A7fSBlbHNlIHsgPyZn dDsKKyAmbmJzcDsgJm5ic3A7Jmx0O2lucHV0IG5hbWU9JnF1b3Q7Y29udGVudF9yYWRfb3B0JnF1 b3Q7IHR5cGU9JnF1b3Q7cmFkaW8mcXVvdDsgdmFsdWU9JnF1b3Q7aW5zZXJ0JnF1b3Q7ICZsdDs/ cGhwIGlmKCRyb3NjbXNfaW50ZXJuX3VzcmdycF9hZG1pbiAhPSB0cnVlIE9SICRyb3NjbXNfaW50 ZXJuX2NvbnRlbnRfbmFtZSA9PSAmcXVvdDsmcXVvdDspIHsgZWNobyAmcXVvdDtjaGVja2VkJnF1 b3Q7OyB9ID8mZ3Q7Jmd0OworICZuYnNwOyAmbmJzcDtTYXZlIChuZXcgdmVyc2lvbikgJmFtcDtu YnNwOyAKKyAmbmJzcDsgJm5ic3A7Jmx0Oz9waHAgCisJCQkJaWYoKCRyb3NjbXNfaW50ZXJuX3Vz cmdycF9hZG1pbiA9PSB0cnVlIHx8ICRyb3NjbXNfaW50ZXJuX2FjY291bnRfaWQgPT0gJHJlc3Vs dF9jb250ZW50Wydjb250ZW50X3Vzcm5hbWVfaWQnXSkgQU5EICRyb3NjbXNfaW50ZXJuX2NvbnRl bnRfbmFtZSAhPSAmcXVvdDsmcXVvdDsgJm5ic3A7KSB7CisJCQk/Jmd0OworICZuYnNwOyAmbmJz cDsmbHQ7aW5wdXQgbmFtZT0mcXVvdDtjb250ZW50X3JhZF9vcHQmcXVvdDsgdHlwZT0mcXVvdDty YWRpbyZxdW90OyB2YWx1ZT0mcXVvdDt1cGRhdGUmcXVvdDsgJmx0Oz9waHAgaWYoJHJlc3VsdF9j b250ZW50Wydjb250ZW50X2VkaXRvciddICE9ICZxdW90O2JiY29kZSZxdW90OykgeyBlY2hvICZx dW90O2NoZWNrZWQmcXVvdDs7IH0gPyZndDsmZ3Q7CisgJm5ic3A7ICZuYnNwO1VwZGF0ZSAKKyAm bmJzcDsgJm5ic3A7Jmx0Oz9waHAgfSA/Jmd0OworICZuYnNwOyAmbmJzcDsmbHQ7P3BocCAKKwkJ CQlpZigkcmVzdWx0X2NvbnRlbnRbJ2NvbnRlbnRfZWRpdG9yJ10gPT0gJnF1b3Q7YmJjb2RlJnF1 b3Q7KSB7CisJCQk/Jmd0OworICZuYnNwOyAmbmJzcDsmbHQ7aW5wdXQgbmFtZT0mcXVvdDtjb250 ZW50X3JhZF9vcHQmcXVvdDsgdHlwZT0mcXVvdDtyYWRpbyZxdW90OyB2YWx1ZT0mcXVvdDtwcmV2 aWV3JnF1b3Q7IGNoZWNrZWQmZ3Q7CisgJm5ic3A7ICZuYnNwO1ByZXZpZXcgCisgJm5ic3A7ICZu YnNwOyZsdDs/cGhwIH0gPyZndDsmbHQ7L3AmZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDtwJmd0Owor ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oz9waHAgCisJCQlpZiAoJHJvc2Ntc19pbnRlcm5fdXNy Z3JwX3NhZG1pbiA9PSB0cnVlIHx8CisJCQkJJHJvc2Ntc19pbnRlcm5fdXNyZ3JwX2FkbWluID09 IHRydWUgfHwKKwkJCQkkcm9zY21zX2ludGVybl91c3JncnBfZGV2ID09IHRydWUgfHwKKwkJCQkk cm9zY21zX2ludGVybl91c3JncnBfdGVhbSA9PSB0cnVlIHx8CisJCQkJJHJvc2Ntc19pbnRlcm5f dXNyZ3JwX3RyYW5zID09IHRydWUpIHsKKwkJCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsm bHQ7aW5wdXQgdHlwZT0mcXVvdDtzdWJtaXQmcXVvdDsgbmFtZT0mcXVvdDtTdWJtaXQmcXVvdDsg dmFsdWU9JnF1b3Q7U3VibWl0JnF1b3Q7Jmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0Oz9w aHAgJm5ic3A7fSBlbHNlIHsgPyZndDsKKyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtpbWcgc3Jj PSZxdW90O2ltYWdlcy9sb2NrLmdpZiZxdW90OyBhbHQ9JnF1b3Q7TG9ja2VkJnF1b3Q7IHdpZHRo PSZxdW90OzE5JnF1b3Q7IGhlaWdodD0mcXVvdDsxOCZxdW90OyZndDsgKHlvdSBuZWVkIAorICZu YnNwOyAmbmJzcDsgJm5ic3A7YSBoaWdoZXIgYWNjb3VudCBsZXZlbCB0byBzYXZlIHRoZSBjb250 ZW50IHRvIHRoZSBkYXRhYmFzZSkmbHQ7L3AmZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDs/cGhwCisJ CQkgfSAKKwkJfQorCT8mZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDtwJmd0OyZsdDtzdHJvbmcmZ3Q7 SW5mbzombHQ7L3N0cm9uZyZndDsgZm9yIGVhY2ggWyNpbmNfeHl6XSB0YWcgdGhlIFJvc0NNUyB3 aWxsIGluY2x1ZGUgCisgJm5ic3A7ICZuYnNwOyAmbmJzcDt0aGUgY29kZSB0aGF0IGlzIGxpbmtl ZCB3aXRoIHRoaXMgdGFnIGZyb20gZGF0YWJhc2UuJmx0O2JyJmd0OworICZuYnNwOyAmbmJzcDsg Jm5ic3A7Jmx0O2JyJmd0OworICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O3N0cm9uZyZndDtIaW50 czombHQ7L3N0cm9uZyZndDsmbHQ7L3AmZ3Q7CisgJm5ic3A7ICZuYnNwOyZsdDt1bCZndDsKKyAm bmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtsaSZndDt1c2UgJmFtcDthbXA7YW1wOyBpbnN0ZWFkIG9m ICZhbXA7cXVvdDsmYW1wO2FtcDsmYW1wO3F1b3Q7IGluIGxpbmtzLCBlLmcuIGh0dHA6Ly93d3cu cmVhY3Rvcy5vcmcvP3BhZ2U9c3VwcG9ydCZhbXA7YW1wO2FtcDtsYW5nPWVuJmx0Oy9saSZndDsK KyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZsdDtsaSZndDsgJmFtcDtxdW90OyZhbXA7bHQ7cGxhY2Vo b2xkZXImYW1wO2d0OyZhbXA7cXVvdDsgPSZhbXA7Z3Q7ICZhbXA7YW1wO2x0O3BsYWNlaG9sZGVy JmFtcDthbXA7Z3Q7ICZsdDsvbGkmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7bGkmZ3Q7 UmVhY3RPUyBIb21lcGFnZSBVUkw6IFsjcm9zY21zX3BhdGhfaG9tZXBhZ2VdJmx0Oy9saSZndDsK KyAmbmJzcDsgJm5ic3A7Jmx0Oy91bCZndDsKKyAmbmJzcDsmbHQ7L2Zvcm0mZ3Q7CisgJm5ic3A7 Jmx0Oz9waHAKKwl9CisJZWxzZWlmKGlzc2V0KCRfUE9TVFsnY29udGVudF9yYWRfb3B0J10pICZh bXA7JmFtcDsgJF9QT1NUWydjb250ZW50X3JhZF9vcHQnXSAhPSAmcXVvdDtwcmV2aWV3JnF1b3Q7 KSB7Cis/Jmd0OworICZuYnNwOyZsdDt1bCZndDsKKyAmbmJzcDsgJm5ic3A7Jmx0O2xpJmd0OyZs dDtzdHJvbmcmZ3Q7Jmx0O2EgaHJlZj0mcXVvdDs/cGFnZT0mbHQ7P3BocCBlY2hvICRycG1fcGFn ZTsgPyZndDsmYW1wO3NlYz1jb250ZW50JmFtcDtzZWMyPXZpZXcmYW1wO2FtcDsmbHQ7P3BocCBl Y2hvICdzb3J0PScuJHJwbV9zb3J0LicmYW1wO2FtcDtmaWx0PScuJHJwbV9maWx0LicmYW1wO2Ft cDtsYW5naWQ9Jy4kcnBtX2xhbmdfaWQuJnF1b3Q7IyZxdW90Oy4kcnBtX2RiX2lkIDsgPyZndDsm cXVvdDsmZ3Q7Q29udGVudCZsdDsvYSZndDsmbHQ7L3N0cm9uZyZndDsgCisgJm5ic3A7ICZuYnNw OyAmbmJzcDsmbHQ7dWwmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jmx0O2xpJmd0 O1NhdmUgY29udGVudCZsdDsvbGkmZ3Q7CisgJm5ic3A7ICZuYnNwOyAmbmJzcDsmbHQ7L3VsJmd0 OworICZuYnNwOyAmbmJzcDsmbHQ7L2xpJmd0OworICZuYnNwOyZsdDsvdWwmZ3Q7CisgJm5ic3A7 Jmx0Oz9waHAgCisKKwkJJGNvbnRlbnRfY29udGVudGlkPSZxdW90OyZxdW90OzsKKwkJJGNvbnRl bnRfbGFuZ2E9JnF1b3Q7JnF1b3Q7OworCQkkY29udGVudF92aXM9JnF1b3Q7JnF1b3Q7OworCQkk Y29udGVudF9hY3Q9JnF1b3Q7JnF1b3Q7OworCQkkY29udGVudF9leHRyYT0mcXVvdDsmcXVvdDs7 CisJCSRjb250ZW50X3NhdmVtb2RlPSZxdW90OyZxdW90OzsKKworCQlpZiAoYXJyYXlfa2V5X2V4 aXN0cygmcXVvdDt0eHRfY29udGVudGlkJnF1b3Q7LCAkX1BPU1QpKSAkY29udGVudF9jb250ZW50 aWQ9JF9QT1NUWyd0eHRfY29udGVudGlkJ107CisJCWlmIChhcnJheV9rZXlfZXhpc3RzKCZxdW90 O3R4dF9sYW5nYSZxdW90OywgJF9QT1NUKSkgJGNvbnRlbnRfbGFuZ2E9JF9QT1NUWyd0eHRfbGFu Z2EnXTsKKwkJaWYgKGFycmF5X2tleV9leGlzdHMoJnF1b3Q7Y29udGVudF92aXNpYmxlJnF1b3Q7 LCAkX1BPU1QpKSAkY29udGVudF92aXM9JF9QT1NUWydjb250ZW50X3Zpc2libGUnXTsKKwkJaWYg KGFycmF5X2tleV9leGlzdHMoJnF1b3Q7Y29udGVudF9hY3RpdmUmcXVvdDssICRfUE9TVCkpICRj b250ZW50X2FjdD0kX1BPU1RbJ2NvbnRlbnRfYWN0aXZlJ107CisJCWlmIChhcnJheV9rZXlfZXhp c3RzKCZxdW90O3R4dF9leHRyYSZxdW90OywgJF9QT1NUKSkgJGNvbnRlbnRfZXh0cmE9JF9QT1NU Wyd0eHRfZXh0cmEnXTsKKwkJaWYgKGFycmF5X2tleV9leGlzdHMoJnF1b3Q7Y29udGVudF9yYWRf b3B0JnF1b3Q7LCAkX1BPU1QpKSAkY29udGVudF9zYXZlbW9kZT0kX1BPU1RbJ2NvbnRlbnRfcmFk X29wdCddOworCisJCWVjaG8gJnF1b3Q7Jmx0O2JyJmd0O2FhJnF1b3Q7LiRjb250ZW50X2FjdDsK KwkJaWYgKCRjb250ZW50X2xhbmdhID09ICZxdW90OyZxdW90OykgeworCQkJJGNvbnRlbnRfbGFu Z2EgPSAmcXVvdDthbGwmcXVvdDs7CisJCX0KKworCQlpZiAoJGNvbnRlbnRfdmlzID09ICZxdW90 O3llcyZxdW90OykgeworCQkJJGNvbnRlbnRfdmlzPSZxdW90OzEmcXVvdDs7CisJCX0KKwkJZWxz ZSB7CisJCQkkY29udGVudF92aXM9JnF1b3Q7MCZxdW90OzsKKwkJfQorCQkKKwkJaWYgKCRjb250 ZW50X2FjdCA9PSAmcXVvdDt5ZXMmcXVvdDspIHsKKwkJCSRjb250ZW50X2FjdD0mcXVvdDsxJnF1 b3Q7OworCQl9CisJCWVsc2UgeworCQkJJGNvbnRlbnRfYWN0PSZxdW90OzAmcXVvdDs7CjwvcHJl Pgo8c3Ryb25nIGNsYXNzPSJlcnJvciI+W3RydW5jYXRlZCBhdCAxMDAwIGxpbmVzOyAzODY1IG1v cmUgc2tpcHBlZF08L3N0cm9uZz4KPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K --===============0049348072195527161==--