SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_component` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_admin_event` TINYINT(1) NOT NULL DEFAULT 0,
	`add_backup_folder_path` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_admin` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_site` TINYINT(1) NOT NULL DEFAULT 0,
	`add_email_helper` TINYINT(1) NOT NULL DEFAULT 0,
	`add_git_folder_path` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript` TINYINT(1) NOT NULL DEFAULT 0,
	`add_jcb_powers_path` TINYINT(1) NOT NULL DEFAULT 0,
	`add_menu_prefix` CHAR(1) NOT NULL DEFAULT '',
	`add_namespace_prefix` CHAR(1) NOT NULL DEFAULT '',
	`add_php_helper_admin` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_helper_both` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_helper_site` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_method_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_placeholders` TINYINT(1) NOT NULL DEFAULT 0,
	`add_powers` TINYINT(1) NOT NULL DEFAULT 1,
	`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
	`add_site_event` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
	`addcontributors` TEXT NOT NULL,
	`addfootable` TINYINT(1) NOT NULL DEFAULT 0,
	`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
	`adduikit` TINYINT(1) NOT NULL DEFAULT 0,
	`assets_table_fix` TINYINT(1) NOT NULL DEFAULT 3,
	`author` VARCHAR(255) NOT NULL DEFAULT '',
	`backup_folder_path` VARCHAR(255) NOT NULL DEFAULT '',
	`bom` CHAR(64) NOT NULL DEFAULT '',
	`buildcomp` TINYINT(1) NOT NULL DEFAULT 0,
	`buildcompsql` MEDIUMTEXT NOT NULL,
	`companyname` CHAR(64) NOT NULL DEFAULT '',
	`component_version` CHAR(64) NOT NULL DEFAULT '',
	`copyright` VARCHAR(255) NOT NULL DEFAULT '',
	`created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
	`creatuserhelper` TINYINT(1) NOT NULL DEFAULT 0,
	`crowdin_account_api_key` TEXT NOT NULL,
	`crowdin_project_api_key` TEXT NOT NULL,
	`crowdin_project_identifier` VARCHAR(255) NOT NULL DEFAULT '',
	`crowdin_username` TEXT NOT NULL,
	`css_admin` TEXT NOT NULL,
	`css_site` TEXT NOT NULL,
	`dashboard` VARCHAR(64) NOT NULL DEFAULT '',
	`dashboard_type` TINYINT(1) NOT NULL DEFAULT 1,
	`debug_linenr` TINYINT(1) NOT NULL DEFAULT 0,
	`description` TEXT NULL,
	`email` VARCHAR(255) NOT NULL DEFAULT '',
	`emptycontributors` TINYINT(1) NOT NULL DEFAULT 0,
	`export_buy_link` VARCHAR(255) NOT NULL DEFAULT '',
	`export_key` TEXT NOT NULL,
	`git_folder_path` VARCHAR(255) NOT NULL DEFAULT '',
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`image` VARCHAR(255) NOT NULL DEFAULT '',
	`javascript` TEXT NOT NULL,
	`jcb_powers_path` VARCHAR(255) NOT NULL DEFAULT '',
	`joomla_source_link` VARCHAR(255) NOT NULL DEFAULT '',
	`license` VARCHAR(255) NOT NULL DEFAULT '',
	`menu_prefix` VARCHAR(100) NOT NULL DEFAULT '',
	`modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
	`mvc_versiondate` TINYINT(1) NOT NULL DEFAULT 0,
	`name` CHAR(64) NOT NULL DEFAULT '',
	`name_code` VARCHAR(255) NOT NULL DEFAULT '',
	`namespace_prefix` VARCHAR(255) NOT NULL DEFAULT '',
	`number` INT(11) NOT NULL DEFAULT 0,
	`php_admin_event` MEDIUMTEXT NOT NULL,
	`php_helper_admin` MEDIUMTEXT NOT NULL,
	`php_helper_both` MEDIUMTEXT NOT NULL,
	`php_helper_site` MEDIUMTEXT NOT NULL,
	`php_method_install` MEDIUMTEXT NOT NULL,
	`php_method_uninstall` MEDIUMTEXT NOT NULL,
	`php_postflight_install` MEDIUMTEXT NOT NULL,
	`php_postflight_update` MEDIUMTEXT NOT NULL,
	`php_preflight_install` MEDIUMTEXT NOT NULL,
	`php_preflight_update` MEDIUMTEXT NOT NULL,
	`php_site_event` MEDIUMTEXT NOT NULL,
	`preferred_joomla_version` INT(11) NOT NULL DEFAULT 3,
	`readme` TEXT NOT NULL,
	`remove_line_breaks` TINYINT(1) NOT NULL DEFAULT 0,
	`sales_server` INT(11) NOT NULL DEFAULT 0,
	`short_description` VARCHAR(255) NOT NULL DEFAULT '',
	`sql` MEDIUMTEXT NOT NULL,
	`sql_uninstall` MEDIUMTEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`toignore` TEXT NOT NULL,
	`translation_tool` TINYINT(1) NOT NULL DEFAULT 0,
	`update_server` INT(11) NOT NULL DEFAULT 0,
	`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
	`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
	`website` CHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	`metakey` TEXT,
	`metadesc` TEXT,
	`metadata` TEXT,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_name_code` (`name_code`),
	KEY `idx_mvc_versiondate` (`mvc_versiondate`),
	KEY `idx_remove_line_breaks` (`remove_line_breaks`),
	KEY `idx_add_placeholders` (`add_placeholders`),
	KEY `idx_debug_linenr` (`debug_linenr`),
	KEY `idx_add_sales_server` (`add_sales_server`),
	KEY `idx_add_jcb_powers_path` (`add_jcb_powers_path`),
	KEY `idx_add_powers` (`add_powers`),
	KEY `idx_addreadme` (`addreadme`),
	KEY `idx_add_backup_folder_path` (`add_backup_folder_path`),
	KEY `idx_translation_tool` (`translation_tool`),
	KEY `idx_add_namespace_prefix` (`add_namespace_prefix`),
	KEY `idx_namespace_prefix` (`namespace_prefix`),
	KEY `idx_add_php_helper_site` (`add_php_helper_site`),
	KEY `idx_add_site_event` (`add_site_event`),
	KEY `idx_add_menu_prefix` (`add_menu_prefix`),
	KEY `idx_add_javascript` (`add_javascript`),
	KEY `idx_menu_prefix` (`menu_prefix`),
	KEY `idx_add_css_admin` (`add_css_admin`),
	KEY `idx_add_css_site` (`add_css_site`),
	KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
	KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
	KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
	KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
	KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
	KEY `idx_add_php_method_install` (`add_php_method_install`),
	KEY `idx_add_sql` (`add_sql`),
	KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
	KEY `idx_emptycontributors` (`emptycontributors`),
	KEY `idx_assets_table_fix` (`assets_table_fix`),
	KEY `idx_add_update_server` (`add_update_server`),
	KEY `idx_update_server_target` (`update_server_target`),
	KEY `idx_creatuserhelper` (`creatuserhelper`),
	KEY `idx_add_git_folder_path` (`add_git_folder_path`),
	KEY `idx_adduikit` (`adduikit`),
	KEY `idx_addfootable` (`addfootable`),
	KEY `idx_add_email_helper` (`add_email_helper`),
	KEY `idx_add_php_helper_both` (`add_php_helper_both`),
	KEY `idx_add_php_helper_admin` (`add_php_helper_admin`),
	KEY `idx_guid` (`guid`),
	KEY `idx_add_admin_event` (`add_admin_event`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_class_helper` TINYINT(1) NOT NULL DEFAULT 0,
	`add_class_helper_header` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_script_construct` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
	`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
	`class_helper_code` MEDIUMTEXT NOT NULL,
	`class_helper_header` TEXT NOT NULL,
	`custom_get` TEXT NOT NULL,
	`default` MEDIUMTEXT NOT NULL,
	`description` TEXT NULL,
	`fields` TEXT NOT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`libraries` TEXT NOT NULL,
	`mod_code` TEXT NOT NULL,
	`module_version` CHAR(64) NOT NULL DEFAULT '',
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_method_uninstall` MEDIUMTEXT NOT NULL,
	`php_postflight_install` MEDIUMTEXT NOT NULL,
	`php_postflight_update` MEDIUMTEXT NOT NULL,
	`php_preflight_install` MEDIUMTEXT NOT NULL,
	`php_preflight_uninstall` MEDIUMTEXT NOT NULL,
	`php_preflight_update` MEDIUMTEXT NOT NULL,
	`php_script_construct` MEDIUMTEXT NOT NULL,
	`readme` TEXT NOT NULL,
	`sales_server` INT(11) NOT NULL DEFAULT 0,
	`snippet` INT(11) NOT NULL DEFAULT 0,
	`sql` MEDIUMTEXT NOT NULL,
	`sql_uninstall` MEDIUMTEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`target` TINYINT(1) NOT NULL DEFAULT 0,
	`update_server` INT(11) NOT NULL DEFAULT 0,
	`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
	`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
	KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
	KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
	KEY `idx_add_php_preflight_uninstall` (`add_php_preflight_uninstall`),
	KEY `idx_addreadme` (`addreadme`),
	KEY `idx_add_sql` (`add_sql`),
	KEY `idx_update_server_target` (`update_server_target`),
	KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
	KEY `idx_add_update_server` (`add_update_server`),
	KEY `idx_add_php_script_construct` (`add_php_script_construct`),
	KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
	KEY `idx_add_sales_server` (`add_sales_server`),
	KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
	KEY `idx_guid` (`guid`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_head` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_method_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_install` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_preflight_update` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_script_construct` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sales_server` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql_uninstall` TINYINT(1) NOT NULL DEFAULT 0,
	`add_update_server` TINYINT(1) NOT NULL DEFAULT 0,
	`addreadme` TINYINT(1) NOT NULL DEFAULT 0,
	`class_extends` INT(11) NOT NULL DEFAULT 0,
	`description` TEXT NULL,
	`fields` TEXT NOT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`head` TEXT NULL,
	`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
	`main_class_code` MEDIUMTEXT NOT NULL,
	`method_selection` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_method_uninstall` MEDIUMTEXT NOT NULL,
	`php_postflight_install` MEDIUMTEXT NOT NULL,
	`php_postflight_update` MEDIUMTEXT NOT NULL,
	`php_preflight_install` MEDIUMTEXT NOT NULL,
	`php_preflight_uninstall` MEDIUMTEXT NOT NULL,
	`php_preflight_update` MEDIUMTEXT NOT NULL,
	`php_script_construct` MEDIUMTEXT NOT NULL,
	`plugin_version` CHAR(64) NOT NULL DEFAULT '',
	`property_selection` TEXT NOT NULL,
	`readme` TEXT NOT NULL,
	`sales_server` INT(11) NOT NULL DEFAULT 0,
	`sql` MEDIUMTEXT NOT NULL,
	`sql_uninstall` MEDIUMTEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`update_server` INT(11) NOT NULL DEFAULT 0,
	`update_server_target` TINYINT(1) NOT NULL DEFAULT 0,
	`update_server_url` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_class_extends` (`class_extends`),
	KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
	KEY `idx_add_sql` (`add_sql`),
	KEY `idx_add_php_method_uninstall` (`add_php_method_uninstall`),
	KEY `idx_add_php_postflight_update` (`add_php_postflight_update`),
	KEY `idx_add_php_postflight_install` (`add_php_postflight_install`),
	KEY `idx_add_update_server` (`add_update_server`),
	KEY `idx_add_sql_uninstall` (`add_sql_uninstall`),
	KEY `idx_addreadme` (`addreadme`),
	KEY `idx_update_server_target` (`update_server_target`),
	KEY `idx_add_php_script_construct` (`add_php_script_construct`),
	KEY `idx_add_php_preflight_install` (`add_php_preflight_install`),
	KEY `idx_add_php_preflight_update` (`add_php_preflight_update`),
	KEY `idx_add_php_preflight_uninstall` (`add_php_preflight_uninstall`),
	KEY `idx_add_sales_server` (`add_sales_server`),
	KEY `idx_guid` (`guid`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_power` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`description` TEXT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`settings` TEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_power` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_head` TINYINT(1) NOT NULL DEFAULT 0,
	`add_licensing_template` TINYINT(1) NOT NULL DEFAULT 1,
	`approved` TINYINT(1) NOT NULL DEFAULT 0,
	`approved_paths` TEXT NULL,
	`composer` TEXT NULL,
	`description` TEXT NULL,
	`extends` VARCHAR(36) NULL DEFAULT '',
	`extends_custom` VARCHAR(64) NULL DEFAULT '',
	`extendsinterfaces` TEXT NULL,
	`extendsinterfaces_custom` TEXT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`head` TEXT NULL,
	`implements` TEXT NULL,
	`implements_custom` VARCHAR(1024) NOT NULL DEFAULT '',
	`licensing_template` TEXT NULL,
	`load_selection` TEXT NULL,
	`main_class_code` MEDIUMTEXT NOT NULL,
	`method_selection` TEXT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`namespace` VARCHAR(255) NOT NULL DEFAULT '',
	`power_version` CHAR(64) NOT NULL DEFAULT '',
	`property_selection` TEXT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`type` VARCHAR(64) NOT NULL DEFAULT '',
	`use_selection` TEXT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_namespace` (`namespace`),
	KEY `idx_type` (`type`),
	KEY `idx_extends_custom` (`extends_custom`),
	KEY `idx_implements_custom` (`implements_custom`),
	KEY `idx_add_licensing_template` (`add_licensing_template`),
	KEY `idx_guid` (`guid`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_view` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_category_submenu` TINYINT(1) NOT NULL DEFAULT 1,
	`add_css_view` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_views` TINYINT(1) NOT NULL DEFAULT 0,
	`add_custom_button` INT(1) NOT NULL DEFAULT 0,
	`add_custom_import` TINYINT(1) NOT NULL DEFAULT 0,
	`add_fadein` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_view_file` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_view_footer` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_views_file` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_views_footer` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_after_cancel` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_after_delete` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_after_publish` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_allowadd` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_allowedit` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_batchcopy` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_batchmove` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_cancel` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_delete` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_publish` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_save` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getform` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getitem` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getitems` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getitems_after_all` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getlistquery` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_postsavehook` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_save` TINYINT(1) NOT NULL DEFAULT 0,
	`add_sql` TINYINT(1) NOT NULL DEFAULT 0,
	`addlinked_views` TEXT NOT NULL,
	`addpermissions` TEXT NOT NULL,
	`addtables` TEXT NOT NULL,
	`addtabs` TEXT NOT NULL,
	`ajax_input` TEXT NOT NULL,
	`alias_builder` VARCHAR(255) NOT NULL DEFAULT '',
	`alias_builder_type` TINYINT(1) NOT NULL DEFAULT 0,
	`css_view` TEXT NOT NULL,
	`css_views` TEXT NOT NULL,
	`custom_button` TEXT NOT NULL,
	`description` TEXT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`html_import_view` MEDIUMTEXT NOT NULL,
	`icon` VARCHAR(255) NOT NULL DEFAULT '',
	`icon_add` VARCHAR(255) NOT NULL DEFAULT '',
	`icon_category` VARCHAR(255) NOT NULL DEFAULT '',
	`javascript_view_file` TEXT NOT NULL,
	`javascript_view_footer` TEXT NOT NULL,
	`javascript_views_file` TEXT NOT NULL,
	`javascript_views_footer` TEXT NOT NULL,
	`mysql_table_charset` VARCHAR(64) NOT NULL DEFAULT 1,
	`mysql_table_collate` VARCHAR(64) NOT NULL DEFAULT 1,
	`mysql_table_engine` VARCHAR(64) NOT NULL DEFAULT 1,
	`mysql_table_row_format` VARCHAR(64) NOT NULL DEFAULT 0,
	`name_list` CHAR(64) NOT NULL DEFAULT '',
	`name_single` CHAR(64) NOT NULL DEFAULT '',
	`php_after_cancel` MEDIUMTEXT NOT NULL,
	`php_after_delete` MEDIUMTEXT NOT NULL,
	`php_after_publish` MEDIUMTEXT NOT NULL,
	`php_ajaxmethod` MEDIUMTEXT NOT NULL,
	`php_allowadd` MEDIUMTEXT NOT NULL,
	`php_allowedit` MEDIUMTEXT NOT NULL,
	`php_batchcopy` MEDIUMTEXT NOT NULL,
	`php_batchmove` MEDIUMTEXT NOT NULL,
	`php_before_cancel` MEDIUMTEXT NOT NULL,
	`php_before_delete` MEDIUMTEXT NOT NULL,
	`php_before_publish` MEDIUMTEXT NOT NULL,
	`php_before_save` MEDIUMTEXT NOT NULL,
	`php_controller` MEDIUMTEXT NOT NULL,
	`php_controller_list` MEDIUMTEXT NOT NULL,
	`php_document` MEDIUMTEXT NOT NULL,
	`php_getform` MEDIUMTEXT NOT NULL,
	`php_getitem` MEDIUMTEXT NOT NULL,
	`php_getitems` MEDIUMTEXT NOT NULL,
	`php_getitems_after_all` MEDIUMTEXT NOT NULL,
	`php_getlistquery` MEDIUMTEXT NOT NULL,
	`php_import` MEDIUMTEXT NOT NULL,
	`php_import_display` MEDIUMTEXT NOT NULL,
	`php_import_ext` MEDIUMTEXT NOT NULL,
	`php_import_headers` MEDIUMTEXT NOT NULL,
	`php_import_save` MEDIUMTEXT NOT NULL,
	`php_import_setdata` MEDIUMTEXT NOT NULL,
	`php_model` MEDIUMTEXT NOT NULL,
	`php_model_list` MEDIUMTEXT NOT NULL,
	`php_postsavehook` MEDIUMTEXT NOT NULL,
	`php_save` MEDIUMTEXT NOT NULL,
	`short_description` VARCHAR(255) NOT NULL DEFAULT '',
	`source` TINYINT(1) NOT NULL DEFAULT 0,
	`sql` MEDIUMTEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`type` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name_single` (`name_single`),
	KEY `idx_add_fadein` (`add_fadein`),
	KEY `idx_mysql_table_charset` (`mysql_table_charset`),
	KEY `idx_type` (`type`),
	KEY `idx_source` (`source`),
	KEY `idx_mysql_table_row_format` (`mysql_table_row_format`),
	KEY `idx_add_category_submenu` (`add_category_submenu`),
	KEY `idx_name_list` (`name_list`),
	KEY `idx_add_php_getlistquery` (`add_php_getlistquery`),
	KEY `idx_add_css_view` (`add_css_view`),
	KEY `idx_add_php_getform` (`add_php_getform`),
	KEY `idx_add_php_before_save` (`add_php_before_save`),
	KEY `idx_add_css_views` (`add_css_views`),
	KEY `idx_add_php_save` (`add_php_save`),
	KEY `idx_add_php_postsavehook` (`add_php_postsavehook`),
	KEY `idx_add_javascript_view_file` (`add_javascript_view_file`),
	KEY `idx_add_php_allowadd` (`add_php_allowadd`),
	KEY `idx_add_php_allowedit` (`add_php_allowedit`),
	KEY `idx_add_javascript_view_footer` (`add_javascript_view_footer`),
	KEY `idx_add_php_before_cancel` (`add_php_before_cancel`),
	KEY `idx_add_php_after_cancel` (`add_php_after_cancel`),
	KEY `idx_add_javascript_views_file` (`add_javascript_views_file`),
	KEY `idx_add_php_batchcopy` (`add_php_batchcopy`),
	KEY `idx_add_php_batchmove` (`add_php_batchmove`),
	KEY `idx_add_javascript_views_footer` (`add_javascript_views_footer`),
	KEY `idx_add_php_before_publish` (`add_php_before_publish`),
	KEY `idx_add_php_after_publish` (`add_php_after_publish`),
	KEY `idx_add_custom_button` (`add_custom_button`),
	KEY `idx_add_php_before_delete` (`add_php_before_delete`),
	KEY `idx_add_php_after_delete` (`add_php_after_delete`),
	KEY `idx_add_php_document` (`add_php_document`),
	KEY `idx_mysql_table_engine` (`mysql_table_engine`),
	KEY `idx_mysql_table_collate` (`mysql_table_collate`),
	KEY `idx_add_sql` (`add_sql`),
	KEY `idx_add_php_ajax` (`add_php_ajax`),
	KEY `idx_add_custom_import` (`add_custom_import`),
	KEY `idx_add_php_getitem` (`add_php_getitem`),
	KEY `idx_add_php_getitems` (`add_php_getitems`),
	KEY `idx_guid` (`guid`),
	KEY `idx_add_php_getitems_after_all` (`add_php_getitems_after_all`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_admin_view` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_css` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_custom_button` INT(1) NOT NULL DEFAULT 0,
	`add_javascript_file` TINYINT(1) NOT NULL DEFAULT 0,
	`add_js_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_jview` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_jview_display` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
	`ajax_input` TEXT NOT NULL,
	`codename` VARCHAR(255) NOT NULL DEFAULT '',
	`context` VARCHAR(255) NOT NULL DEFAULT '',
	`css` TEXT NOT NULL,
	`css_document` TEXT NOT NULL,
	`custom_button` TEXT NOT NULL,
	`custom_get` TEXT NOT NULL,
	`default` MEDIUMTEXT NOT NULL,
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`dynamic_get` INT(11) NOT NULL DEFAULT 0,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`icon` VARCHAR(255) NOT NULL DEFAULT '',
	`javascript_file` TEXT NOT NULL,
	`js_document` TEXT NOT NULL,
	`libraries` TEXT NOT NULL,
	`main_get` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_ajaxmethod` MEDIUMTEXT NOT NULL,
	`php_controller` MEDIUMTEXT NOT NULL,
	`php_document` MEDIUMTEXT NOT NULL,
	`php_jview` MEDIUMTEXT NOT NULL,
	`php_jview_display` MEDIUMTEXT NOT NULL,
	`php_model` MEDIUMTEXT NOT NULL,
	`php_view` MEDIUMTEXT NOT NULL,
	`snippet` INT(11) NOT NULL DEFAULT 0,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_main_get` (`main_get`),
	KEY `idx_add_php_jview_display` (`add_php_jview_display`),
	KEY `idx_codename` (`codename`),
	KEY `idx_add_php_jview` (`add_php_jview`),
	KEY `idx_context` (`context`),
	KEY `idx_add_js_document` (`add_js_document`),
	KEY `idx_add_javascript_file` (`add_javascript_file`),
	KEY `idx_add_css_document` (`add_css_document`),
	KEY `idx_add_php_document` (`add_php_document`),
	KEY `idx_add_css` (`add_css`),
	KEY `idx_add_php_view` (`add_php_view`),
	KEY `idx_add_php_ajax` (`add_php_ajax`),
	KEY `idx_dynamic_get` (`dynamic_get`),
	KEY `idx_add_custom_button` (`add_custom_button`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_site_view` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_css` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_custom_button` INT(1) NOT NULL DEFAULT 0,
	`add_javascript_file` TINYINT(1) NOT NULL DEFAULT 0,
	`add_js_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_ajax` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_document` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_jview` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_jview_display` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
	`ajax_input` TEXT NOT NULL,
	`button_position` TINYINT(1) NOT NULL DEFAULT 1,
	`codename` VARCHAR(255) NOT NULL DEFAULT '',
	`context` VARCHAR(255) NOT NULL DEFAULT '',
	`css` TEXT NOT NULL,
	`css_document` TEXT NOT NULL,
	`custom_button` TEXT NOT NULL,
	`custom_get` TEXT NOT NULL,
	`default` MEDIUMTEXT NOT NULL,
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`dynamic_get` INT(11) NOT NULL DEFAULT 0,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`javascript_file` TEXT NOT NULL,
	`js_document` TEXT NOT NULL,
	`libraries` TEXT NOT NULL,
	`main_get` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_ajaxmethod` MEDIUMTEXT NOT NULL,
	`php_controller` MEDIUMTEXT NOT NULL,
	`php_document` MEDIUMTEXT NOT NULL,
	`php_jview` MEDIUMTEXT NOT NULL,
	`php_jview_display` MEDIUMTEXT NOT NULL,
	`php_model` MEDIUMTEXT NOT NULL,
	`php_view` MEDIUMTEXT NOT NULL,
	`snippet` INT(11) NOT NULL DEFAULT 0,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_main_get` (`main_get`),
	KEY `idx_add_php_jview_display` (`add_php_jview_display`),
	KEY `idx_add_php_document` (`add_php_document`),
	KEY `idx_add_php_view` (`add_php_view`),
	KEY `idx_codename` (`codename`),
	KEY `idx_context` (`context`),
	KEY `idx_add_php_jview` (`add_php_jview`),
	KEY `idx_add_javascript_file` (`add_javascript_file`),
	KEY `idx_add_js_document` (`add_js_document`),
	KEY `idx_add_css_document` (`add_css_document`),
	KEY `idx_add_css` (`add_css`),
	KEY `idx_dynamic_get` (`dynamic_get`),
	KEY `idx_add_php_ajax` (`add_php_ajax`),
	KEY `idx_add_custom_button` (`add_custom_button`),
	KEY `idx_button_position` (`button_position`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_template` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
	`alias` VARCHAR(255) NOT NULL DEFAULT '',
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`dynamic_get` INT(11) NOT NULL DEFAULT 0,
	`libraries` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_view` MEDIUMTEXT NOT NULL,
	`snippet` INT(11) NOT NULL DEFAULT 0,
	`template` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_dynamic_get` (`dynamic_get`),
	KEY `idx_add_php_view` (`add_php_view`),
	KEY `idx_alias` (`alias`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_layout` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_php_view` TINYINT(1) NOT NULL DEFAULT 0,
	`alias` VARCHAR(255) NOT NULL DEFAULT '',
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`dynamic_get` INT(11) NOT NULL DEFAULT 0,
	`layout` TEXT NOT NULL,
	`libraries` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_view` MEDIUMTEXT NOT NULL,
	`snippet` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_dynamic_get` (`dynamic_get`),
	KEY `idx_add_php_view` (`add_php_view`),
	KEY `idx_alias` (`alias`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_dynamic_get` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_php_after_getitem` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_after_getitems` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_getitem` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_before_getitems` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_getlistquery` TINYINT(1) NOT NULL DEFAULT 0,
	`add_php_router_parse` TINYINT(1) NOT NULL DEFAULT 0,
	`addcalculation` TINYINT(1) NOT NULL DEFAULT 0,
	`db_selection` TEXT NOT NULL,
	`db_table_main` VARCHAR(255) NOT NULL DEFAULT '',
	`filter` TEXT NOT NULL,
	`getcustom` VARCHAR(255) NOT NULL DEFAULT '',
	`gettype` TINYINT(1) NOT NULL DEFAULT 0,
	`global` TEXT NOT NULL,
	`group` TEXT NOT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`join_db_table` TEXT NOT NULL,
	`join_view_table` TEXT NOT NULL,
	`main_source` TINYINT(1) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`order` TEXT NOT NULL,
	`pagination` TINYINT(1) NOT NULL DEFAULT 1,
	`php_after_getitem` MEDIUMTEXT NOT NULL,
	`php_after_getitems` MEDIUMTEXT NOT NULL,
	`php_before_getitem` MEDIUMTEXT NOT NULL,
	`php_before_getitems` MEDIUMTEXT NOT NULL,
	`php_calculation` MEDIUMTEXT NOT NULL,
	`php_custom_get` MEDIUMTEXT NOT NULL,
	`php_getlistquery` MEDIUMTEXT NOT NULL,
	`php_router_parse` MEDIUMTEXT NOT NULL,
	`plugin_events` VARCHAR(255) NOT NULL DEFAULT '',
	`select_all` TINYINT(1) NOT NULL DEFAULT 0,
	`view_selection` TEXT NOT NULL,
	`view_table_main` INT(11) NOT NULL DEFAULT 0,
	`where` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_main_source` (`main_source`),
	KEY `idx_gettype` (`gettype`),
	KEY `idx_add_php_after_getitems` (`add_php_after_getitems`),
	KEY `idx_add_php_router_parse` (`add_php_router_parse`),
	KEY `idx_add_php_before_getitems` (`add_php_before_getitems`),
	KEY `idx_add_php_before_getitem` (`add_php_before_getitem`),
	KEY `idx_add_php_after_getitem` (`add_php_after_getitem`),
	KEY `idx_add_php_getlistquery` (`add_php_getlistquery`),
	KEY `idx_select_all` (`select_all`),
	KEY `idx_getcustom` (`getcustom`),
	KEY `idx_pagination` (`pagination`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_custom_code` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`code` MEDIUMTEXT NOT NULL,
	`comment_type` TINYINT(1) NOT NULL DEFAULT 1,
	`component` INT(11) NOT NULL DEFAULT 0,
	`from_line` VARCHAR(100) NOT NULL DEFAULT '',
	`function_name` VARCHAR(255) NOT NULL DEFAULT '',
	`hashendtarget` VARCHAR(64) NOT NULL DEFAULT '',
	`hashtarget` VARCHAR(64) NOT NULL DEFAULT '',
	`joomla_version` INT(11) NOT NULL DEFAULT 3,
	`path` TEXT NOT NULL,
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`target` TINYINT(1) NOT NULL DEFAULT 0,
	`to_line` VARCHAR(100) NOT NULL DEFAULT '',
	`type` TINYINT(1) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_component` (`component`),
	KEY `idx_target` (`target`),
	KEY `idx_type` (`type`),
	KEY `idx_function_name` (`function_name`),
	KEY `idx_to_line` (`to_line`),
	KEY `idx_from_line` (`from_line`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_property` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`comment` TEXT NOT NULL,
	`default` TEXT NOT NULL,
	`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`visibility` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_visibility` (`visibility`),
	KEY `idx_guid` (`guid`),
	KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_method` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`arguments` TEXT NOT NULL,
	`code` MEDIUMTEXT NOT NULL,
	`comment` TEXT NOT NULL,
	`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`joomla_plugin_group` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`visibility` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_visibility` (`visibility`),
	KEY `idx_guid` (`guid`),
	KEY `idx_joomla_plugin_group` (`joomla_plugin_group`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_placeholder` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`target` VARCHAR(255) NOT NULL DEFAULT '',
	`value` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_target` (`target`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_library` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addconditions` MEDIUMTEXT NOT NULL,
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`how` TINYINT(1) NOT NULL DEFAULT 1,
	`libraries` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php_setdocument` MEDIUMTEXT NOT NULL,
	`target` TINYINT(1) NOT NULL DEFAULT 1,
	`type` TINYINT(1) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_how` (`how`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`contributor_company` VARCHAR(255) NOT NULL DEFAULT '',
	`contributor_email` VARCHAR(255) NOT NULL DEFAULT '',
	`contributor_name` VARCHAR(255) NOT NULL DEFAULT '',
	`contributor_website` VARCHAR(255) NOT NULL DEFAULT '',
	`description` TEXT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`heading` VARCHAR(255) NOT NULL DEFAULT '',
	`library` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`snippet` TEXT NOT NULL,
	`type` INT(11) NOT NULL DEFAULT 0,
	`url` VARCHAR(255) NOT NULL DEFAULT '',
	`usage` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_type` (`type`),
	KEY `idx_library` (`library`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_validation_rule` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`inherit` CHAR(64) NOT NULL DEFAULT '',
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`php` MEDIUMTEXT NOT NULL,
	`short_description` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_field` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`add_css_view` TINYINT(1) NOT NULL DEFAULT 0,
	`add_css_views` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_view_footer` TINYINT(1) NOT NULL DEFAULT 0,
	`add_javascript_views_footer` TINYINT(1) NOT NULL DEFAULT 0,
	`catid` INT(11) NOT NULL DEFAULT 0,
	`css_view` TEXT NOT NULL,
	`css_views` TEXT NOT NULL,
	`datadefault` CHAR(64) NOT NULL DEFAULT '',
	`datadefault_other` CHAR(64) NOT NULL DEFAULT '',
	`datalenght` CHAR(64) NOT NULL DEFAULT '',
	`datalenght_other` CHAR(64) NOT NULL DEFAULT '',
	`datatype` CHAR(64) NOT NULL DEFAULT '',
	`fieldtype` INT(11) NOT NULL DEFAULT 0,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`indexes` CHAR(64) NOT NULL DEFAULT '',
	`initiator_on_get_model` TEXT NOT NULL,
	`initiator_on_save_model` TEXT NOT NULL,
	`javascript_view_footer` TEXT NOT NULL,
	`javascript_views_footer` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`null_switch` CHAR(64) NOT NULL DEFAULT '',
	`on_get_model_field` TEXT NOT NULL,
	`on_save_model_field` TEXT NOT NULL,
	`store` INT(11) NOT NULL DEFAULT 0,
	`xml` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_fieldtype` (`fieldtype`),
	KEY `idx_datatype` (`datatype`),
	KEY `idx_indexes` (`indexes`),
	KEY `idx_null_switch` (`null_switch`),
	KEY `idx_catid` (`catid`),
	KEY `idx_datalenght` (`datalenght`),
	KEY `idx_datadefault_other` (`datadefault_other`),
	KEY `idx_datadefault` (`datadefault`),
	KEY `idx_datalenght_other` (`datalenght_other`),
	KEY `idx_add_css_view` (`add_css_view`),
	KEY `idx_add_css_views` (`add_css_views`),
	KEY `idx_add_javascript_view_footer` (`add_javascript_view_footer`),
	KEY `idx_add_javascript_views_footer` (`add_javascript_views_footer`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_fieldtype` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`catid` INT(11) NOT NULL DEFAULT 0,
	`datadefault` CHAR(64) NOT NULL DEFAULT '',
	`datadefault_other` CHAR(64) NOT NULL DEFAULT '',
	`datalenght` CHAR(64) NOT NULL DEFAULT '',
	`datalenght_other` CHAR(64) NOT NULL DEFAULT '',
	`datatype` CHAR(64) NOT NULL DEFAULT '',
	`description` TEXT NULL,
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`has_defaults` TINYINT(1) NOT NULL DEFAULT 0,
	`indexes` CHAR(64) NOT NULL DEFAULT '',
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`null_switch` CHAR(64) NOT NULL DEFAULT '',
	`properties` TEXT NOT NULL,
	`short_description` VARCHAR(255) NOT NULL DEFAULT '',
	`store` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_null_switch` (`null_switch`),
	KEY `idx_indexes` (`indexes`),
	KEY `idx_datadefault_other` (`datadefault_other`),
	KEY `idx_datadefault` (`datadefault`),
	KEY `idx_datatype` (`datatype`),
	KEY `idx_has_defaults` (`has_defaults`),
	KEY `idx_datalenght` (`datalenght`),
	KEY `idx_datalenght_other` (`datalenght_other`),
	KEY `idx_guid` (`guid`),
	KEY `idx_catid` (`catid`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_language_translation` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`components` TEXT NULL,
	`modules` TEXT NULL,
	`plugins` TEXT NULL,
	`source` MEDIUMTEXT NOT NULL,
	`translation` TEXT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_language` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`langtag` VARCHAR(64) NOT NULL DEFAULT '',
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_server` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`authentication` TINYINT(1) NOT NULL DEFAULT 0,
	`host` TEXT NOT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`password` TEXT NOT NULL,
	`path` TEXT NOT NULL,
	`port` TEXT NOT NULL,
	`private` TEXT NOT NULL,
	`private_key` TEXT NOT NULL,
	`protocol` TINYINT(1) NOT NULL DEFAULT 0,
	`secret` TEXT NOT NULL,
	`signature` TEXT NOT NULL,
	`username` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_protocol` (`protocol`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_repository` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`access_repo` TINYINT(1) NOT NULL DEFAULT 0,
	`base` VARCHAR(255) NOT NULL DEFAULT '',
	`guid` VARCHAR(36) NOT NULL DEFAULT '',
	`organisation` VARCHAR(255) NOT NULL DEFAULT '',
	`read_branch` VARCHAR(255) NULL DEFAULT '',
	`repository` VARCHAR(255) NOT NULL DEFAULT '',
	`system_name` VARCHAR(255) NOT NULL DEFAULT '',
	`target` TINYINT(7) NOT NULL DEFAULT 1,
	`token` VARCHAR(255) NULL DEFAULT '',
	`type` TINYINT(1) NOT NULL DEFAULT 1,
	`username` VARCHAR(255) NULL DEFAULT '',
	`write_branch` VARCHAR(255) NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_system_name` (`system_name`),
	KEY `idx_organisation` (`organisation`),
	KEY `idx_repository` (`repository`),
	KEY `idx_target` (`target`),
	KEY `idx_type` (`type`),
	KEY `idx_guid` (`guid`),
	KEY `idx_access_repo` (`access_repo`),
	KEY `idx_write_branch` (`write_branch`),
	KEY `idx_read_branch` (`read_branch`),
	KEY `idx_token` (`token`),
	KEY `idx_username` (`username`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_help_document` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`admin_view` CHAR(255) NOT NULL DEFAULT '',
	`alias` CHAR(64) NOT NULL DEFAULT '',
	`article` TINYINT(1) NOT NULL DEFAULT 0,
	`content` TEXT NOT NULL,
	`groups` TEXT NOT NULL,
	`location` TINYINT(1) NOT NULL DEFAULT 0,
	`site_view` CHAR(255) NOT NULL DEFAULT '',
	`target` TINYINT(1) NOT NULL DEFAULT 0,
	`title` CHAR(64) NOT NULL DEFAULT '',
	`type` TINYINT(1) NOT NULL DEFAULT 0,
	`url` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_title` (`title`),
	KEY `idx_type` (`type`),
	KEY `idx_location` (`location`),
	KEY `idx_alias` (`alias`),
	KEY `idx_article` (`article`),
	KEY `idx_target` (`target`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addfields` MEDIUMTEXT NOT NULL,
	`admin_view` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_admin_view` (`admin_view`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields_conditions` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addconditions` MEDIUMTEXT NOT NULL,
	`admin_view` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_admin_view` (`admin_view`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_fields_relations` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addrelations` MEDIUMTEXT NOT NULL,
	`admin_view` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_admin_view` (`admin_view`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_admin_custom_tabs` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`admin_view` INT(11) NOT NULL DEFAULT 0,
	`tabs` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_admin_view` (`admin_view`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_admin_views` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addadmin_views` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_site_views` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addsite_views` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_custom_admin_views` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addcustom_admin_views` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_updates` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`version_update` MEDIUMTEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_mysql_tweaks` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`sql_tweak` TEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_custom_admin_menus` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addcustommenus` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_router` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`constructor_after_parent_code` MEDIUMTEXT NOT NULL,
	`constructor_before_parent_code` MEDIUMTEXT NOT NULL,
	`constructor_before_parent_manual` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`methods_code` MEDIUMTEXT NOT NULL,
	`mode_constructor_after_parent` TINYINT(1) NOT NULL DEFAULT 0,
	`mode_constructor_before_parent` TINYINT(1) NOT NULL DEFAULT 0,
	`mode_methods` TINYINT(1) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_config` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addconfig` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_dashboard` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`dashboard_tab` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`php_dashboard_methods` MEDIUMTEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_files_folders` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addfiles` TEXT NOT NULL,
	`addfilesfullpath` TEXT NOT NULL,
	`addfolders` TEXT NOT NULL,
	`addfoldersfullpath` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_placeholders` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addplaceholders` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_plugins` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addjoomla_plugins` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_component_modules` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addjoomla_modules` TEXT NOT NULL,
	`joomla_component` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_component` (`joomla_component`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_snippet_type` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`description` VARCHAR(255) NOT NULL DEFAULT '',
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_library_config` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addconfig` TEXT NOT NULL,
	`library` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_library` (`library`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_library_files_folders_urls` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addfiles` TEXT NOT NULL,
	`addfilesfullpath` TEXT NOT NULL,
	`addfolders` TEXT NOT NULL,
	`addfoldersfullpath` TEXT NOT NULL,
	`addurls` TEXT NOT NULL,
	`library` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_library` (`library`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_class_extends` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`comment` TEXT NOT NULL,
	`extension_type` VARCHAR(64) NOT NULL DEFAULT '',
	`head` TEXT NULL,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module_updates` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`joomla_module` INT(11) NOT NULL DEFAULT 0,
	`version_update` MEDIUMTEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_module` (`joomla_module`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_module_files_folders_urls` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addfiles` TEXT NOT NULL,
	`addfilesfullpath` TEXT NOT NULL,
	`addfolders` TEXT NOT NULL,
	`addfoldersfullpath` TEXT NOT NULL,
	`addurls` TEXT NOT NULL,
	`joomla_module` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_module` (`joomla_module`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_group` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`class_extends` INT(11) NOT NULL DEFAULT 0,
	`name` VARCHAR(255) NOT NULL DEFAULT '',
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_name` (`name`),
	KEY `idx_class_extends` (`class_extends`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_updates` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`joomla_plugin` INT(11) NOT NULL DEFAULT 0,
	`version_update` MEDIUMTEXT NOT NULL,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_plugin` (`joomla_plugin`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`asset_id` INT(10) unsigned NOT NULL DEFAULT 0 COMMENT 'FK to the #__assets table.',
	`addfiles` TEXT NOT NULL,
	`addfilesfullpath` TEXT NOT NULL,
	`addfolders` TEXT NOT NULL,
	`addfoldersfullpath` TEXT NOT NULL,
	`addurls` TEXT NOT NULL,
	`joomla_plugin` INT(11) NOT NULL DEFAULT 0,
	`params` TEXT NULL,
	`published` TINYINT(3) NOT NULL DEFAULT 1,
	`created_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`modified_by` INT(10) unsigned NOT NULL DEFAULT 0,
	`created` DATETIME DEFAULT CURRENT_TIMESTAMP,
	`modified` DATETIME DEFAULT NULL,
	`checked_out` int(11) unsigned NOT NULL DEFAULT 0,
	`checked_out_time` DATETIME DEFAULT NULL,
	`version` INT(10) unsigned NOT NULL DEFAULT 1,
	`hits` INT(10) unsigned NOT NULL DEFAULT 0,
	`access` INT(10) unsigned NOT NULL DEFAULT 0,
	`ordering` INT(11) NOT NULL DEFAULT 0,
	PRIMARY KEY  (`id`),
	KEY `idx_joomla_plugin` (`joomla_plugin`),
	KEY `idx_access` (`access`),
	KEY `idx_checkout` (`checked_out`),
	KEY `idx_createdby` (`created_by`),
	KEY `idx_modifiedby` (`modified_by`),
	KEY `idx_state` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

--
-- Dumping data for table `#__componentbuilder_joomla_component`
--

INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_admin_event`, `add_backup_folder_path`, `add_css_admin`, `add_css_site`, `add_email_helper`, `add_git_folder_path`, `add_javascript`, `add_jcb_powers_path`, `add_menu_prefix`, `add_namespace_prefix`, `add_php_helper_admin`, `add_php_helper_both`, `add_php_helper_site`, `add_php_method_uninstall`, `add_php_postflight_install`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_update`, `add_placeholders`, `add_powers`, `add_sales_server`, `add_site_event`, `add_sql`, `add_sql_uninstall`, `add_update_server`, `addcontributors`, `addfootable`, `addreadme`, `adduikit`, `assets_table_fix`, `author`, `backup_folder_path`, `bom`, `buildcomp`, `buildcompsql`, `companyname`, `component_version`, `copyright`, `created`, `creatuserhelper`, `crowdin_account_api_key`, `crowdin_project_api_key`, `crowdin_project_identifier`, `crowdin_username`, `css_admin`, `css_site`, `dashboard`, `dashboard_type`, `debug_linenr`, `description`, `email`, `emptycontributors`, `export_buy_link`, `export_key`, `git_folder_path`, `guid`, `image`, `javascript`, `jcb_powers_path`, `joomla_source_link`, `license`, `menu_prefix`, `modified`, `mvc_versiondate`, `name`, `name_code`, `namespace_prefix`, `number`, `php_admin_event`, `php_helper_admin`, `php_helper_both`, `php_helper_site`, `php_method_uninstall`, `php_method_install`, `php_postflight_install`, `php_postflight_update`, `php_preflight_install`, `php_preflight_update`, `php_site_event`, `preferred_joomla_version`, `readme`, `remove_line_breaks`, `sales_server`, `short_description`, `sql`, `sql_uninstall`, `system_name`, `toignore`, `translation_tool`, `update_server`, `update_server_target`, `update_server_url`, `website`, `params`, `published`, `version`, `hits`, `access`, `ordering`) VALUES
(25, '', '', '', '', '', '', '', 1, 1, '', '', 1, '', '', 1, 1, 1, 1, '', 1, '', '', '', '', 1, '{}', '', 1, 3, 3, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '5.0.0', 'Copyright (C) 2015. All Rights Reserved', '2016-10-18 11:44:09', '', '6Czr+0dclpw2DP5349CySufDDZodETdRK6PqgAgsWmQ=', 'L+Zxx5r4izmuIH34ys5WjJeugFu7belTFg667n9FLJ4=', '', 'xiJ4RIc7//ZBwlPpTwqeyUV6wVjPPuseC+m4E5bsVP8=', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'Hql5z9PBZh7yhl1OSKkD5WOZSiuybVKCqiFBvJaF/H8=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'libraries/jcb_demo', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', '&#187;', '2024-07-27 20:27:52', '', 'Demo', 'Demo', 'JCB', 4, '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ==', '', '', '', 'CQkJLy8gQ2hlY2sgdGhhdCB0aGUgZGF0YWJhc2UgaXMgdXAtdG8gZGF0ZQ0KCQkJaWYgKCR0aGlzLT5jbGFzc0V4aXN0cyhTdXBlcl9fXzcwOWQ3Mjk0XzlhNDNfNDZlMl9iNjRlX2QxNmExNmYwZWFiMV9fX1Bvd2VyOjpjbGFzcykpDQoJCQl7DQoJCQkJKG5ldyBTdXBlcl9fXzcwOWQ3Mjk0XzlhNDNfNDZlMl9iNjRlX2QxNmExNmYwZWFiMV9fX1Bvd2VyKCkpLT5ydW4oKTsNCgkJCX0NCg0KCQkJLy8gR2V0IEFwcGxpY2F0aW9uIG9iamVjdA0KCQkJJHRoaXMtPmFwcCA/Pz0gRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKTsNCgkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKCdUaGlzIGlzIGEgZGVtbyBjb21wb25lbnQgZGV2ZWxvcGVkIGluIDxhIGhyZWY9Imh0dHA6Ly92ZG0uYnovY29tcG9uZW50LWJ1aWxkZXIiIHRhZ2V0PSJfYmFsbmsiIHRpdGxlPSJKb29tbGEgQ29tcG9uZW50IEJ1aWxkZXIiPkpDQjwvYT4hIFlvdSBjYW4gYnVpbGQgbW9yZSBjb21wb25lbnRzIGxpa2UgdGhpcyB3aXRoIEpDQiwgY2hlY2tvdXQgb3VyIHBhZ2Ugb24gPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3ZkbS1pby9Kb29tbGEtQ29tcG9uZW50LUJ1aWxkZXIiIHRhZ2V0PSJfYmFsbmsiIHRpdGxlPSJKb29tbGEgQ29tcG9uZW50IEJ1aWxkZXIiPmdpdGh1YjwvYT4gZm9yIG1vcmUgaW5mby4gVGhlIGZ1dHVyZSBvZiA8YSBocmVmPSJodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5Kb29tbGEgQ29tcG9uZW50IERldmVsb3BtZW50PC9hPiBpcyBIZXJlIScsICdJbmZvJyk7', 'CQkJLy8gQ2hlY2sgdGhhdCB0aGUgZGF0YWJhc2UgaXMgdXAtdG8gZGF0ZQ0KCQkJaWYgKCR0aGlzLT5jbGFzc0V4aXN0cyhTdXBlcl9fXzcwOWQ3Mjk0XzlhNDNfNDZlMl9iNjRlX2QxNmExNmYwZWFiMV9fX1Bvd2VyOjpjbGFzcykpDQoJCQl7DQoJCQkJKG5ldyBTdXBlcl9fXzcwOWQ3Mjk0XzlhNDNfNDZlMl9iNjRlX2QxNmExNmYwZWFiMV9fX1Bvd2VyKCkpLT5ydW4oKTsNCgkJCX0=', 'CQkJLy8gQ2hlY2sgdGhhdCB0aGUgUEhQIGNvbmZpZ3VyYXRpb25zIGFyZSBzdWZmaWNpZW50IA0KCQkJaWYgKCR0aGlzLT5jbGFzc0V4aXN0cyhTdXBlcl9fXzRiMmQ2ZjI4XzM0NmVfNDZlY19iZjI0X2Q0NzAzMTljY2EyZF9fX1Bvd2VyOjpjbGFzcykpDQoJCQl7DQoJCQkJKG5ldyBTdXBlcl9fXzRiMmQ2ZjI4XzM0NmVfNDZlY19iZjI0X2Q0NzAzMTljY2EyZF9fX1Bvd2VyKCkpLT5ydW4oKTsNCgkJCX0=', 'CQkJLy8gQ2hlY2sgdGhhdCB0aGUgUEhQIGNvbmZpZ3VyYXRpb25zIGFyZSBzdWZmaWNpZW50IA0KCQkJaWYgKCR0aGlzLT5jbGFzc0V4aXN0cyhTdXBlcl9fXzRiMmQ2ZjI4XzM0NmVfNDZlY19iZjI0X2Q0NzAzMTljY2EyZF9fX1Bvd2VyOjpjbGFzcykpDQoJCQl7DQoJCQkJKG5ldyBTdXBlcl9fXzRiMmQ2ZjI4XzM0NmVfNDZlY19iZjI0X2Q0NzAzMTljY2EyZF9fX1Bvd2VyKCkpLT5ydW4oKTsNCgkJCX0=', '', 5, 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgZnJhbWUgZm9yIHRoaXMgcHJvamVjdCkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gd2l0aCB0aGUgbm9ybWFsIGV2ZXJ5ZGF5IHJlYWxpdGllcyBhdCB0aGUgb2ZmaWNlLCB0aGF0IGluY2x1ZGVzIHRoZSBjb21wb25lbnQgcGxhbm5pbmcsIG1hcHBpbmcgJiBkZWJ1Z2dpbmcuKQ0KDQpQcm9qZWN0IGR1cmF0aW9uOiAqKiMjI3Byb2plY3RXZWVrVGltZSMjIyB3ZWVrcyoqIG9yICoqIyMjcHJvamVjdE1vbnRoVGltZSMjIyBtb250aHMqKg0KDQo+IFRoaXMgKipjb21wb25lbnQqKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQoNCltDVVNUT01DT0RFPXJlYWRNRWNvbnRyaWJ1dG9yc10=', '', '', 'Demo Component', '', '', 'Demo (public)', '.git', '', '', 2, 'https://raw.githubusercontent.com/namibia/demo-joomla-3-component/master/demo_updateserver.xml', 'https://www.vdm.io/', '{\"language_options\":{\"activate\":\"0\",\"use_percentagelanguageadd\":\"1\",\"percentagelanguageadd\":\"50\"},\"joomla_component_headers\":{\"add_admin_component\":\"0\",\"admin_component\":\"\",\"power_admin_component\":[],\"add_site_component\":\"0\",\"site_component\":\"\",\"power_site_component\":[],\"add_admin_helper\":\"0\",\"admin_helper\":\"\",\"power_admin_helper\":[],\"add_site_helper\":\"0\",\"site_helper\":\"\",\"power_site_helper\":[]}}', 1, 63, '', 1, 10);

--
-- Dumping data for table `#__componentbuilder_joomla_plugin`
--

INSERT INTO `#__componentbuilder_joomla_plugin` (`id`, `add_head`, `add_php_method_uninstall`, `add_php_postflight_install`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_uninstall`, `add_php_preflight_update`, `add_php_script_construct`, `add_sales_server`, `add_sql`, `add_sql_uninstall`, `add_update_server`, `addreadme`, `class_extends`, `description`, `fields`, `guid`, `head`, `joomla_plugin_group`, `method_selection`, `main_class_code`, `name`, `php_method_uninstall`, `php_postflight_install`, `php_postflight_update`, `php_preflight_install`, `php_preflight_uninstall`, `php_preflight_update`, `php_script_construct`, `plugin_version`, `property_selection`, `readme`, `sales_server`, `sql`, `sql_uninstall`, `system_name`, `update_server`, `update_server_target`, `update_server_url`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(1, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 4, 'The plugin to fully integrate componentbuilder with the privacy suite of Joomla.', '{}', '518f7be7-140c-47d3-9fb2-b6717230e0fc', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1ByaXZhY3lQbHVnaW4nLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9wcml2YWN5L2hlbHBlcnMvcGx1Z2luLnBocCcpOw0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1ByaXZhY3lSZW1vdmFsU3RhdHVzJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fcHJpdmFjeS9oZWxwZXJzL3JlbW92YWwvc3RhdHVzLnBocCcpOw0KSkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcVXRpbGl0aWVzXEFycmF5SGVscGVyOw==', 10, '{\"method_selection0\":{\"method\":\"51\"},\"method_selection1\":{\"method\":\"52\"},\"method_selection2\":{\"method\":\"53\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wDQoJICovDQoJcHJvdGVjdGVkICAkYXBwOw0KDQoJLyoqDQoJICogRGF0YWJhc2Ugb2JqZWN0DQoJICoNCgkgKiBAdmFyICAgIERhdGFiYXNlRHJpdmVyDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRkYjsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUGVyZm9ybXMgdmFsaWRhdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcmVtb3ZlIGluZm9ybWF0aW9uIHJlcXVlc3QgY2FuIGJlIHByb2Nlc3NlZA0KCSAqDQoJICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQNCgkgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICAkdXNlciAgICAgVGhlIHVzZXIgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IGlmIGF2YWlsYWJsZQ0KCSAqDQoJICogQHJldHVybiAgUHJpdmFjeVJlbW92YWxTdGF0dXMNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblByaXZhY3lDYW5SZW1vdmVEYXRhKFByaXZhY3lUYWJsZVJlcXVlc3QgJHJlcXVlc3QsIEpVc2VyICR1c2VyID0gbnVsbCkNCgl7DQoJCSRzdGF0dXMgPSBuZXcgUHJpdmFjeVJlbW92YWxTdGF0dXM7DQoNCgkJLy8gVGhpcyBwbHVnaW4gb25seSBwcm9jZXNzZXMgZGF0YSBmb3IgcmVnaXN0ZXJlZCB1c2VyIGFjY291bnRzDQoJCWlmICghJHVzZXIpDQoJCXsNCgkJCXJldHVybiAkc3RhdHVzOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgdGhlIGhlbHBlciBtZXRob2QgaXMgc2V0IGluIHRoZSBjb21wb25lbnQNCgkJaWYgKG1ldGhvZF9leGlzdHMoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsICdvblByaXZhY3lDYW5SZW1vdmVEYXRhJykpDQoJCXsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6b25Qcml2YWN5Q2FuUmVtb3ZlRGF0YSgkdGhpcywgJHN0YXR1cywgJHJlcXVlc3QsICR1c2VyKTsNCgkJfQ0KDQoJCXJldHVybiAkc3RhdHVzOw0KCX0NCg0KCS8qKg0KCSAqIFByb2Nlc3NlcyBhbiBleHBvcnQgcmVxdWVzdCBmb3IgSm9vbWxhIGNvcmUgdXNlciBkYXRhDQoJICoNCgkgKiBAcGFyYW0gICBQcml2YWN5VGFibGVSZXF1ZXN0ICAkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZA0KCSAqIEBwYXJhbSAgIEpVc2VyICAgICAgICAgICAgICAgICR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlDQoJICoNCgkgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblByaXZhY3lFeHBvcnRSZXF1ZXN0KFByaXZhY3lUYWJsZVJlcXVlc3QgJHJlcXVlc3QsIEpVc2VyICR1c2VyID0gbnVsbCkNCgl7DQoJCSRkb21haW5zID0gYXJyYXkoKTsNCg0KCQkvLyBUaGlzIHBsdWdpbiBvbmx5IHByb2Nlc3NlcyBkYXRhIGZvciByZWdpc3RlcmVkIHVzZXIgYWNjb3VudHMNCgkJaWYgKCEkdXNlcikNCgkJew0KCQkJcmV0dXJuICRkb21haW5zOw0KCQl9DQoNCgkJLy8gY2hlY2sgaWYgdGhlIGhlbHBlciBtZXRob2QgaXMgc2V0IGluIHRoZSBjb21wb25lbnQNCgkJaWYgKG1ldGhvZF9leGlzdHMoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsICdvblByaXZhY3lFeHBvcnRSZXF1ZXN0JykpDQoJCXsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6b25Qcml2YWN5RXhwb3J0UmVxdWVzdCgkdGhpcywgJGRvbWFpbnMsICRyZXF1ZXN0LCAkdXNlcik7DQoJCX0NCg0KCQlyZXR1cm4gJGRvbWFpbnM7DQoJfQ0KDQoJLyoqDQoJICogUmVtb3ZlcyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdmUgaW5mb3JtYXRpb24gcmVxdWVzdA0KCSAqDQoJICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQNCgkgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICAkdXNlciAgICAgVGhlIHVzZXIgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IGlmIGF2YWlsYWJsZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUHJpdmFjeVJlbW92ZURhdGEoUHJpdmFjeVRhYmxlUmVxdWVzdCAkcmVxdWVzdCwgSlVzZXIgJHVzZXIgPSBudWxsKQ0KCXsNCgkJLy8gVGhpcyBwbHVnaW4gb25seSBwcm9jZXNzZXMgZGF0YSBmb3IgcmVnaXN0ZXJlZCB1c2VyIGFjY291bnRzDQoJCWlmICghJHVzZXIpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCS8vIGNoZWNrIGlmIHRoZSBoZWxwZXIgbWV0aG9kIGlzIHNldCBpbiB0aGUgY29tcG9uZW50DQoJCWlmIChtZXRob2RfZXhpc3RzKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCAnb25Qcml2YWN5UmVtb3ZlRGF0YScpKQ0KCQl7DQoJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6Om9uUHJpdmFjeVJlbW92ZURhdGEoJHRoaXMsICRyZXF1ZXN0LCAkdXNlcik7DQoJCX0NCgl9', '[[[Component]]]', 'Ly8gUEhQIE1ldGhvZCAodW5pbnN0YWxsKQ==', 'Ly8gUEhQIFBvc3RmbGlnaHQgKGluc3RhbGwp', 'Ly8gUEhQIFBvc3RmbGlnaHQgKHVwZGF0ZSk=', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', 'Ly8gUEhQIFByZWZsaWdodCAodW5pbnN0YWxsKQ==', 'Ly8gUEhQIFByZWZsaWdodCAodXBkYXRlKQ==', '', '1.0.1', '{\"property_selection0\":{\"property\":\"31\"},\"property_selection1\":{\"property\":\"32\"},\"property_selection2\":{\"property\":\"33\"}}', 'IyAjIyNQTFVHSU5fTkFNRSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIyMjREVTQ1JJUFRJT04jIyMNCg0KIyBCdWlsZCBEZXRhaWxzDQoNCisgKkNvbXBhbnkqOiBbIyMjQ09NUEFOWU5BTUUjIyNdKCMjI0FVVEhPUldFQlNJVEUjIyMpDQorICpBdXRob3IqOiBbIyMjQVVUSE9SIyMjXShtYWlsdG86IyMjQVVUSE9SRU1BSUwjIyMpDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw==', '', '', '', 'Global Privacy', '', 1, 'https://www.vdm.io/updates/componentbuilder_global_privacy.xml', '', 1, '2019-07-16 00:49:50', '2024-08-06 20:53:17', 30, '', 1),
(2, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields1\":{\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"plugin\",\"label\":\"Plugin\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields2\":{\"file\":\"admin_view\",\"fields_name\":\"params.privacy\",\"fieldset\":\"privacy\",\"label\":\"Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2603\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2605\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2606\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2607\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2608\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2611\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2612\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2613\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2614\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2615\",\"custom_value\":\"\"}}}}', 'a3e3ce4d-f6c1-4a92-bdc0-d7c61a0756c1', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZhY3Rvcnk7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KdXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw==', 3, '{\"method_selection0\":{\"method\":\"113\"},\"method_selection1\":{\"method\":\"12\"},\"method_selection2\":{\"method\":\"0\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQkJLy8gaWYgdGhlIGdsb2JhbCBwbHVnaW4gaXMgbm90IHNldCwgYWxsb3cgaXQgdG8gYmUgc2V0IGZyb20gdGhlIGFkbWluIHZpZXcNCgkJCWlmICgoJHBsdWdpbiA9ICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpID09IDApDQoJCQl7DQoJCQkJJGZvcm0tPmxvYWRGaWxlKCdjb25maWcnKTsNCgkJCQkvLyBtYWtlIHRoZSBwbHVnaW4gZmllbGQgcmVxdWlyZWQgKExBVEVSIHdoZW4gd2UgY2FuIGdpdmUgbW9yZSBpbmZvKQ0KCQkJCS8vJGZvcm0tPnNldEZpZWxkQXR0cmlidXRlKCdwbHVnaW4nLCAncmVxdWlyZWQnLCB0cnVlLCAncGFyYW1zLnByaXZhY3knKTsNCgkJCQkvLyRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgncGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQkJLy8kZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ25vdGVfc2VsZWN0X3ByaXZhY3lfcGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQl9DQoJCQkvLyB1cGRhdGUgYWxsIGVkaXRvcnMgdG8gdXNlIHRoaXMgY29tcG9uZW50cyBnbG9iYWwgZWRpdG9yDQoJCQkkZ2xvYmFsX2VkaXRvciA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdlZGl0b3InLCAnbm9uZScpOw0KCQkJLy8gc2V0IHRoZSBmaWVsZCBlZGl0b3IgdmFsdWUgKHdpdGggbm9uZSBhcyBmYWxsYmFjaykNCgkJCSRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgnY3VzdG9tX2xpbmsnLCAnZWRpdG9yJywgJGdsb2JhbF9lZGl0b3IgLiAnfG5vbmUnLCAncGFyYW1zLnByaXZhY3knKTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkgKiBUaGlzIGlzIGFuIGV2ZW50IHRoYXQgaXMgY2FsbGVkIHJpZ2h0IGJlZm9yZSB0aGUgY29udGVudA0KCSAqIGlzIHNhdmVkIGludG8gdGhlIGRhdGFiYXNlLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgcGFzc2VkIHRvIHRoZSBwbHVnaW4gKGFkZGVkIGluIDEuNikuDQoJICogQHBhcmFtICAgb2JqZWN0ICAkYXJ0aWNsZSAgQSBKVGFibGVDb250ZW50IG9iamVjdC4NCgkgKiBAcGFyYW0gICBib29sICAgICRpc05ldyAgICBJZiB0aGUgY29udGVudCBpcyBqdXN0IGFib3V0IHRvIGJlIGNyZWF0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkLg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudEJlZm9yZVNhdmUoJGNvbnRleHQsICRpdGVtLCAkaXNOZXcsICRkYXRhID0gYXJyYXkoKSkNCgl7DQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uYWRtaW5fdmlldycgPT09ICRjb250ZXh0KQ0KCQl7DQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGpzb24NCgkJCWlmIChTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+cGFyYW1zKSkNCgkJCXsNCgkJCQkvLyBDb252ZXJ0IHRoZSBwYXJhbXMgZmllbGQgdG8gYW4gYXJyYXkuDQoJCQkJJHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRyZWdpc3RyeS0+bG9hZFN0cmluZygkaXRlbS0+cGFyYW1zKTsNCgkJCQkkaXRlbS0+cGFyYW1zID0gJHJlZ2lzdHJ5LT50b0FycmF5KCk7DQoJCQl9DQoJCQkvLyBjaGVjayBpZiB0aGUgcGx1Z2luIHdhcyBzZXQNCgkJCWlmIChpc3NldCgkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSkgJiYgJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10gPiAwKQ0KCQkJew0KCQkJCS8vIGZpcnN0IHNldCBuZXcgcGFyYW1zDQoJCQkJJHRoaXMtPnBhcmFtcy0+c2V0KCdwbHVnaW4nLCAoaW50KSAkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSk7DQoJCQkJLy8gdXBkYXRlIHRoZSBnbG9iYWwgcGx1Z2luIHNldHRpbmdzDQoJCQkJJGV4dGVuc2lvblRhYmxlID0gbmV3ICBcSnRhYmxlRXh0ZW5zaW9uKEZhY3Rvcnk6OmdldERibygpKTsNCgkJCQkkZXh0ZW5zaW9uVGFibGUtPmxvYWQoYXJyYXkoJ2VsZW1lbnQnID0+ICdbW1tjb21wb25lbnRdXV1wcml2YWN5dGFicycpKTsNCgkJCQkvLyBTYXZlIHRoZSBjaGFuZ2UNCgkJCQkkZXh0ZW5zaW9uVGFibGUtPnNldCgncGFyYW1zJywgJHRoaXMtPnBhcmFtcy0+dG9TdHJpbmcoKSk7DQoJCQkJJGV4dGVuc2lvblRhYmxlLT5zYXZlKChhcnJheSkgJGV4dGVuc2lvblRhYmxlKTsNCgkJCQkvLyBhbmQgcmVtb3ZlIHRoZSB2YWx1ZSBmcm9tIHRoZSBwYXJhbXMNCgkJCQl1bnNldCgkaXRlbS0+cGFyYW1zWydwbHVnaW4nXSk7DQoJCQkJLy8gY2xlYXIgdGhlIHBsdWdpbiBjYWNoZQ0KCQkJCSR0aGlzLT5jbGVhbkNhY2hlKCdjb21fcGx1Z2lucycsIDApOw0KCQkJCSR0aGlzLT5jbGVhbkNhY2hlKCdjb21fcGx1Z2lucycsIDEpOw0KCQkJfQ0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhbiBhcnJheQ0KCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5wYXJhbXMpKQ0KCQkJew0KCQkJCS8vIENvbnZlcnQgdGhlIHBhcmFtcyBmaWVsZCB0byBhIHN0cmluZy4NCgkJCQkkcGFyYW1zID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRwYXJhbXMtPmxvYWRBcnJheSgkaXRlbS0+cGFyYW1zKTsNCgkJCQkkaXRlbS0+cGFyYW1zID0gKHN0cmluZykgJHBhcmFtczsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIENsZWFuIHRoZSBjYWNoZQ0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGdyb3VwICAgICAgVGhlIGNhY2hlIGdyb3VwDQoJICogQHBhcmFtICAgaW50ZWdlciAgJGNsaWVudF9pZCAgVGhlIElEIG9mIHRoZSBjbGllbnQNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDMuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBjbGVhbkNhY2hlKCRncm91cCA9IG51bGwsICRjbGllbnRfaWQgPSAwKQ0KCXsNCgkJJGNvbmYgPSBGYWN0b3J5OjpnZXRDb25maWcoKTsNCg0KCQkkb3B0aW9ucyA9IGFycmF5KA0KCQkJJ2RlZmF1bHRncm91cCcgPT4gJGdyb3VwID86IChpc3NldCgkdGhpcy0+b3B0aW9uKSA/ICR0aGlzLT5vcHRpb24gOiBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5pbnB1dC0+Z2V0KCdvcHRpb24nKSksDQoJCQknY2FjaGViYXNlJyA9PiAkY2xpZW50X2lkID8gSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY2FjaGUnIDogJGNvbmYtPmdldCgnY2FjaGVfcGF0aCcsIEpQQVRIX1NJVEUgLiAnL2NhY2hlJyksDQoJCQkncmVzdWx0JyA9PiB0cnVlLA0KCQkpOw0KDQoJCXRyeQ0KCQl7DQoJCQkvKiogQHZhciBcSkNhY2hlQ29udHJvbGxlckNhbGxiYWNrICRjYWNoZSAqLw0KCQkJJGNhY2hlID0gXEpDYWNoZTo6Z2V0SW5zdGFuY2UoJ2NhbGxiYWNrJywgJG9wdGlvbnMpOw0KCQkJJGNhY2hlLT5jbGVhbigpOw0KCQl9DQoJCWNhdGNoIChcSkNhY2hlRXhjZXB0aW9uICRleGNlcHRpb24pDQoJCXsNCgkJCSRvcHRpb25zWydyZXN1bHQnXSA9IGZhbHNlOw0KCQl9DQoNCgkJLy8gVHJpZ2dlciB0aGUgb25Db250ZW50Q2xlYW5DYWNoZSBldmVudC4NCgkJXEpFdmVudERpc3BhdGNoZXI6OmdldEluc3RhbmNlKCktPnRyaWdnZXIoJ29uQ29udGVudENsZWFuQ2FjaGUnLCAkb3B0aW9ucyk7DQoJfQ==', '[[[Component]]] Privacy Tabs', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.3', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Tabs', '', 1, '', '', 1, '2019-08-17 01:17:45', '2024-08-06 20:53:40', 98, '', 2),
(3, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to link your admin views to the privacy suite of Joomla via our other Content - [[[Component]]] Privacy Tabs plugin.', '{}', 'b49dddae-2195-4d2a-8f12-69032852a104', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcUGxhY2VmaXg7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xJbmRlbnQ7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xMaW5lOw==', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"70\"},\"method_selection3\":{\"method\":\"119\"},\"method_selection4\":{\"method\":\"120\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogR2xvYmFsIHN3aXRjaCB0byBzZWUgaWYgY29tcG9uZW50IGhhdmUgbmVlZCBvZiBwcml2YWN5IHBsdWdpbiB0byBiZSBsb2FkZWQuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbG9hZFByaXZhY3kgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBWaWV3cyBMaW5rZWQgdG8gSm9vbWxhIFVzZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFjdGl2ZVZpZXdzID0gW107DQoNCgkvKioNCgkgKiBUaGUgVmlld3MgcGVybWlzc2lvbiBmaWVsZHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkcGVybWlzc2lvbkZpZWxkcyA9IFtdOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgcHJpdmFjeQ0KCQkkdmlldy0+cGFyYW1zID0gKGlzc2V0KCR2aWV3LT5wYXJhbXMpICYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpKSA/IGpzb25fZGVjb2RlKCR2aWV3LT5wYXJhbXMsIHRydWUpIDogJHZpZXctPnBhcmFtczsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddKSAmJiANCgkJCWlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYWN0aXZhdGUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhY3RpdmF0ZSddID09IDEpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBwcml2YWN5IHBsdWdpbg0KCQkJJHRoaXMtPmxvYWRQcml2YWN5ID0gdHJ1ZTsNCgkJCS8vIGxvYWQgdGhlIGFkbWluIHZpZXcgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0gPSAkdmlldzsNCgkJCS8vIGFkZCBwZXJtaXNzaW9ucw0KCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0gKGlzc2V0KCR2aWV3LT5hZGRwZXJtaXNzaW9ucykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmFkZHBlcm1pc3Npb25zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIHRydWUpIDogbnVsbDsNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+YWRkcGVybWlzc2lvbnMpKQ0KCQkJew0KCQkJCSR2aWV3LT5hZGRwZXJtaXNzaW9ucyA9IGFycmF5X3ZhbHVlcygkdmlldy0+YWRkcGVybWlzc2lvbnMpOw0KCQkJCS8vIGFkZCB0aGUgbmV3IHBlcm1pc3Npb25zDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBhcnJheSgnYWN0aW9uJyA9PiAndmlldy5wcml2YWN5LmRlbGV0ZScsICdpbXBsZW1lbnRhdGlvbicgPT4gMywgJ3RpdGxlJyA9PiAkdmlldy0+bmFtZV9saXN0IC4gJyBQcml2YWN5IERlbGV0ZScsICdkZXNjcmlwdGlvbicgPT4gJyBBbGxvd3MgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAgdG8gcmVtb3ZlIHRoZWlyIHBlcnNvbmFsIGRhdGEgaW4gJyAuICR2aWV3LT5uYW1lX2xpc3QgLiAnIHZpYSB0aGUgSm9vbWxhIHByaXZhY3kgc3VpdGUuJyk7DQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBhcnJheSgnYWN0aW9uJyA9PiAndmlldy5wcml2YWN5LmFjY2VzcycsICdpbXBsZW1lbnRhdGlvbicgPT4gMywgJ3RpdGxlJyA9PiAkdmlldy0+bmFtZV9saXN0IC4gJyBQcml2YWN5IEFjY2VzcycsICdkZXNjcmlwdGlvbicgPT4gJyBBbGxvd3MgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAgdG8gYWNjZXNzIHRoZWlyIHBlcnNvbmFsIGRhdGEgaW4gJyAuICR2aWV3LT5uYW1lX2xpc3QgLiAnIHZpYSB0aGUgSm9vbWxhIHByaXZhY3kgc3VpdGUuJyk7DQoJCQkJLy8gY29udmVydCBiYWNrIHRvIGpzb24NCgkJCQkkdmlldy0+YWRkcGVybWlzc2lvbnMgPSBqc29uX2VuY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIEpTT05fRk9SQ0VfT0JKRUNUKTsNCgkJCX0NCgkJCS8vIGFkZCBwbGFjZWhvbGRlcnMgdG8gdmlldyBpZiBub3QgYWxyZWFkeSBzZXQNCgkJCWlmICghaXNzZXQoJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0tPnBsYWNlaG9sZGVycykpDQoJCQl7DQoJCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0tPnBsYWNlaG9sZGVycyA9IENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5hY3RpdmU7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwcml2YWN5IHBsdWdpbiBsb2FkZWQNCgkJaWYgKCR0aGlzLT5sb2FkUHJpdmFjeSkNCgkJew0KCQkJJHBsdWdpbiA9IEpQbHVnaW5IZWxwZXI6OmdldFBsdWdpbignY29udGVudCcsICdbW1tjb21wb25lbnRdXV1wcml2YWN5dGFicycpOw0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBqc29uDQoJCQlpZiAoaXNzZXQoJHBsdWdpbi0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGx1Z2luLT5wYXJhbXMpKQ0KCQkJew0KCQkJCS8vIENvbnZlcnQgdGhlIHBhcmFtcyBmaWVsZCB0byBhbiBhcnJheS4NCgkJCQkkcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnk7DQoJCQkJJHJlZ2lzdHJ5LT5sb2FkU3RyaW5nKCRwbHVnaW4tPnBhcmFtcyk7DQoJCQkJJHBsdWdpbi0+cGFyYW1zID0gJHJlZ2lzdHJ5LT50b0FycmF5KCk7DQoJCQl9DQoJCQkvLyBub3cgZ2V0IHRoZSBwbHVnaW4gSUQgaWYgc2V0DQoJCQlpZiAoaXNzZXQoJHBsdWdpbi0+cGFyYW1zWydwbHVnaW4nXSkgJiYgJHBsdWdpbi0+cGFyYW1zWydwbHVnaW4nXSA+IDApDQoJCQl7DQoJCQkJLy8gaWYgbGlua2VkIGl0IHdpbGwgb25seSBsb2FkIGl0IG9uY2UNCgkJCQlDRmFjdG9yeTo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCUZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCktPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1lvdSBkbyBub3QgaGF2ZSBhIGdsb2JhbCBwcml2YWN5IHBsdWdpbiBzZXR1cCwgc28gdGhlIGludGVncmF0aW9uIHdpdGggSm9vbWxhIHByaXZhY3kgc3VpdGUgY291bGQgbm90IGJlIGJ1aWxkLicpLCAnV2FybmluZycpOw0KCQkJCSR0aGlzLT5sb2FkUHJpdmFjeT0gZmFsc2U7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgVXBkYXRlIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZVVwZGF0ZUZpbGVzKCRjb21waWxlcikNCgl7DQoJCS8vIGNoZWNrIGlmIHByaXZhY3kgaXMgdG8gYmUgbG9hZGVkDQoJCWlmICgkdGhpcy0+bG9hZFByaXZhY3kgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZVZpZXdzKSkNCgkJew0KCQkJLy8gZ2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQkkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IENGYWN0b3J5OjpfKCdDb25maWcnKS0+Z2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCBmYWxzZSk7DQoJCQkkZXhwb3J0VGV4dE9ubHkgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnZXhwb3J0X3RleHRfb25seScsIDEpOw0KDQoJCQkvLyBsb2FkIHRoZSBnZXRQcml2YWN5RXhwb3J0IGZ1bmN0aW9ucw0KCQkJZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZVZpZXdzIGFzICRpZCA9PiAmJHZpZXcpDQoJCQl7DQoJCQkJLy8gc2V0IHBlcm1pc3Npb25zIGJhc2VkIG9uIHZpZXcNCgkJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydwZXJtaXNzaW9ucyddKSkNCgkJCQl7DQoJCQkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydwZXJtaXNzaW9ucyddKTsNCgkJCQl9DQoNCgkJCQkvLyBhbGxvdyB0ZXh0IG9ubHkgZXhwb3J0DQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAxKTsNCg0KCQkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkJLy8gbG9hZCB0aGUgZnVuY3Rpb24NCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk11bHRpJyktPmFkZCgkdmlld05hbWVfbGlzdCAuICd8TU9ERUxFWFBPUlRNRVRIT0QnLA0KCQkJCQkkY29tcGlsZXItPnNldEdldEl0ZW1zTW9kZWxNZXRob2QoDQoJCQkJCQkkdmlld05hbWVfc2luZ2xlLA0KCQkJCQkJJHZpZXdOYW1lX2xpc3QsDQoJCQkJCQlbDQoJCQkJCQkJJ2Z1bmN0aW9uTmFtZScgPT4gJ2dldFByaXZhY3lFeHBvcnQnLA0KCQkJCQkJCSdkb2NEZXNjJyA9PiAnTWV0aG9kIHRvIGdldCBkYXRhIGR1cmluZyBhbiBleHBvcnQgcmVxdWVzdC4nLA0KCQkJCQkJCSd0eXBlJyA9PiAncHJpdmFjeScNCgkJCQkJCV0NCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gZ2V0IHRoZSBwZXJtaXNzaW9ucyBidWlsZGluZyB2YWx1ZXMgZm9yIGxhdGVyIGlmIG5lZWRlZA0KCQkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgZmFsc2UpICYmDQoJCQkJCWlzc2V0KCRjb21waWxlci0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSkgJiYNCgkJCQkJU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdID0gJGNvbXBpbGVyLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gc2V0IGNvbXBpbGVyIGRlZmF1bHRzDQoJCQlDRmFjdG9yeTo6XygnQ29uZmlnJyktPnNldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgJHN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAkZXhwb3J0VGV4dE9ubHkpOw0KDQoJCQkvLyBhZGQgaGVscGVyIGNsYXNzZXMNCgkJCSRoZWxwZXJfc3RyaW5ncyA9IFsnQ1VTVE9NX0hFTFBFUl9TQ1JJUFQnLCAnU0lURV9DVVNUT01fSEVMUEVSX1NDUklQVCcsICdCT1RIX0NVU1RPTV9IRUxQRVJfU0NSSVBUJ107DQoJCQkkcHJpdmFjeV9ldmVudHMgPSBbDQoJCQkJJ1ByaXZhY3lDYW5SZW1vdmVEYXRhJyA9PiB0cnVlLA0KCQkJCSdQcml2YWN5RXhwb3J0UmVxdWVzdCcgPT4gdHJ1ZSwNCgkJCQknUHJpdmFjeVJlbW92ZURhdGEnID0+IHRydWUNCgkJCV07DQoNCgkJCWZvcmVhY2ggKCRoZWxwZXJfc3RyaW5ncyBhcyAkaGVscGVyKQ0KCQkJew0KCQkJCWlmICgoJGhlbHBlcl9jb250ZW50ID0gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+Z2V0KCRoZWxwZXIpKSAhPT0gbnVsbCAmJg0KCQkJCQlTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaGVscGVyX2NvbnRlbnQpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJHByaXZhY3lfZXZlbnRzIGFzICRwcml2YWN5X2V2ZW50ID0+ICYkYWRkKQ0KCQkJCQl7DQoJCQkJCQkvLyBjaGVjayBpZiB0aGUgZXZlbiBpcyBvdmVyd3JpdGVuDQoJCQkJCQlpZiAoc3RycG9zKCRoZWxwZXJfY29udGVudCwgJ3B1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb24nIC4gJHByaXZhY3lfZXZlbnQgLiAnKCcpICE9PSBmYWxzZSkNCgkJCQkJCXsNCgkJCQkJCQkkYWRkID0gZmFsc2U7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIGFkZCB0aGUgZXZlbnRzIHN0aWxsIG5lZWRlZA0KCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCdCT1RIX0NVU1RPTV9IRUxQRVJfU0NSSVBUJywNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkdGhpcy0+Z2V0SGVscGVyTWV0aG9kKCRwcml2YWN5X2V2ZW50cykpDQoJCQkpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZUFycmF5KSkNCgkJew0KCQkJZm9yZWFjaCgkdGhpcy0+bGFuZ3VhZ2VBcnJheSBhcyAka2V5ID0+ICRzdHJpbmcpDQoJCQl7DQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0xhbmd1YWdlJyktPnNldCgnc2l0ZScsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBIZWxwZXIgbWV0aG9kcyBuZWVkZWQgdG8gaW50ZWdyYXRlIHdpdGggSm9vbWxhIFByaXZhY3kgU3VpdGUNCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkaGVscGVyTWV0aG9kcyAgVGhlIGhlbHBlciBtZXRob2RzIHN0cmluZw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhlbHBlck1ldGhvZCgmJGV2ZW50cykNCgl7DQoJCSRtZXRob2RzID0gJyc7DQoJCWZvcmVhY2ggKCRldmVudHMgYXMgJGV2ZW50ID0+ICRhZGQpDQoJCXsNCgkJCS8vIGNoZWNrIGlmIHRoZSBldmVuIHNob3VsZCBiZSBhZGRlZA0KCQkJaWYgKCRhZGQpDQoJCQl7DQoJCQkJLy8gYWRkIHRoZSBldmVudA0KCQkJCSR0aGlzLT57J3NldCcuJGV2ZW50fSgkbWV0aG9kcyk7DQoJCQl9DQoJCX0NCgkJLy8gb25seSBhZGQgaGVhZGVyIGlmIHRoZXJlIHdhcyBldmVudHMgYWRkZWQNCgkJaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRtZXRob2RzKSkNCgkJew0KCQkJJG1ldGhvZHMgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8PDw9PT0gUHJpdmFjeSBpbnRlZ3JhdGlvbiB3aXRoIEpvb21sYSBQcml2YWN5IHN1aXRlID09PT4+PiIgLiBQSFBfRU9MIC4gJG1ldGhvZHM7DQoJCX0NCg0KCQlyZXR1cm4gJG1ldGhvZHM7DQoJfQ0KDQoJLyoqDQoJICogU2V0IFByaXZhY3kgQ2FuIFJlbW92ZSBEYXRhDQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUNhblJlbW92ZURhdGEoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIFBlcmZvcm1zIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHJlbW92ZSBpbmZvcm1hdGlvbiByZXF1ZXN0IGNhbiBiZSBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5UGx1Z2luICBcJHBsdWdpbiAgVGhlIHBsdWdpbiBiZWluZyBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lSZW1vdmFsU3RhdHVzICBcJHN0YXR1cyAgVGhlIHN0YXR1cyBiZWluZyBzZXQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lUYWJsZVJlcXVlc3QgIFwkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgSlVzZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHJldHVybiAgUHJpdmFjeVJlbW92YWxTdGF0dXMiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHVibGljIHN0YXRpYyBmdW5jdGlvbiBvblByaXZhY3lDYW5SZW1vdmVEYXRhKCZcJHBsdWdpbiwgJlwkc3RhdHVzLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQnVja2V0IHRvIGdldCBhbGwgcmVhc29ucyB3aHkgcmVtb3ZhbCBub3QgYWxsb3dlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRyZWFzb25zID0gYXJyYXkoKTsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ZSAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUuZGVsZXRlJykNCgkJCQkuICInLCAnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJykgJiYgIVwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIicpKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkJLy8gc2V0IGxhbmd1YWdlIGtleQ0KCQkJJGxhbmdfa2V5ID0gJHZpZXctPnBsYWNlaG9sZGVyc1tQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKV0gLiAnX1BSSVZBQ1lfQ0FOVF9SRU1PVkVfJyAuICR2aWV3LT5wbGFjZWhvbGRlcnNbUGxhY2VmaXg6Ol8oIlZJRVdTIildOw0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmdfa2V5XSA9ICJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byByZW1vdmUvZGVsZXRlICIuICR2aWV3LT5uYW1lX2xpc3QgLiAiLiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcmVhc29uc1tdID0gSlRlIiAuICJ4dDo6XygnIiAuICRsYW5nX2tleSAuICInKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCS8vIHNldCBsYW5ndWFnZSBrZXkNCgkJCSRsYW5nX2tleSA9ICR2aWV3LT5wbGFjZWhvbGRlcnNbUGxhY2VmaXg6Ol8oIkxBTkdfUFJFRklYIildIC4gJ19QUklWQUNZX0NBTlRfUkVNT1ZFX0NPTlRBQ1RfU1VQUE9SVCc7DQoJCX0NCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiBhbnkgcmVhc29ucyB3ZXJlIGZvdW5kIG5vdCB0byBhbGxvdyByZW1vdmFsIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoU3VwZXJfXyIuIl8wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRyZWFzb25zKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkc3RhdHVzLT5jYW5SZW1vdmUgPSBmYWxzZTsiOw0KCQkvLyBzZXQgbGFuZ3VhZ2Ugc3RyaW5nDQoJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nX2tleV0gPSAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBmb3IgbW9yZSBkZXRhaWxzLic7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRzdGF0dXMtPnJlYXNvbiA9IGltcGxvZGUoJyAnIC4gUEhQX0VPTCwgXCRyZWFzb25zKSAuICcgJyAuIFBIUF9FT0wgLiBKVGUiIC4gInh0OjpfKCciIC4gJGxhbmdfa2V5IC4gIicpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkc3RhdHVzOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCX0NCg0KCS8qKg0KCSAqIFNldCBQcml2YWN5IEV4cG9ydCBSZXF1ZXN0DQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUV4cG9ydFJlcXVlc3QoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIFByb2Nlc3NlcyBhbiBleHBvcnQgcmVxdWVzdCBmb3IgSm9vbWxhIGNvcmUgdXNlciBkYXRhIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVBsdWdpbiAgXCRwbHVnaW4gIFRoZSBwbHVnaW4gYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBEb21haW5BcnJheSAgXCRkb21haW5zICBUaGUgYXJyYXkgb2YgZG9tYWlucyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgXCRyZXF1ZXN0ICBUaGUgcmVxdWVzdCByZWNvcmQgYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBKVXNlciAgICAgICAgICAgICAgICBcJHVzZXIgICAgIFRoZSB1c2VyIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCBpZiBhdmFpbGFibGUiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHVibGljIHN0YXRpYyBmdW5jdGlvbiBvblByaXZhY3lFeHBvcnRSZXF1ZXN0KCZcJHBsdWdpbiwgJlwkZG9tYWlucywgJlwkcmVxdWVzdCwgJlwkdXNlcikiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJJHZpZXdOYW1lX2xpc3QgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX2xpc3QpOw0KCQkJLy8gc2V0IHZpZXcgc2luZ2xlIG5hbWUNCgkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGFjY2VzcyAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEdsb2JhbCgkdmlld05hbWVfc2luZ2xlLCAnY29yZS5hY2Nlc3MnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRHbG9iYWwoJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUucHJpdmFjeS5hY2Nlc3MnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0ICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZG9tYWluc1tdID0gc2VsZjo6Y3JlYXRlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRvbWFpbihcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJfQ0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInJldHVybiBcJGRvbWFpbnM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJ9IiAuIFBIUF9FT0w7DQoNCgkJZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZVZpZXdzIGFzICR2aWV3KQ0KCQl7DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIENyZWF0ZSB0aGUgZG9tYWluIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZTsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBKVGFibGVVc2VyICBcJHVzZXIgIFRoZSBKVGFibGVVc2VyIG9iamVjdCB0byBwcm9jZXNzIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRG9tYWluKCZcJHBsdWdpbiwgJlwkdXNlcikiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY3JlYXRlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiBkb21haW4iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJGRvbWFpbiA9IHNlbGY6OmNyZWF0ZURvbWFpbignIiAuICR2aWV3TmFtZV9zaW5nbGUgLiAiJywgJyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIl9kYXRhJyk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGRhdGFiYXNlIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW0gaWRzIG9mICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0aGF0IGJlbG9uZyB0byB0aGlzIHVzZXIiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICItPnNlbGVjdCgnaWQnKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi0+ZnJvbShcJGRiLT5xdW90ZU5hbWUoJyNfXyIgLiBQbGFjZWZpeDo6XygnY29tcG9uZW50JykgLiAnXycgLiAkdmlld05hbWVfc2luZ2xlIC4gIicpKTsiOw0KCQkJLy8gZ2V0IHZpYSBjdXN0b20gc2NyaXB0DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAzKQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCBhcnJheV92YWx1ZXMoJHZpZXctPnBsYWNlaG9sZGVycyksICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnY3VzdG9tX2xpbmsnXSk7DQoJCQl9DQoJCQkvLyBqdXN0IGFub3RoZXIgZmllbGQNCgkJCWVsc2VpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAyICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnb3RoZXJfdXNlcl9maWVsZCddKSkNCgkJCXsNCgkJCQkvLyBnZXQgdGhlIGZpZWxkIG5hbWUNCgkJCQlpZiAoKCRmaWVsZF9uYW1lID0gJHRoaXMtPmdldEZpZWxkTmFtZSgkdmlldy0+ZmllbGRzLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+d2hlcmUoXCRkYi0+cXVvdGVOYW1lKCciIC4gJGZpZWxkX25hbWUgLiAiJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKFwkdXNlci0+aWQpKTsiOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkvLyBnaXZlIGEgd2FybmluZyBtZXNzYWdlIChUT0RPKQ0KDQoJCQkJCS8vIHN0b3AgYW55IGZyb20gbG9hZGluZw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiID09PT0gRVJST1IgPT09PT0gRVJST1IgPT09PT09IChmaWVsZCBuYW1lIG5vdCBmb3VuZCkiOw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPSAtMic7IC8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIDwtLSB0aGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGFueSB2YWx1ZS4gQ2hlY2sgeW91ciBbb3RoZXIgdXNlciBmaWVsZF0gc2VsZWN0ZWQgaW4gdGhlIGFkbWluIHZpZXcgcHJpdmFjeSB0YWIuIjsNCgkJCQl9DQoJCQl9DQoJCQkvLyBnZXQgYmFzZWQgb24gY3JlYXRlZCBieQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+d2hlcmUoXCRkYi0+cXVvdGVOYW1lKCdjcmVhdGVkX2J5JykgLiAnID0gJyAuIFwkZGItPnF1b3RlKFwkdXNlci0+aWQpKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW1zIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcGtzID0gXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSktPmxvYWRDb2x1bW4oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiBtb2RlbCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkbW9kZWwgPSBzZWxmOjpnZXRNb2RlbCgnIiAuICR2aWV3TmFtZV9saXN0IC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0IGFsbCBpdGVtIGRldGFpbHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbXMgPSBcJG1vZGVsLT5nZXRQcml2YWN5RXhwb3J0KFwkcGtzLCBcJHVzZXIpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGNoZWNrIGlmIHdlIGhhdmUgaXRlbXMgc2luY2UgcGVybWlzc2lvbnMgY291bGQgYmxvY2sgdGhlIHJlcXVlc3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoU3VwZXJfXyIuIl8wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRpdGVtcykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFJlbW92ZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkZWZhdWx0IGNvbHVtbnMiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJmb3JlYWNoIChhcnJheSgncGFyYW1zJywgJ2Fzc2V0X2lkJywgJ2NoZWNrZWRfb3V0JywgJ2NoZWNrZWRfb3V0X3RpbWUnLCAnY3JlYXRlZCcsICdjcmVhdGVkX2J5JywgJ21vZGlmaWVkJywgJ21vZGlmaWVkX2J5JywgJ3B1Ymxpc2hlZCcsICdvcmRlcmluZycsICdhY2Nlc3MnLCAndmVyc2lvbicsICdoaXRzJykgYXMgXCRjb2x1bW4pIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkaXRlbXMgPSBBcnJheUhlbHBlcjo6ZHJvcENvbHVtbihcJGl0ZW1zLCBcJGNvbHVtbik7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGxvYWQgdGhlIGl0ZW1zIGludG8gdGhlIGRvbWFpbiBvYmplY3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJmb3JlYWNoIChcJGl0ZW1zIGFzIFwkaXRlbSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkb21haW4tPmFkZEl0ZW0oc2VsZjo6Y3JlYXRlSXRlbUZyb21BcnJheShcJGl0ZW0sIFwkaXRlbVsnaWQnXSkpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkZG9tYWluOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgkJfQ0KCQkvLyB3ZSBtdXN0IGFkZCB0aGVzZSBoZWxwZXIgbWV0aG9kcw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQ3JlYXRlIGEgbmV3IGRvbWFpbiBvYmplY3QiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBzdHJpbmcgIFwkbmFtZSAgICAgICAgIFRoZSBkb21haW4ncyBuYW1lIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcGFyYW0gICBzdHJpbmcgIFwkZGVzY3JpcHRpb24gIFRoZSBkb21haW4ncyBkZXNjcmlwdGlvbiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEByZXR1cm4gIFByaXZhY3lFeHBvcnREb21haW4iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAc2luY2UgICAzLjkuMCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURvbWFpbihcJG5hbWUsIFwkZGVzY3JpcHRpb24gPSAnJykiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZG9tYWluICAgICAgICAgICAgICA9IG5ldyBQcml2YWN5RXhwb3J0RG9tYWluOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkb21haW4tPm5hbWUgICAgICAgID0gXCRuYW1lOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkb21haW4tPmRlc2NyaXB0aW9uID0gXCRkZXNjcmlwdGlvbjsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInJldHVybiBcJGRvbWFpbjsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQ3JlYXRlIGFuIGl0ZW0gb2JqZWN0IGZvciBhbiBhcnJheSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAgXCRkYXRhICAgIFRoZSBhcnJheSBkYXRhIHRvIGNvbnZlcnQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIGludGVnZXJ8bnVsbCAgXCRpdGVtSWQgIFRoZSBJRCBvZiB0aGlzIGl0ZW0iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0SXRlbSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBzaW5jZSAgIDMuOS4wIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSXRlbUZyb21BcnJheShhcnJheSBcJGRhdGEsIFwkaXRlbUlkID0gbnVsbCkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbSA9IG5ldyBQcml2YWN5RXhwb3J0SXRlbTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkaXRlbS0+aWQgPSBcJGl0ZW1JZDsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImZvcmVhY2ggKFwkZGF0YSBhcyBcJGtleSA9PiBcJHZhbHVlKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKGlzX29iamVjdChcJHZhbHVlKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdmFsdWUgPSAoYXJyYXkpIFwkdmFsdWU7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoaXNfYXJyYXkoXCR2YWx1ZSkpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJHZhbHVlID0gcHJpbnRfcihcJHZhbHVlLCB0cnVlKTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZmllbGQgICAgICAgID0gbmV3IFByaXZhY3lFeHBvcnRGaWVsZDsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZmllbGQtPm5hbWUgID0gXCRrZXk7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGZpZWxkLT52YWx1ZSA9IFwkdmFsdWU7IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGl0ZW0tPmFkZEZpZWxkKFwkZmllbGQpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAicmV0dXJuIFwkaXRlbTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGZpZWxkIG5hbWUNCgkgKiANCgkgKiBAcGFyYW0gICBhcnJheSAgICRmaWVsZHMgIFRoZSBmaWVsZHMgYXJyYXkNCgkgKiBAcGFyYW0gICBpbnQgICAgICAgJGlkICAgICAgIFRoZSBmaWVsZCBpZA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZyAgICBUaGUgZmllbGQgbmFtZQ0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWVsZE5hbWUoJiRmaWVsZHMsICRpZCkNCgl7DQoJCWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkKQ0KCQl7DQoJCQlpZiAoJGZpZWxkWydmaWVsZCddID09ICRpZCkNCgkJCXsNCgkJCQlyZXR1cm4gJGZpZWxkWydiYXNlX25hbWUnXTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogU2V0IFByaXZhY3kgUmVtb3ZlIERhdGENCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkbWV0aG9kcyAgVGhlIG1ldGhvZHMgc3RyaW5nDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRQcml2YWN5UmVtb3ZlRGF0YSgmJG1ldGhvZHMpDQoJew0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogUmVtb3ZlcyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdmUgaW5mb3JtYXRpb24gcmVxdWVzdCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lUYWJsZVJlcXVlc3QgIFwkcmVxdWVzdCAgVGhlIHJlcXVlc3QgcmVjb3JkIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHBhcmFtICAgSlVzZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogQHJldHVybiAgdm9pZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICovIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICJwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uUHJpdmFjeVJlbW92ZURhdGEoJlwkcGx1Z2luLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHRoZSBhbm9ueW1pemUgc3dpdGNoDQoJCQkkYW5vbnltaXplID0gZmFsc2U7DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemUnXSA9PSAxICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplX2ZpZWxkcyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSwgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJGFub255bWl6ZSA9IHRydWU7DQoJCQl9DQoJCQkvLyBzZXQgdmlldyBsaXN0IG5hbWUNCgkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCS8vIHNldCB2aWV3IHNpbmdsZSBuYW1lDQoJCQkkdmlld05hbWVfc2luZ2xlID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9zaW5nbGUpOw0KCQkJLy8gbG9hZCB0aGUgY2FuRG8gZnJvbSBnZXRBY3Rpb25zIGhlbHBlciBtZXRob2QNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBkZWxldCAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCS8vIHNldCB0aGUgaWYgc3RhdGVtZW50IGJhc2VkIG9uIHRoZSBwZXJtaXNzaW9uIGJ1aWxkZXINCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBDRmFjdG9yeTo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUucHJpdmFjeS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBBbm9ueW1pemUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJzZWxmOjphbm9ueW1pemUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YShcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGp1c3QgZHVtcCwgZGVsZXRlIHRoZSByb3dzDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBSZW1vdmUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJzZWxmOjpyZW1vdmUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YShcJHBsdWdpbiwgXCR1c2VyKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJfQ0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCg0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB0aGUgYW5vbnltaXplIHN3aXRjaA0KCQkJJGFub255bWl6ZSA9IGZhbHNlOw0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10gPT0gMSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10sIHRydWUpKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRhbm9ueW1pemUgPSB0cnVlOw0KCQkJfQ0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIvKioiOw0KDQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcGxhaW4gZGVsZXRlLCBvciBpdCBpcyBhIEFub255bWl6ZQ0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiBBbm9ueW1pemUgdGhlICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRhdGEiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAiICogUmVtb3ZlIHRoZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkYXRhIjsNCgkJCX0NCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEBwYXJhbSAgIEpUYWJsZVVzZXIgIFwkdXNlciAgVGhlIEpUYWJsZVVzZXIgb2JqZWN0IHRvIHByb2Nlc3MiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gIiAqIEByZXR1cm4gIHZvaWQiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICIgKi8iOw0KDQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcGxhaW4gZGVsZXRlLCBvciBpdCBpcyBhIEFub255bWl6ZSANCgkJCWlmICgkYW5vbnltaXplKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAicHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBhbm9ueW1pemUiIC4gdWNmaXJzdCgkdmlld05hbWVfbGlzdCkgLiAiRGF0YSgmXCRwbHVnaW4sICZcJHVzZXIpIjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBEZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoJlwkcGx1Z2luLCAmXCR1c2VyKSI7DQoJCQl9DQoNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBkYXRhYmFzZSBvYmplY3QiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGFsbCBpdGVtIGlkcyBvZiAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGhhdCBiZWxvbmcgdG8gdGhpcyB1c2VyIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLT5zZWxlY3QoJ2lkJykiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICItPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX18iIC4gUGxhY2VmaXg6Ol8oJ2NvbXBvbmVudCcpIC4gJ18nIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInKSk7IjsNCgkJCS8vIGdldCB2aWEgY3VzdG9tIHNjcmlwdA0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMykNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdmlldy0+cGxhY2Vob2xkZXJzKSwgYXJyYXlfdmFsdWVzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2N1c3RvbV9saW5rJ10pOw0KCQkJfQ0KCQkJLy8ganVzdCBhbm90aGVyIGZpZWxkDQoJCQllbHNlaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMiAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydvdGhlcl91c2VyX2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJew0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnIiAuICRmaWVsZF9uYW1lIC4gIicpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSAoVE9ETykNCg0KCQkJCQkvLyBzdG9wIGFueSBmcm9tIGxvYWRpbmcNCgkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA9PT09IEVSUk9SID09PT09IEVSUk9SID09PT09PSAoZmllbGQgbmFtZSBub3QgZm91bmQpIjsNCgkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gLTInOyAvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8LS0gdGhpcyB3aWxsIG5ldmVyIHJldHVybiBhbnkgdmFsdWUuIENoZWNrIHlvdXIgW290aGVyIHVzZXIgZmllbGRdIHNlbGVjdGVkIGluIHRoZSBhZG1pbiB2aWV3IHByaXZhY3kgdGFiLiI7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gZ2V0IGJhc2VkIG9uIGNyZWF0ZWQgYnkNCgkJCWVsc2UNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnY3JlYXRlZF9ieScpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGFsbCBpdGVtcyBmb3IgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0YWJsZSB0aGF0IGJlbG9uZyB0byB0aGlzIHVzZXIiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHBrcyA9IFwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpLT5sb2FkQ29sdW1uKCk7IjsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMikgLiAiaWYgKFN1cGVyX18iLiJfMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkcGtzKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXdOYW1lX3NpbmdsZSAuICIgbW9kZWwiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJG1vZGVsID0gc2VsZjo6Z2V0TW9kZWwoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyk7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYnVpbGQgdGhlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBhcnJheQ0KCQkJCSRfZGF0YV9idWNrZXQgPSBhcnJheSgpOw0KCQkJCSRfcmFuZG9tX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJJF9wZXJtaXNzaW9uX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJZm9yZWFjaCAoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10gYXMgJHJvdykNCgkJCQl7DQoJCQkJCWlmICgoJGZpZWxkX25hbWUgPSAkdGhpcy0+Z2V0RmllbGROYW1lKCR2aWV3LT5maWVsZHMsICRyb3dbJ2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJCXsNCgkJCQkJCWlmICAoJ1JBTkRPTScgPT09ICRyb3dbJ3ZhbHVlJ10pIA0KCQkJCQkJew0KCQkJCQkJCSRfcmFuZG9tX2J1Y2tldFskZmllbGRfbmFtZV0gPSA4OyAvLyAoVE9ETykgbWFrZSB0aGUgc2l6ZSBkeW5hbWljDQoJCQkJCQl9DQoJCQkJCQkkX2RhdGFfYnVja2V0W10gPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gJGZpZWxkX25hbWUgLiAiJyA9PiAnIiAuICRyb3dbJ3ZhbHVlJ10gLiInIjsNCgkJCQkJCSRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkX25hbWVdID0gJGZpZWxkX25hbWU7DQoJCQkJCX0NCgkJCQl9DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aGlzIGlzIHRoZSBwc2V1ZG9hbm9ueW1pc2VkIGRhdGEgYXJyYXkgZm9yICIgLiAkdmlldy0+bmFtZV9saXN0Ow0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YSA9IGFycmF5KCI7DQoJCQkJJG1ldGhvZHMgLj0gaW1wbG9kZSgnLCcsICRfZGF0YV9idWNrZXQpOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCQkJLy8gYWRkIHRoZSBwZXJtaXNzaW9uYWwgcmVtb3ZhbCBvZiB2YWx1ZXMgdGhlIHVzZXIgaGFzIG5vdCByaWdodCB0byB2aWV3IG9yIGFjY2Vzcw0KCQkJCSRoYXNQZXJtaXNzaW9uYWwgPSBmYWxzZTsNCgkJCQlpZiAoaXNzZXQoJHRoaXMtPnBlcm1pc3Npb25GaWVsZHNbJHZpZXdOYW1lX3NpbmdsZV0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJew0KCQkJCQkJaWYgKCEkaGFzUGVybWlzc2lvbmFsICYmIGlzc2V0KCRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkTmFtZV0pKQ0KCQkJCQkJew0KCQkJCQkJCWZvcmVhY2goJHBlcm1pc3Npb25fb3B0aW9ucyBhcyAkcGVybWlzc2lvbl9vcHRpb24gPT4gJGZpZWxkVHlwZSkNCgkJCQkJCQl7DQoJCQkJCQkJCWlmICghJGhhc1Blcm1pc3Npb25hbCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJc3dpdGNoICgkcGVybWlzc2lvbl9vcHRpb24pDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJY2FzZSAnYWNjZXNzJzoNCgkJCQkJCQkJCQljYXNlICd2aWV3JzoNCgkJCQkJCQkJCQljYXNlICdlZGl0JzoNCgkJCQkJCQkJCQkJJGhhc1Blcm1pc3Npb25hbCA9IHRydWU7DQoJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gYWRkIHRoZSBub3RlcyBhbmQgZ2V0IHRoZSBnbG9iYWwgc3dpdGNoDQoJCQkJCWlmICgkaGFzUGVybWlzc2lvbmFsKQ0KCQkJCQl7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBHZXQgZ2xvYmFsIHBlcm1pc3Npb25hbCBjb250cm9sIGFjdGl2YXRpb24uIChkZWZhdWx0IGlzIGluYWN0aXZlKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkID0gSm9vbWxhX19fYWViOGU0NjNfMjkxZl80NDQ1XzlhYzRfMzRiNjM3YzEyZGJkX19fUG93ZXI6OmdldFBhcmFtcygnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJyktPmdldCgnc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkJywgMCk7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYoXCRzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQpIjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHJlbW92ZSBhbGwgZmllbGRzIHRoYXQgaXMgbm90IHBlcm1pdHRlZCB0byBiZSBjaGFuZ2VkIjsNCgkJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJCXsNCgkJCQkJCQlpZiAoaXNzZXQoJF9wZXJtaXNzaW9uX2J1Y2tldFskZmllbGROYW1lXSkpDQoJCQkJCQkJew0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gImlmICgiOw0KCQkJCQkJCQkkX3Blcm1pc3Npb25faWYgPSBhcnJheSgpOw0KCQkJCQkJCQlmb3JlYWNoICgkcGVybWlzc2lvbl9vcHRpb25zIGFzICRwZXJtX2tleSA9PiAkZmllbGRfdHlwcmV3KQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkX3Blcm1pc3Npb25faWZbXSA9ICIhXCR1c2VyLT5hdXRob3Jpc2UoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIi4iIC4gJHBlcm1fa2V5IC4gIi4iIC4gJGZpZWxkTmFtZSAuICInLCAnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiJykiOw0KCQkJCQkJCQl9DQoJCQkJCQkJCSRtZXRob2RzIC49ICBpbXBsb2RlKCcgfHwgJywgJF9wZXJtaXNzaW9uX2lmKTsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gICIpIjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ7IjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJ1bnNldChcJHBzZXVkb2Fub255bWlzZWREYXRhWyciLiAkZmllbGROYW1lIC4gIiddKTsiOw0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIn0iOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCQkJCX0NCgkJCQl9DQoNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGFibGUiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgY2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIHBzZXVkb2Fub255bWlzZWQgZGF0YSBmb3IgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHNldCI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVN1cGVyX18iLiJfMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkcHNldWRvYW5vbnltaXNlZERhdGEpKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHN0aWxsIGFyY2hpdmUgYWxsIGl0ZW1zIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdGFibGUtPnB1Ymxpc2goXCRwa3MsIDIpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJyZXR1cm4gZmFsc2U7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBJdGVyYXRlIHRoZSBpdGVtcyB0byBhbm9uaW1pemUgZWFjaCBvbmUuIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImZvcmVhY2ggKFwkcGtzIGFzIFwkaSA9PiBcJHBrKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkdGFibGUtPnJlc2V0KCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkcHNldWRvYW5vbnltaXNlZERhdGFbJ2lkJ10gPSBcJHBrOyI7DQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRfcmFuZG9tX2J1Y2tldCkpDQoJCQkJew0KCQkJCQlmb3JlYWNoICgkX3JhbmRvbV9idWNrZXQgYXMgJGZpZWxkTmFtZSA9PiAkc2l6ZSkNCgkJCQkJew0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJpZiAoaXNzZXQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnIiAuICRmaWVsZE5hbWUgLiAiJ10pKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gInsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJcJHBzZXVkb2Fub255bWlzZWREYXRhWyciIC4gJGZpZWxkTmFtZSAuICInXSA9IHNlbGY6OnJhbmRvbWtleSgiIC4gKGludCkgJHNpemUgLiAiKTsiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJpZiAoXCR0YWJsZS0+YmluZChcJHBzZXVkb2Fub255bWlzZWREYXRhKSkiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAieyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg1KSAuICJcJHRhYmxlLT5zdG9yZSgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBhcmNoaXZlIGFsbCBpdGVtcyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRhYmxlLT5wdWJsaXNoKFwkcGtzLCAyKTsiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGFibGUiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEl0ZXJhdGUgdGhlIGl0ZW1zIHRvIGRlbGV0ZSBlYWNoIG9uZS4iOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiZm9yZWFjaCAoXCRwa3MgYXMgXCRpID0+IFwkcGspIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiaWYgKFwkdGFibGUtPmxvYWQoXCRwaykpIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNSkgLiAiXCR0YWJsZS0+ZGVsZXRlKFwkcGspOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJ9IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2xlYXIgdGhlIGNvbXBvbmVudCdzIGNhY2hlIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkbW9kZWwtPmNsZWFuQ2FjaGUoKTsiOw0KCQkJfQ0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCQl9DQoJfQ==', '[[[Component]]] Privacy Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.2.4', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Compiler', '', 1, '', '', 1, '2019-08-17 23:47:50', '2024-08-06 21:31:30', 159, '', 3),
(4, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to tweak the export options for your components during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\nAlso be sure to activate the component/s that should be targeted with this added export feature under the Component Activation tab.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Settings\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2681\",\"custom_value\":\"\"}}}}', 'e3681356-565b-46a2-aa11-b2d9ab908938', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcRmFjdG9yeSBhcyBDRmFjdG9yeTsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXEluZGVudDsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXExpbmU7', 11, '{\"method_selection0\":{\"method\":\"92\"},\"method_selection1\":{\"method\":\"56\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogVGhlIGxhbmd1YWdlIHN0cmluZyBidWlsZGVyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlQXJyYXkgPSBbXTsNCg0KCS8qDQoJICogVGhlIEV4cG9ydCBUZXh0IE9ubHkgc3dpdGNoDQoJICogDQoJICogQHZhciAgICAgIGludA0KCSAqLw0KCXByb3RlY3RlZCAkZXhwb3J0VGV4dE9ubHkgPSAwOw0KDQoJLyoNCgkgKiBUaGUgU3RyaWN0IEZpZWxkIEV4cG9ydCBQZXJtaXNzaW9ucyBzd2l0Y2gNCgkgKiANCgkgKiBAdmFyICAgICAgYm9vbA0KCSAqLw0KCXByb3RlY3RlZCAkc3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IGZhbHNlOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIGV4cG9ydCB0ZXh0IG9ubHkNCgkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdleHBvcnRfdGV4dF9vbmx5JywgKGludCkgJHRoaXMtPmV4cG9ydFRleHRPbmx5KTsNCg0KCQkJLy8gYWN0aXZhdGUgc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkIGlmIHNldCBpbiBwbHVnaW4gKGRlZmF1bHQgdHJ1ZSkNCgkJCUNGYWN0b3J5OjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGV4cG9ydCBmb3IgYW55IHZpZXcNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gc2V0IHRoZSBleHBvcnQvaW1wb3J0IG9wdGlvbg0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPmFkbWluX3ZpZXdzKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkY29tcG9uZW50LT5hZG1pbl92aWV3cykpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGNvbXBvbmVudC0+YWRtaW5fdmlld3MgYXMgJHZpZXcpDQoJCQkJew0KCQkJCQlpZiAoISR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAoaXNzZXQoJHZpZXdbJ3BvcnQnXSkgJiYgJHZpZXdbJ3BvcnQnXSB8fCAxID09ICR2aWV3WydzZXR0aW5ncyddLT5hZGRfY3VzdG9tX2ltcG9ydCkpDQoJCQkJCXsNCgkJCQkJCSR0aGlzLT5leHBvcnRUZXh0T25seSA9IDE7DQoJCQkJCQkkdGhpcy0+c3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IChib29sKSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3N0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZCcsIDEpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmxhbmd1YWdlQXJyYXkpKQ0KCQl7DQoJCQlmb3JlYWNoKCR0aGlzLT5sYW5ndWFnZUFycmF5IGFzICRrZXkgPT4gJHN0cmluZykNCgkJCXsNCgkJCQlDRmFjdG9yeTo6XygnTGFuZ3VhZ2UnKS0+c2V0KCdhZG1pbnN5cycsICRrZXksICRzdHJpbmcpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBDb25maWcgRmllbGQgc2V0c10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRDb25maWdGaWVsZHNldHMoJiR0aW1lcikNCgl7DQoJCS8vIG9ubHkgYWRkIGZpZWxkcyBhZnRlciBzZWNvbmQgdGltZQ0KCQlpZiAoJHRoaXMtPmV4cG9ydFRleHRPbmx5ICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiAkdGltZXIgPT0gMikNCgkJew0KCQkJLy8gbWFpbiBsYW5nIHByZWZpeA0KCQkJJGxhbmcgPSBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmxhbmdfcHJlZml4IC4gJ19DT05GSUcnOw0KCQkJLy8gc3RhcnQgYnVpbGRpbmcgZmllbGQgc2V0IGZvciBjb25maWcNCgkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygxKSAuICI8ZmllbGRzZXQiOw0KCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gJ25hbWU9ImV4cG9ydF90ZXh0X29ubHlfY29uZmlnIic7DQoJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMikgLiAnbGFiZWw9IicgLiAkbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9UQUJfTEFCRUwiJzsNCgkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICdkZXNjcmlwdGlvbj0iJyAuICRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiI+JzsNCgkJCS8vIHNldHVwIGxhbmcNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9MQUJFTCddID0gIkV4cG9ydCBPcHRpb25zIjsNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiddID0gIkhlcmUgYXJlIHNvbWUgZXh0cmEgb3B0aW9uIHRvIGFkanVzdCB0aGUgZXhwb3J0IGJlaGF2aW9yIG9mIGFkbWluIHZpZXdzLiI7DQoJCQkvLyBhZGQgY3VzdG9tIEV4cG9ydCBPcHRpb25zDQoJCQlpZiAoaXNzZXQoJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkY29uZmlnRmllbGRTZXRzQ3VzdG9tRmllbGRbJ0V4cG9ydCBPcHRpb25zJ10pKQ0KCQkJew0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IGltcGxvZGUoIiIsICRjb25maWdGaWVsZFNldHNDdXN0b21GaWVsZFsnRXhwb3J0IE9wdGlvbnMnXSk7DQoJCQkJdW5zZXQoJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9MQUJFTCddID0gIkV4cG9ydCBUZXh0IE9ubHkiOw0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX0RFU0NSSVBUSU9OJ10gPSAiVGhpcyBvcHRpb24gZW5hYmxlcyB0aGUgZXhwb3J0IG9mIHN0cmluZy90ZXh0IGluc3RlYWQgb2YgbGlua2VkIElEcyBpbiBhbGwgYWRtaW4gdmlld3MgdGhhdCBoYXZlIGFuIGV4cG9ydCBvcHRpb24uIjsNCg0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19BQ1RJVkFURSddID0gIkFjdGl2YXRlIjsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfREVBQ1RJVkFURSddID0gIkRlYWN0aXZhdGUiOw0KDQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4cG9ydCBUZXh0IE9ubHkgRmllbGQuIFR5cGU6IFJhZGlvLiAoam9vbWxhKSAtLT4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICI8ZmllbGQiOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJ0eXBlPVwicmFkaW9cIiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gIm5hbWU9XCJleHBvcnRfdGV4dF9vbmx5XCIiOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJsYWJlbD1cIiIgLiAkbGFuZyAuICJfRVhQT1JUX1RFWFRfT05MWV9MQUJFTFwiIjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAiZGVzY3JpcHRpb249XCIiIC4gJGxhbmcgLiAiX0VYUE9SVF9URVhUX09OTFlfREVTQ1JJUFRJT05cIiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gImNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC15ZXNub1wiIjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAiZGVmYXVsdD1cIjBcIj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIE9wdGlvbiBTZXQuIC0tPiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIxXCI+IjsNCgkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oNCkgLiAkbGFuZyAuICJfQUNUSVZBVEU8L29wdGlvbj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMFwiPiI7DQoJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDQpIC4gJGxhbmcgLiAiX0RFQUNUSVZBVEU8L29wdGlvbj4iOw0KCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygyKSAuICI8L2ZpZWxkPiI7DQoNCgkJCQkvLyBhZGQgIHN0cmljdCBGaWVsZCBFeHBvcnQgUGVybWlzc2lvbnMgZmllbGQNCgkJCQlpZiAoJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpDQoJCQkJew0KCQkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfU1RSSUNUX1BFUk1JU1NJT05fUEVSX0ZJRUxEX0xBQkVMJ10gPSAiVXNlIFN0cmljdCBQZXJtaXNzaW9uIHBlci9maWVsZCI7DQoJCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT04nXSA9ICJVc2Ugc3RyaWN0IHBlcm1pc3Npb25zIHBlci9maWVsZCBpbiB0aGUgZXhwb3J0IG1ldGhvZHMgd2hlcmUgdGhlcmUgYXJlIGZpZWxkcyBwZXJtaXNzaW9ucyBpbiBhIHZpZXcuIjsNCg0KCQkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIjwhLS0iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkIEZpZWxkLiBUeXBlOiBSYWRpby4gKGpvb21sYSkgLS0+IjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gIjxmaWVsZCI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJ0eXBlPVwicmFkaW9cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJuYW1lPVwic3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkXCIiOw0KCQkJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMykgLiAibGFiZWw9XCIiIC4gJGxhbmcgLiAiX1NUUklDVF9QRVJNSVNTSU9OX1BFUl9GSUVMRF9MQUJFTFwiIjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDMpIC4gImRlc2NyaXB0aW9uPVwiIiAuICRsYW5nIC4gIl9TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT05cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJjbGFzcz1cImJ0bi1ncm91cCBidG4tZ3JvdXAteWVzbm9cIiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICJkZWZhdWx0PVwiMVwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8IS0tIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIE9wdGlvbiBTZXQuIC0tPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMVwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6Xyg0KSAuICRsYW5nIC4gIl9BQ1RJVkFURTwvb3B0aW9uPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6XygzKSAuICI8b3B0aW9uIHZhbHVlPVwiMFwiPiI7DQoJCQkJCSRjb25maWdGaWVsZFNldHNbXSA9IEluZGVudDo6Xyg0KSAuICRsYW5nIC4gIl9ERUFDVElWQVRFPC9vcHRpb24+IjsNCgkJCQkJJGNvbmZpZ0ZpZWxkU2V0c1tdID0gSW5kZW50OjpfKDIpIC4gIjwvZmllbGQ+IjsNCgkJCQl9DQoJCQl9DQoJCQkvLyBjbG9zZSB0aGF0IGZpZWxkc2V0DQoJCQkkY29uZmlnRmllbGRTZXRzW10gPSBJbmRlbnQ6Ol8oMSkgLiAiPC9maWVsZHNldD4iOw0KCQl9DQoJfQ0KDQpbQ1VTVE9NQ09ERT1jb21wb25lbnRBY3RpdmVd', '[[[Component]]] Export Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.2.1', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Export Compiler', '', 1, '', '', 1, '2019-08-21 20:42:45', '2024-08-06 20:53:51', 45, '', 2),
(5, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to improve your action log integration with Joomla for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"activate\",\"label\":\"Component Activation\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', '91e831bf-5337-4b9c-8f6c-e90255b9e36a', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcRmFjdG9yeSBhcyBDRmFjdG9yeTsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcVXRpbGl0aWVzXFBsYWNlZml4Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcSW5kZW50Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcTGluZTs=', 11, '{\"method_selection0\":{\"method\":\"59\"},\"method_selection1\":{\"method\":\"120\"},\"method_selection2\":{\"method\":\"79\"},\"method_selection3\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogVGhlIFNjcmlwdHMNCgkgKiANCgkgKiBAdmFyICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHNjcmlwdHNBcnJheSA9IFsnUE9TVElOU1RBTExTQ1JJUFQnID0+IFtdLCAnUE9TVFVQREFURVNDUklQVCcgPT4gW10sICdVTklOU1RBTExTQ1JJUFQnID0+IFtdXTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VBcnJheSkpDQoJCXsNCgkJCWZvcmVhY2goJHRoaXMtPmxhbmd1YWdlQXJyYXkgYXMgJGtleSA9PiAkc3RyaW5nKQ0KCQkJew0KCQkJCUNGYWN0b3J5OjpfKCdMYW5ndWFnZScpLT5zZXQoJ2FkbWluJywgJGtleSwgJHN0cmluZyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBCdWlsZCBGaWxlcyBDb250ZW50XQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyQnVpbGRGaWxlc0NvbnRlbnQoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJJGZ1bmN0aW9uX25hbWUgPSAnZ2V0TWFpbkozJzsNCgkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnam9vbWxhX3ZlcnNpb24nLCAzKSAhPSAzKQ0KCQkJew0KCQkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldE1haW5KNCc7DQoJCQl9DQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MgdG8gdGhlICBjb21wb25lbnQNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIGNvbXBvbmVudCBtYWluIHRhcmdldCBzY3JpcHQNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hZGQoJHRhcmdldCwgJHRoaXMtPnskZnVuY3Rpb25fbmFtZSAuICR0YXJnZXR9KCkpOw0KCQkJCS8vIGFkZCB0aGUgY29tcG9uZW50IHZpZXdzIHRhcmdldCBzY3JpcHRzDQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRidWNrZXQpKQ0KCQkJCXsNCgkJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCR0YXJnZXQsIGltcGxvZGUoJycsICRidWNrZXQpKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgYmV0dGVyIGludGVncmF0aW9uIHdpdGggYWN0aW9uIGxvZw0KCQlpZiAoJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmZpZWxkcykpDQoJCXsNCgkJCWZvcmVhY2ggKCR2aWV3LT5maWVsZHMgYXMgJGZpZWxkKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZmllbGRbJ3RpdGxlJ10pICYmICRmaWVsZFsndGl0bGUnXSA9PSAxKQ0KCQkJCXsNCgkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGlmIG5vdCBmb3VuZCB0cnkgYWdhaW4NCgkJCWlmICghaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHZpZXctPmZpZWxkcyBhcyAkZmllbGQpDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJGZpZWxkWydsaXN0J10pICYmICRmaWVsZFsnbGlzdCddID09IDEgJiYNCgkJCQkJCWlzc2V0KCRmaWVsZFsnb3JkZXJfbGlzdCddKSAmJiAkZmllbGRbJ29yZGVyX2xpc3QnXSA9PSAxICYmDQoJCQkJCQlpc3NldCgkZmllbGRbJ2xpbmsnXSkgJiYgJGZpZWxkWydsaW5rJ10gPT0gMSkNCgkJCQkJew0KCQkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gaWYgZm91bmQgdXBkYXRlIHBsYWNlaG9sZGVyDQoJCQlpZiAoaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJLy8gc2V0IG1haW4gdGl0bGUNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+c2V0KCc8PDxNQUlOX1RJVExFPj4+JywgJHRpdGxlX2hvbGRlciwgZmFsc2UpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGZhbGwgYmFjayBvbiBJRA0KCQkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5zZXQoJzw8PE1BSU5fVElUTEU+Pj4nLCAnaWQnLCBmYWxzZSk7DQoJCQl9DQoNCgkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldFZpZXdKMyc7DQoJCQlpZiAoQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5nZXQoJ2pvb21sYV92ZXJzaW9uJywgMykgIT0gMykNCgkJCXsNCgkJCQkkZnVuY3Rpb25fbmFtZSA9ICdnZXRWaWV3SjQnOw0KCQkJfQ0KDQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkkYnVja2V0W10gPSAkdGhpcy0+eyRmdW5jdGlvbl9uYW1lIC4gJHRhcmdldH0oKTsNCgkJCX0NCg0KCQkJLy8ganVzdCByZW1vdmUgaXQgYWdhaW4NCgkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5yZW1vdmUoJzw8PE1BSU5fVElUTEU+Pj4nKTsNCg0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPmdldF8oIkxBTkdfUFJFRklYIikgLiAnX1RZUEVfJyAuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5nZXRfKCJWSUVXIildID0gJHZpZXctPm5hbWVfc2luZ2xlOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFBvc3QgSW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVElOU1RBTExTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCBkYiBpZiBub3Qgc2V0IGFscmVhZHkuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmICghaXNzZXQoXCRkYikpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkYiA9IEZhY3Rvcnk6OmdldERibygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ3JlYXRlIHRoZSAiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIiBhY3Rpb24gbG9ncyBleHRlbnNpb25zIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gbmV3IFxzdGRDbGFzcygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMtPmV4dGVuc2lvbiA9ICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9ncyBleHRlbnNpb25zIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKM1BPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9nIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgTWFpbiBQb3N0IFVwZGF0ZSBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVFVQREFURVNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU2V0IGRiIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKCFpc3NldChcJGRiKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgdGhlICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIic7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2cgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyBEQi4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5zZWxlY3QoXCRkYi0+cXVvdGVOYW1lKGFycmF5KCdpZCcpKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX19hY3Rpb25fbG9nc19leHRlbnNpb25zJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2V4dGVuc2lvbicpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUgaWYgbm90IGZvdW5kLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVwkZGItPmdldE51bVJvd3MoKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjNQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT5pZCA9IG51bGw7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIGlzIGFscmVhZHkgaW4gYWN0aW9uX2xvZ19jb25maWcgREIuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeS0+c2VsZWN0KFwkZGItPnF1b3RlTmFtZShhcnJheSgnaWQnKSkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgndHlwZV9hbGlhcycpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGNvbnRlbnQgdHlwZXMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmIChcJGRiLT5nZXROdW1Sb3dzKCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPmlkID0gXCRkYi0+bG9hZFJlc3VsdCgpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19VcGRhdGVkID0gXCRkYi0+dXBkYXRlT2JqZWN0KCcjX19hY3Rpb25fbG9nX2NvbmZpZycsIFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLCAnaWQnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJlbHNlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWdfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiIGZyb20gdGhlIGFjdGlvbl9sb2dzX2V4dGVuc2lvbnMgdGFibGUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gYXJyYXkoIFwkZGItPnF1b3RlTmFtZSgnZXh0ZW5zaW9uJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKCdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSApOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPmRlbGV0ZShcJGRiLT5xdW90ZU5hbWUoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucyk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIkNvbXBvbmVudCIpIC4gIiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX3JlbW92ZWRfZG9uZSA9IFwkZGItPmV4ZWN1dGUoKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfcmVtb3ZlZF9kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmUgIiAuIFBsYWNlZml4OjpfKCJDb21wb25lbnQiKSAuICIgYWRkIHF1ZXVlZCBzdWNjZXNzIG1lc3NhZ2UuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkYXBwLT5lbnF1ZXVlTWVzc2FnZShUZSIgLiAieHQ6Ol8oJ1RoZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIgZXh0ZW5zaW9uIHdhcyByZW1vdmVkIGZyb20gdGhlIDxiPiNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnM8L2I+IHRhYmxlJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Vmlld0ozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBmcm9tIHRoZSBhY3Rpb25fbG9nX2NvbmZpZyB0YWJsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZyA9IGFycmF5KCBcJGRiLT5xdW90ZU5hbWUoJ3R5cGVfYWxpYXMnKSAuICcgPSAnLiBcJGRiLT5xdW90ZSgnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpICk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+ZGVsZXRlKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnX2RvbmUgPSBcJGRiLT5leGVjdXRlKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImlmIChcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmVkICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBhZGQgcXVldWVkIHN1Y2Nlc3MgbWVzc2FnZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAtPmVucXVldWVNZXNzYWdlKFRlIiAuICJ4dDo6XygnVGhlIGNvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICIgdHlwZSBhbGlhcyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSA8Yj4jX19hY3Rpb25fbG9nX2NvbmZpZzwvYj4gdGFibGUnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIn0iOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBJbnN0YWxsIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRNYWluSjRQT1NUSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIEFkZCBjb21wb25lbnQgdG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkdGhpcy0+c2V0QWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFBPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiB0byB0aGUgYWN0aW9uIGxvZ3MgY29uZmlnIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRoaXMtPnNldEFjdGlvbkxvZ0NvbmZpZygiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZVRpdGxlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gUGxhY2VmaXg6Ol8oIlZJRVciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0eXBlQWxpYXMiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBpZEhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInaWQnLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aXRsZUhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInPDw8TUFJTl9USVRMRT4+PicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRhYmxlTmFtZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGV4dFByZWZpeCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJMQU5HX1BSRUZJWCIpIC4gIiciOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBVcGRhdGUgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE1haW5KNFBPU1RVUERBVEVTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykNCgkJCS4gIiBBZGQvVXBkYXRlIGNvbXBvbmVudCBpbiB0aGUgYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dzRXh0ZW5zaW9ucygpOyI7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjRQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkL1VwZGF0ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgaW4gdGhlIGFjdGlvbiBsb2dzIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dDb25maWcoIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHR5cGVUaXRsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJWSUVXIikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZUFsaWFzIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIidjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgaWRIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2lkJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGl0bGVIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJzw8PE1BSU5fVElUTEU+Pj4nLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0YWJsZU5hbWUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyNfXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRleHRQcmVmaXgiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIik7IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbko0VU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgUmVtb3ZlIGNvbXBvbmVudCBmcm9tIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBVbmluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFVOSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIFJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgZnJvbSBhY3Rpb24gbG9ncyBjb25maWcgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nQ29uZmlnKCdjb21fIg0KCQkJLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KW0NVU1RPTUNPREU9Y29tcG9uZW50QWN0aXZlXQ==', '[[[Component]]] ActionLog Compiler', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '2.0.1', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB ActionLog Compiler', '', 1, '', '', 1, '2019-08-27 08:22:41', '2024-08-06 20:53:55', 65, '', 3),
(6, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add download link, url or icon and more to content from the [[[Component]]].', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2644\",\"custom_value\":\"1\"},\"fields1\":{\"field\":\"2645\",\"custom_value\":\"md\"},\"fields2\":{\"field\":\"2646\",\"custom_value\":\"\"}}}}', 'cbbd9ccd-441b-4c88-b0bb-44c724943df0', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjs=', 3, '{\"method_selection0\":{\"method\":\"16\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogQWRkIHRoZSBjc3MgZmlsZXMgdG8gdGhlIGRvY3VtZW50IGZvciB0aGUgdmVjdG9yIHN5bGUNCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqLw0KCXByb3RlY3RlZCAgJGFkZGNzcyA9IGZhbHNlOw0KCXByb3RlY3RlZCAgJHNldGNzcyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhpcyBpcyB0aGUgZmlyc3Qgc3RhZ2UgaW4gcHJlcGFyaW5nIGNvbnRlbnQgZm9yIG91dHB1dCBhbmQgaXMgdGhlDQoJICogbW9zdCBjb21tb24gcG9pbnQgZm9yIGNvbnRlbnQgb3JpZW50YXRlZCBwbHVnaW5zIHRvIGRvIHRoZWlyIHdvcmsuDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIHRoZSBwbHVnaW4uDQoJICogQHBhcmFtICAgb2JqZWN0ICAgJiRyb3cgICAgIFRoZSBhcnRpY2xlIG9iamVjdC4gIE5vdGUgJGFydGljbGUtPnRleHQgaXMgYWxzbyBhdmFpbGFibGUNCgkgKiBAcGFyYW0gICBtaXhlZCAgICAmJHBhcmFtcyAgVGhlIGFydGljbGUgcGFyYW1zDQoJICogQHBhcmFtICAgaW50ZWdlciAgJHBhZ2UgICAgIFRoZSAncGFnZScgbnVtYmVyDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Db250ZW50UHJlcGFyZSgkY29udGV4dCwgJiRyb3csICYkcGFyYW1zLCAkcGFnZSA9IDApDQoJew0KCQkvLyBTaW1wbGUgcGVyZm9ybWFuY2UgY2hlY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYm90IHNob3VsZCBwcm9jZXNzIGZ1cnRoZXINCgkJaWYgKHN0cnBvcygkcm93LT50ZXh0LCAnW1tbW1NFQ1VSRUZJTEVdXV09JykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBidWlsZCB0aGUgcmVwbGFjZW1lbnQgdmFsdWVzDQoJCQkkcmVwbGFjZW1lbnQgPSBhcnJheSgpOw0KCQkJLy8gZ2V0IGFsbCBJRCBrZXlzDQoJCQkka2V5cyA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OmFsbEJldHdlZW4oJHJvdy0+dGV4dCwgJ1tbW1tTRUNVUkVGSUxFXV1dPScsICddJyk7DQoJCQkvLyBtYWtlIHN1cmUgd2UgcmVhbGx5IGhhdmUgc29tZXRoaW5nIChzaG91bGQgbm90IGJlIG5lZWRlZC4uLikNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygka2V5cykpDQoJCQl7DQoJCQkJJGlkcyA9IGFycmF5KCk7DQoJCQkJJGJ1aWxkZXIgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2goJGtleXMgYXMgJGtleSkNCgkJCQl7DQoJCQkJCWlmIChzdHJwb3MoJGtleSwgJ18nKSAhPT0gZmFsc2UpDQoJCQkJCXsNCgkJCQkJCWxpc3QoJHR5cGUsICRpZCkgPSBleHBsb2RlKCdfJywgJGtleSwgMik7DQoJCQkJCQkkaWRzWyhpbnQpICRpZF0gPSAoaW50KSAkaWQ7DQoJCQkJCQkkYnVpbGRlclska2V5XSA9IGFycmF5KCdpZCcgPT4gKGludCkgJGlkLCAndHlwZScgPT4gJHR5cGUpOw0KCQkJCQl9DQoJCQkJCWVsc2UNCgkJCQkJew0KCQkJCQkJJGJ1aWxkZXJbJGtleV0gPSBudWxsOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGdldCBpdGVtcw0KCQkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkaWRzKSAmJiAoJGl0ZW1zID0gJHRoaXMtPmdldEl0ZW1zKGFycmF5X3ZhbHVlcygkaWRzKSkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRidWlsZGVyIGFzICRrZXkgPT4gJHRhcmdldCkNCgkJCQkJew0KCQkJCQkJLy8gYnVpbGQgdGhlIHBsYWNlaG9sZGVyIGtleQ0KCQkJCQkJJF9rZXkgPSAnW1tbW1NFQ1VSRUZJTEVdXV09JyAuICRrZXkgLiAnXSc7DQoJCQkJCQkvLyBtYWtlIHN1cmUgaXQgZ2V0cyByZW1vdmVkIGlmIG5vdCBmb3VuZA0KCQkJCQkJJHJlcGxhY2VtZW50WyRfa2V5XSA9ICcnOw0KCQkJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0YXJnZXQpICYmIGlzc2V0KCR0YXJnZXRbJ2lkJ10pICYmIGlzc2V0KCRpdGVtc1skdGFyZ2V0WydpZCddXSkpDQoJCQkJCQl7DQoJCQkJCQkJJHJlcGxhY2VtZW50WyRfa2V5XSA9ICR0aGlzLT5nZXREb3dubG9hZFN0cmluZygkdGFyZ2V0Wyd0eXBlJ10sICRpdGVtc1skdGFyZ2V0WydpZCddXSk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gbm93IHVwZGF0ZSB0aGUgY29udGVudA0KCQkJCQkkcm93LT50ZXh0ID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVwbGFjZW1lbnQpLCBhcnJheV92YWx1ZXMoJHJlcGxhY2VtZW50KSwgJHJvdy0+dGV4dCk7DQoJCQkJCS8vIGFkZCB0aGUgY3NzIGZpbGVzDQoJCQkJCWlmICgkdGhpcy0+YWRkY3NzKQ0KCQkJCQl7DQoJCQkJCQkvLyBnZXQgdGhlIGRvY3VtZW50IG9iamVjdA0KCQkJCQkJJGRvY3VtZW50ID0gRmFjdG9yeTo6Z2V0RG9jdW1lbnQoKTsNCltDVVNUT01DT0RFPWZpbGVJY29uVmV0b3JzQ1NTKyQsCQkJCQkJXQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhlIGZ1bmN0aW9uIHRvIGJ1aWxkIHRoZSBmaWxlIGRvd25sb2FkIHN0cmluZw0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHR5cGUgIFRoZSB0eXBlIG9mIGRvd25sb2FkIHN0cmluZw0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGl0ZW0gIFRoZSBmaWxlIGl0ZW0gb2JqZWN0DQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RG93bmxvYWRTdHJpbmcoJHR5cGUsICRpdGVtKQ0KCXsNCgkJc3dpdGNoKCR0eXBlKQ0KCQl7DQoJCQljYXNlICdpY29uJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlDQoJCQkJaWYgKCEkdGhpcy0+c2V0Y3NzKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmFkZGNzcyA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWRkX2NzcycsIHRydWUpOw0KCQkJCQkkdGhpcy0+c2V0Y3NzID0gdHJ1ZTsNCgkJCQl9DQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4NCgkJCQkJJzxzcGFuIGNsYXNzPSJmaXYtJyAuIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmlsZVZlY3RvclN0eWxlKHRydWUpIC4gJyBmaXYtaWNvbi0nIC4gJGl0ZW0tPmZpbGVfZXh0ZW5zaW9uIC4gJyBmaXYtc2l6ZS0nIC4gJHRoaXMtPnBhcmFtcy0+Z2V0KCdpY29uX3NpemUnLCAnbWQnKSAuICciPjwvc3Bhbj4nIC4NCgkJCQkJJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLW1kJzoNCgkJCWNhc2UgJ2ljb24tbWVkaXVtJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbWVkaXVtIHNpemUNCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+JyAuDQoJCQkJCSc8L2E+JzsNCgkJCWJyZWFrOw0KCQkJY2FzZSAnaWNvbi1sZyc6DQoJCQljYXNlICdpY29uLWxhcmdlJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbGFyZ2Ugc2l6ZQ0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtbGciPjwvc3Bhbj4nIC4NCgkJCQkJJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLXhsJzoNCgkJCWNhc2UgJ2ljb24teGxhcmdlJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUNCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLXhsIj48L3NwYW4+JyAuDQoJCQkJCSc8L2E+JzsNCgkJCWJyZWFrOw0KDQoJCQljYXNlICdpY29uK25hbWUnOg0KCQkJCS8vIHRoZSBpY29uIHR5cGUgd2l0aCBuYW1lIHVuZGVyDQoJCQkJaWYgKCEkdGhpcy0+c2V0Y3NzKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmFkZGNzcyA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWRkX2NzcycsIHRydWUpOw0KCQkJCQkkdGhpcy0+c2V0Y3NzID0gdHJ1ZTsNCgkJCQl9DQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4NCgkJCQkJJzxzcGFuIGNsYXNzPSJmaXYtJyAuIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmlsZVZlY3RvclN0eWxlKHRydWUpIC4gJyBmaXYtaWNvbi0nIC4gJGl0ZW0tPmZpbGVfZXh0ZW5zaW9uIC4gJyBmaXYtc2l6ZS0nIC4gJHRoaXMtPnBhcmFtcy0+Z2V0KCdpY29uX3NpemUnLCAnbWQnKSAuICciPjwvc3Bhbj4gPGJyIC8+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24tbWQrbmFtZSc6DQoJCQljYXNlICdpY29uLW1lZGl1bStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbWVkaXVtIHNpemUgYW5kIG5hbWUgdW5kZXINCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+IDxiciAvPicgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLWxnK25hbWUnOg0KCQkJY2FzZSAnaWNvbi1sYXJnZStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggbGFyZ2Ugc2l6ZSBhbmQgbmFtZSB1bmRlcg0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtbGciPjwvc3Bhbj4gPGJyIC8+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24teGwrbmFtZSc6DQoJCQljYXNlICdpY29uLXhsYXJnZStuYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUgYW5kIG5hbWUgdW5kZXINCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLXhsIj48L3NwYW4+IDxiciAvPicgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoNCgkJCWNhc2UgJ2ljb24tbmFtZSc6DQoJCQkJLy8gdGhlIGljb24gdHlwZSB3aXRoIG5hbWUgbmV4dCB0bw0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUtJyAuICR0aGlzLT5wYXJhbXMtPmdldCgnaWNvbl9zaXplJywgJ21kJykgLiAnIj48L3NwYW4+ICcgLg0KCQkJCQkkaXRlbS0+ZmlsZV9uYW1lIC4gJzwvYT4nOw0KCQkJYnJlYWs7DQoJCQljYXNlICdpY29uLW1kLW5hbWUnOg0KCQkJY2FzZSAnaWNvbi1tZWRpdW0tbmFtZSc6DQoJCQkJLy8gdGhlIGljb24gdHlwZSB3aXRoIG1lZGl1bSBzaXplIGFuZCBuYW1lIG5leHQgdG8NCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLW1kIj48L3NwYW4+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24tbGctbmFtZSc6DQoJCQljYXNlICdpY29uLWxhcmdlLW5hbWUnOg0KCQkJCS8vIHRoZSBpY29uIHR5cGUgd2l0aCBsYXJnZSBzaXplIGFuZCBuYW1lIG5leHQgdG8NCgkJCQlpZiAoISR0aGlzLT5zZXRjc3MpDQoJCQkJew0KCQkJCQkkdGhpcy0+YWRkY3NzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZGRfY3NzJywgdHJ1ZSk7DQoJCQkJCSR0aGlzLT5zZXRjc3MgPSB0cnVlOw0KCQkJCX0NCgkJCQkkdGl0bGUgPSAoaXNzZXQoJGl0ZW0tPmRlc2NyaXB0aW9uKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaXRlbS0+ZGVzY3JpcHRpb24pKSA/ICRpdGVtLT5kZXNjcmlwdGlvbiA6ICRpdGVtLT5uYW1lOw0KCQkJCXJldHVybiAnPGEgaHJlZj0iJyAuICRpdGVtLT5saW5rIC4gJyIgdGl0bGU9IicgLiAgJHRpdGxlICAuICciPicgLg0KCQkJCQknPHNwYW4gY2xhc3M9ImZpdi0nIC4gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRGaWxlVmVjdG9yU3R5bGUodHJ1ZSkgLiAnIGZpdi1pY29uLScgLiAkaXRlbS0+ZmlsZV9leHRlbnNpb24gLiAnIGZpdi1zaXplLWxnIj48L3NwYW4+JyAuDQoJCQkJCSRpdGVtLT5maWxlX25hbWUgLiAnPC9hPic7DQoJCQlicmVhazsNCgkJCWNhc2UgJ2ljb24teGwtbmFtZSc6DQoJCQljYXNlICdpY29uLXhsYXJnZS1uYW1lJzoNCgkJCQkvLyB0aGUgaWNvbiB0eXBlIHdpdGggeGxhcmdlIHNpemUgYW5kIG5hbWUgbmV4dCB0bw0KCQkJCWlmICghJHRoaXMtPnNldGNzcykNCgkJCQl7DQoJCQkJCSR0aGlzLT5hZGRjc3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF9jc3MnLCB0cnVlKTsNCgkJCQkJJHRoaXMtPnNldGNzcyA9IHRydWU7DQoJCQkJfQ0KCQkJCSR0aXRsZSA9IChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQkJcmV0dXJuICc8YSBocmVmPSInIC4gJGl0ZW0tPmxpbmsgLiAnIiB0aXRsZT0iJyAuICAkdGl0bGUgIC4gJyI+JyAuDQoJCQkJCSc8c3BhbiBjbGFzcz0iZml2LScgLiBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZpbGVWZWN0b3JTdHlsZSh0cnVlKSAuICcgZml2LWljb24tJyAuICRpdGVtLT5maWxlX2V4dGVuc2lvbiAuICcgZml2LXNpemUteGwiPjwvc3Bhbj4nIC4NCgkJCQkJJGl0ZW0tPmZpbGVfbmFtZSAuICc8L2E+JzsNCgkJCWJyZWFrOw0KDQoJCQljYXNlICduYW1lJzoNCgkJCQkvLyBqdXN0IHRoZSBmaWxlIG5hbWUNCgkJCQlyZXR1cm4gJGl0ZW0tPmZpbGVfbmFtZTsNCgkJCWNhc2UgJ2Rlc2NyaXB0aW9uJzoNCgkJCQkvLyBqdXN0IHRoZSBmaWxlIGRlc2NyaXB0aW9uDQoJCQkJcmV0dXJuIChpc3NldCgkaXRlbS0+ZGVzY3JpcHRpb24pICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCRpdGVtLT5kZXNjcmlwdGlvbikpID8gJGl0ZW0tPmRlc2NyaXB0aW9uIDogJGl0ZW0tPm5hbWU7DQoJCQlicmVhazsNCgkJCWNhc2UgJ3VybCc6DQoJCQkJLy8gdGhlIHVybCB0eXBlDQoJCQkJcmV0dXJuICRpdGVtLT5saW5rOw0KCQkJYnJlYWs7DQoJCQljYXNlICdsaW5rJzoNCgkJCQkvLyB0aGUgbGluayB0eXBlDQoJCQkJJHRpdGxlID0gKGlzc2V0KCRpdGVtLT5kZXNjcmlwdGlvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPmRlc2NyaXB0aW9uKSkgPyAkaXRlbS0+ZGVzY3JpcHRpb24gOiAkaXRlbS0+bmFtZTsNCgkJCQlyZXR1cm4gJzxhIGhyZWY9IicgLiAkaXRlbS0+bGluayAuICciIHRpdGxlPSInIC4gICR0aXRsZSAgLiAnIj4nIC4gJGl0ZW0tPmZpbGVfbmFtZSAuICc8L2E+JzsNCgkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiAnJzsNCgl9DQoNCgkvKioNCgkgKiBUaGUgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGZpbGVzDQoJICoNCgkgKiBAcGFyYW0gICBhcnJheSAgICRpZHMgIFRoZSBpZHMgb2YgdGhlIGZpbGVzIHRvIHJldHJpZXZlDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRJdGVtcygkaWRzKQ0KCXsNCgkJLy8gR2V0IGEgZGIgY29ubmVjdGlvbi4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCS8vIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuDQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJJHF1ZXJ5LT5zZWxlY3QoJGRiLT5xdW90ZU5hbWUoYXJyYXkoJ2lkJywgJ21haW5fZmlsZScsICdhY2Nlc3MnLCAnbmFtZScsICdkZXNjcmlwdGlvbicpKSk7DQoJCSRxdWVyeS0+ZnJvbSgkZGItPnF1b3RlTmFtZSgnI19fW1tbY29tcG9uZW50XV1dX2ZpbGUnKSk7DQoNCgkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgSU4gKCcgLiBpbXBsb2RlKCcsJywkaWRzKSAuICcpJyk7DQoJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCgkJJGRiLT5leGVjdXRlKCk7DQoJCWlmICgkZGItPmdldE51bVJvd3MoKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSBpdGVtcw0KCQkJJGl0ZW1zID0gJGRiLT5sb2FkT2JqZWN0TGlzdCgnaWQnKTsNCgkJCS8vIHNldCBsaW5rIG9wdGlvbnMNCgkJCSRsaW5rb3B0aW9ucyA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0TGlua09wdGlvbnMoKTsNCgkJCS8vIGdldCBzZXNzaW9uIHRva2VuDQoJCQkkc2Vzc2lvbiA9IEpvb21sYV9fXzViYTM4NTEzXzVjNGZfNGIwZF85MzVlXzQ5ZTk4NmE2YmNlOF9fX1Bvd2VyOjpnZXRGb3JtVG9rZW4oKTsNCgkJCS8vICB1bmxvY2sgc29tZSBkYXRhDQoJCQlmb3JlYWNoICgkaXRlbXMgYXMgJGlkID0+ICYkaXRlbSkNCgkJCXsNCgkJCQlpZiAoIWVtcHR5KCRpdGVtLT5tYWluX2ZpbGUpICYmICFpc19udW1lcmljKCRpdGVtLT5tYWluX2ZpbGUpICYmICRpdGVtLT5tYWluX2ZpbGUgPT09IGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkaXRlbS0+bWFpbl9maWxlLCB0cnVlKSkpDQoJCQkJew0KCQkJCQkvLyBtZWRpdW0gZGVjcnlwdCBkYXRhIG1haW5fZmlsZS4NCgkJCQkJJGl0ZW0tPm1haW5fZmlsZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkaXRlbS0+bWFpbl9maWxlKTsNCgkJCQl9DQpbQ1VTVE9NQ09ERT1zZXRTZWN1cmVGaWxlTGlua0luSXRlbU9iamVjdCsJCQkJXQ0KCQkJfQ0KCQkJcmV0dXJuICRpdGVtczsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', '[[[Component]]] Download in Content', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.1', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'set Download of Files in Content', '', 1, '', '', 1, '2019-09-13 17:15:19', '2024-08-06 20:54:16', 25, '', 2),
(7, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add language packaging to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '12dea095-2cc8-4830-b435-3d4599177ed1', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcUGxhY2VmaXg7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xJbmRlbnQ7', 11, '{\"method_selection0\":{\"method\":\"88\"},\"method_selection1\":{\"method\":\"55\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBEYXRhYmFzZSBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgRGF0YWJhc2VEcml2ZXINCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkZGI7DQoNCgkvKioNCgkgKiBBcHBsaWNhdGlvbiBvYmplY3QNCgkgKg0KCSAqIEB2YXIgICAgQ01TQXBwbGljYXRpb24NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXBwOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkOw0KDQoJLyoqDQoJICogVGhlIHBlcmNlbnRhZ2UgYmVmb3JlIGEgbGFuZ3VhZ2UgY2FuIGJlIGFkZGVkDQoJICogDQoJICogQHZhciAgICAgaW50DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSA9IDIwMDsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZXMgbmFtZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGxhbmd1YWdlTmFtZXMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBsYW5ndWFnZSBidWlsZGluZyB0cmFja2VyDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsYW5ndWFnZVRyYWNrZXIgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUZvbGRlcjsNCg0KCS8qKg0KCSAqIFRoZSBzaG91bGQgdGhlIHNpdGUgZm9sZGVyIGJlIHJlbW92ZWQNCgkgKiANCgkgKiBAdmFyICAgICBib29sDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkcmVtb3ZlU2l0ZUVkaXRGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgY29tcG9uZW50IHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21wb25lbnRQYXRoOw0KDQoJLyoqDQoJICogVGhlIGNvbXBpbGVyIHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21waWxlclBhdGg7DQoNCgkvKioNCgkgKiBUaGUgdGVtcG9yYWwgcGF0aA0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHRlbXBQYXRoOw0KDQoJLyoqDQoJICogVGhlIGpvb21sYSB2ZXJzaW9uDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkam9vbWxhVmVyc2lvbjsNCg0KCS8qKg0KCSAqIFRoZSBjb21wb25lbnQgdmVyc2lvbg0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNvbXBvbmVudF92ZXJzaW9uOw0KDQoJLyoqDQoJICogVGhlIGNvbXBvbmVudCBuYW1lDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkY29tcG9uZW50Q29kZU5hbWU7DQoNCgkvKioNCgkgKiBUaGUgZmlsZSBjb250ZW50IHN0YXRpYyB2YWx1ZXMNCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGZpbGVDb250ZW50U3RhdGljOw0KDQoJLyoNCgkgKiBUaGUgbGluZSBudW1iZXJzIFN3aXRjaA0KCSAqIA0KCSAqIEB2YXIgICAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkZGVidWdMaW5lbnIgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBBY3RpdmUgQ29tcG9uZW50cw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhY3RpdmVDb21wb25lbnRzID0gW107DQoNCgkvKioNCgkgKiBUaGUgQWN0aXZlIENvbXBvbmVudHMgTmFtZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYWN0aXZlQ29tcG9uZW50c05hbWVzID0gW107DQoNCgkvKioNCgkgKiBUaGUgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGxhbmd1YWdlcyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIExhbmd1YWdlIGJ1aWxkIGRldGFpbHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYnVpbGREZXRhaWxzID0gW107DQoNCgkvKioNCgkgKiBUaGUgRXhjbHVkZWQgTGFuZ3VhZ2VzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGV4Y2x1ZGVkTGFuZyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIEFjdGl2ZSBMYW5ndWFnZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbGFuZ1RhZzsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJGNvbXBvbmVudC0+cGFyYW1zID0gKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtcykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkY29tcG9uZW50LT5wYXJhbXMsIHRydWUpIDogJGNvbXBvbmVudC0+cGFyYW1zOw0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbXBvbmVudC0+cGFyYW1zKSAmJiBpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXSkgJiYNCgkJCWlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydhY3RpdmF0ZSddKSAmJiAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnYWN0aXZhdGUnXSA9PSAxKQ0KCQl7DQoJCQkvLyBsb2FkIHRoZSBhZG1pbiBjb21wb25lbnQgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGNvbXBvbmVudC0+aWRdID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9jb250ZXh0Ow0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skY29tcG9uZW50LT5pZF0gPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCRjb21wb25lbnQtPm5hbWVfY29kZSk7DQoJCQkkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1JlYWxOYW1lc1skY29tcG9uZW50LT5pZF0gPSAkY29tcG9uZW50LT5uYW1lOw0KCQkJLy8gYWRkIGV4Y2x1ZGVkIGxpc3Qgb2YgbGFuZ3VhZ2VzDQoJCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+cGFyYW1zWydsYW5ndWFnZV9vcHRpb25zJ11bJ2xhbmd1YWdlcyddKSkNCgkJCXsNCgkJCQkkdGhpcy0+ZXhjbHVkZWRMYW5nWyRjb21wb25lbnQtPmlkXSA9ICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydsYW5ndWFnZXMnXTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+ZXhjbHVkZWRMYW5nWyRjb21wb25lbnQtPmlkXSA9IGFycmF5KCk7DQoJCQl9DQoJCQkvLyBub3cgc2V0IHRoZSBjb21wb25lbnQgYWRkIGxhbmd1YWdlcyBpZiB3ZSBzaG91bGQgdXNlIGxvY2FsICgyKQ0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWyd1c2VfcGVyY2VudGFnZWxhbmd1YWdlYWRkJ10pICYmICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWyd1c2VfcGVyY2VudGFnZWxhbmd1YWdlYWRkJ10gPT0gMikNCgkJCXsNCgkJCQkkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSA9ICRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydwZXJjZW50YWdlbGFuZ3VhZ2VhZGQnXTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldF0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldCgpDQoJew0KCQkvLyBnZXQgY29tcG9uZW50IGlkDQoJCSRpZCA9IChpbnQpIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfaWQ7DQoJCS8vIGNoZWNrIGlmIHRoZXJlIGlzIGFjdGl2ZQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHMpDQoJCQkmJiBpc3NldCgkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1skaWRdKSAmJiAkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkT3ZlcmlkZSAhPSAyMDApDQoJCXsNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5zZXQoJ3BlcmNlbnRhZ2VfbGFuZ3VhZ2VfYWRkJywgJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJLy8gbGV0cyBtYXAgc29tZSBhcnJheXMgdG8gdGhlIHBsdWdpbiBmb3IgbGF0ZXIgdXNlDQoJCSR0aGlzLT5jb21waWxlclBhdGggPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcGlsZXJfcGF0aDsNCgkJJHRoaXMtPnRlbXBQYXRoID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnRtcF9wYXRoOw0KCQkkdGhpcy0+bGFuZ1RhZyA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZzsNCgkJJHRoaXMtPmRlYnVnTGluZW5yID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmdldCgnZGVidWdfbGluZV9ucicsIGZhbHNlKTsNCgkJJHRoaXMtPmNvbXBvbmVudF92ZXJzaW9uID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmdldCgnY29tcG9uZW50X3ZlcnNpb24nLCAnMS4wLjAnKTsNCgkJJHRoaXMtPmpvb21sYVZlcnNpb24gPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+am9vbWxhX3ZlcnNpb247DQoJCSR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGQgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+cGVyY2VudGFnZV9sYW5ndWFnZV9hZGQ7DQoJCSR0aGlzLT5yZW1vdmVTaXRlRm9sZGVyID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnJlbW92ZV9zaXRlX2ZvbGRlcjsNCgkJJHRoaXMtPnJlbW92ZVNpdGVFZGl0Rm9sZGVyID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnJlbW92ZV9zaXRlX2VkaXRfZm9sZGVyOw0KCQkkdGhpcy0+Y29tcG9uZW50UGF0aCA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5QYXRocycpLT5jb21wb25lbnRfcGF0aDsNCgkJJHRoaXMtPmNvbXBvbmVudENvZGVOYW1lID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9jb2RlX25hbWU7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEJ1aWxkIFBsdWdpbiBMYW5nIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZUJ1aWxkUGx1Z2luTGFuZ0ZpbGVzKCYkcGx1Z2luKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcG9uZW50X2lkOw0KCQkvLyBjaGVjayBpZiB0aGVyZSBpcyBhY3RpdmUNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5hY3RpdmVDb21wb25lbnRzKSAmJiBpc3NldCgkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1skaWRdKSkNCgkJew0KCQkJLy8gc2V0IGZpbGUgbmFtZQ0KCQkJJGZpbGVfbmFtZSA9ICdwbGdfJyAuIHN0cnRvbG93ZXIoJHBsdWdpbi0+Z3JvdXApIC4gJ18nIC4gc3RydG9sb3dlcigkcGx1Z2luLT5jb2RlX25hbWUpOw0KCQkJLy8gZXh0cnVkZSB0aGUgbGFuZ3VhZ2VzIHRoYXQgc2hvdWxkIG5vdCByZW1haW4gaW4gdGhlIHBsdWdpbg0KCQkJJHRoaXMtPmV4dHJ1ZGVMYW5ndWFnZXMoJGlkLCAncGx1Z2lucycsIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJGZpbGVfbmFtZSwgJ2FkbWluJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgQnVpbGQgTW9kdWxlIExhbmcgRmlsZXNdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlQnVpbGRNb2R1bGVMYW5nRmlsZXMoJiRtb2R1bGUpDQoJew0KCQkvLyBnZXQgY29tcG9uZW50IGlkDQoJCSRpZCA9IChpbnQpIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfaWQ7DQoJCS8vIGNoZWNrIGlmIHRoZXJlIGlzIGFjdGl2ZQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHMpICYmIGlzc2V0KCR0aGlzLT5hY3RpdmVDb21wb25lbnRzWyRpZF0pKQ0KCQl7DQoJCQkvLyBleHRydWRlIHRoZSBsYW5ndWFnZXMgdGhhdCBzaG91bGQgbm90IHJlbWFpbiBpbiB0aGUgbW9kdWxlDQoJCQkkdGhpcy0+ZXh0cnVkZUxhbmd1YWdlcygkaWQsICdtb2R1bGVzJywgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmxhbmdfdGFnLCAkbW9kdWxlLT5maWxlX25hbWUsICRtb2R1bGUtPnRhcmdldF9jbGllbnQpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEJ1aWxkIEFsbCBMYW5nIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZUJ1aWxkQWxsTGFuZ0ZpbGVzKCR0YXJnZXRBcmVhKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcG9uZW50X2lkOw0KCQkvLyBjaGVjayBpZiB0aGVyZSBpcyBhY3RpdmUNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5hY3RpdmVDb21wb25lbnRzKSAmJiBpc3NldCgkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1skaWRdKSkNCgkJew0KCQkJLy8gc2V0IGZpbGUgbmFtZQ0KCQkJJGZpbGVfbmFtZSA9ICdjb21fJyAuICR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGlkXTsNCgkJCS8vIGV4dHJ1ZGUgdGhlIGxhbmd1YWdlcyB0aGF0IHNob3VsZCBub3QgcmVtYWluIGluIHRoZSBtb2R1bGUNCgkJCSR0aGlzLT5leHRydWRlTGFuZ3VhZ2VzKCRpZCwgJHRhcmdldEFyZWEsIENGYWN0b3J5OjpfKCdDb25maWcnKS0+bGFuZ190YWcsICRmaWxlX25hbWUpOw0KCQl9DQoJCS8vIGJ1aWxkIHRoZSBsYW5ndWFnZSBwYWNrYWdlcw0KCQkkdGhpcy0+YnVpbGRMYW5ndWFnZXMoJGlkLCBDRmFjdG9yeTo6XygnQ29uZmlnJyktPmxhbmdfdGFnKTsNCgl9DQoNCgkvKioNCgkgKiBFeHRydWRlciBvZiB0aGUgbGFuZ3VhZ2VzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZXh0cnVkZUxhbmd1YWdlcygmJGlkLCAkdGFyZ2V0QXJlYSwgJGxhbmdUYWcsICYkZmlsZV9uYW1lLCAkdGFyZ2V0X2NsaWVudCA9ICdib3RoJykNCgl7DQoJCSRtYWluTGFuZ0xvYWRlciA9IFtdOw0KCQkvLyBjaGVjayBpZiB0aGlzIGlkIHdhcyBzZXQgYmVmb3JlDQoJCWlmICghaXNzZXQoJHRoaXMtPmxhbmd1YWdlc1skaWRdKSkNCgkJew0KCQkJJHRoaXMtPmxhbmd1YWdlc1skaWRdID0gW107DQoJCQkkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF0gPSBbXTsNCgkJfQ0KCQkvLyBjaGVjayBpZiB0aGlzIGZpbGUgbmFtZSB3YXMgc2V0IGJlZm9yZQ0KCQlpZiAoIWlzc2V0KCR0aGlzLT5sYW5ndWFnZXNbJGlkXVskZmlsZV9uYW1lXSkpDQoJCXsNCgkJCSR0aGlzLT5sYW5ndWFnZXNbJGlkXVskZmlsZV9uYW1lXSA9IFtdOw0KCQl9DQoJCS8vIHNldCBhbGwgdGhlIGV4dHJhIGxhbmd1YWdlcyBub3QgZXhjbHVkZWQNCgkJZm9yZWFjaCAoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5MYW5ndWFnZXMnKS0+Z2V0KCR0YXJnZXRBcmVhKSBhcyAka2V5ID0+ICRsYW5ndWFnZSkNCgkJew0KCQkJaWYgKCRrZXkgIT09ICRsYW5nVGFnICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRsYW5ndWFnZSkgJiYgKCFpc3NldCgkdGhpcy0+ZXhjbHVkZWRMYW5nWyRpZF0pIHx8ICFpbl9hcnJheSgka2V5LCAkdGhpcy0+ZXhjbHVkZWRMYW5nWyRpZF0pKSkNCgkJCXsNCgkJCQkvLyBhZGQgdG8gb3VyIGJ1Y2tldA0KCQkJCSR0aGlzLT5sYW5ndWFnZXNbJGlkXVskZmlsZV9uYW1lXVska2V5XSA9ICRsYW5ndWFnZTsNCgkJCQkvLyByZW1vdmUgZnJvbSB0aGUgSkNCIGJ1aWxkDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5MYW5ndWFnZXMnKS0+cmVtb3ZlKCJ7JHRhcmdldEFyZWF9Lnska2V5fSIpOw0KCQkJfQ0KCQkJLy8gY291bnQgdGhlIGFyZWEgc3RyaW5ncw0KCQkJaWYgKCRsYW5nVGFnID09PSAka2V5KQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRsYW5ndWFnZSBhcyAkYXJlYSA9PiAkbGFuZ3VhZ2VTdHJpbmdzKQ0KCQkJCXsNCgkJCQkJJG1haW5MYW5nTG9hZGVyWyRhcmVhXSA9IGNvdW50KCRsYW5ndWFnZVN0cmluZ3MpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkvLyBzdG9yZSBkZXRhaWxzIGZvciBidWlsZA0KCQkkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV0gPSBbJGxhbmdUYWcgPT4gJG1haW5MYW5nTG9hZGVyLCAndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnRdOw0KCX0NCg0KCS8qKg0KCSAqIFN0YXJ0IHRoZSBidWlsZGluZyBvZiB0aGUgbGFuZ3VhZ2VzIHBhY2thZ2VzDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBidWlsZExhbmd1YWdlcygmJGlkLCAkbGFuZ1RhZykNCgl7DQoJCWlmIChpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSkpDQoJCXsNCgkJCS8vIHJlc3QgeG1sIGFycmF5DQoJCQkkbGFuZ1hNTCA9IFtdOw0KCQkJJGxhbmdOYW1lcyA9IFtdOw0KCQkJJGxhbmdQYWNrYWdlcyA9IFtdOw0KCQkJJGxhbmdaSVBOYW1lcyA9IFtdOw0KCQkJJGxhbmdYTUxOYW1lcyA9IFtdOw0KCQkJJHZlcnNpb25OYW1lID0gJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNOYW1lc1skaWRdIC4gJ192JyAuIHN0cl9yZXBsYWNlKCcuJywgJ18nLCAkdGhpcy0+Y29tcG9uZW50X3ZlcnNpb24gLiAnX19KJyAuICR0aGlzLT5qb29tbGFWZXJzaW9uKTsNCgkJCWZvcmVhY2ggKCR0aGlzLT5sYW5ndWFnZXNbJGlkXSBhcyAkZmlsZV9uYW1lID0+ICRsYW5ndWFnZXMpDQoJCQl7DQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRsYW5ndWFnZXMpICYmIGlzc2V0KCR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ10pKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBtYWluIGxhbmcgbG9hZGVyDQoJCQkJCSRtYWluTGFuZ0xvYWRlciA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVskbGFuZ1RhZ107DQoJCQkJCS8vIGdldCB0aGUgdGFyZ2V0IGNsaWVudA0KCQkJCQkkdGFyZ2V0X2NsaWVudCA9ICR0aGlzLT5idWlsZERldGFpbHNbJGlkXVskZmlsZV9uYW1lXVsndGFyZ2V0X2NsaWVudCddOw0KCQkJCQlmb3JlYWNoICgkbGFuZ3VhZ2VzIGFzICR0YWcgPT4gJGFyZWFzKQ0KCQkJCQl7DQoJCQkJCQkvLyB0cmltIHRoZSB0YWcNCgkJCQkJCSR0YWcgPSB0cmltKCR0YWcpOw0KCQkJCQkJLy8gZ2V0IGxhbmd1YWdlIG5hbWUNCgkJCQkJCSRsYW5nTmFtZSA9ICR0aGlzLT5nZXRMYW5ndWFnZU5hbWUoJHRhZyk7DQoJCQkJCQkkbGFuZ0NvZGVOYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkbGFuZ05hbWUsICdGJyk7DQoJCQkJCQkvLyBzZXQgdGhlIGZpbGUgZm9sZGVyIG5hbWUNCgkJCQkJCSRsYW5nRm9sZGVyRmlsZU5hbWUgPSAkbGFuZ0NvZGVOYW1lIC4gJ18nIC4gJHZlcnNpb25OYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBtYWluIGZvbGRlciBwYXRoDQoJCQkJCQkkbWFpbl9wYXRoID0gJHRoaXMtPmNvbXBpbGVyUGF0aCAuICcvJyAuICRsYW5nRm9sZGVyRmlsZU5hbWUgLiAnLyc7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmd1YWdlIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ05hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdOYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBsYW5nIHppcCBuYW1lIGZvciBsYXRlcg0KCQkJCQkJJGxhbmdaSVBOYW1lc1skbWFpbl9wYXRoXSA9ICRsYW5nRm9sZGVyRmlsZU5hbWU7DQoJCQkJCQkvLyBzZXQgdGhlIGxhbmcgeG1sIG5hbWUgZm9yIGxhdGVyDQoJCQkJCQkkbGFuZ1hNTE5hbWVzWyRtYWluX3BhdGhdID0gJGxhbmdDb2RlTmFtZSAuICdfJyAuICR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGlkXSA7DQoJCQkJCQkvLyB3ZSBtdXN0IGNoZWNrIGlmIG9sZCBmb2xkZXIgaXMgZm91bmQgYW5kIHJlbW92ZSBpdA0KCQkJCQkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdKSAmJiBKRm9sZGVyOjpleGlzdHMoJG1haW5fcGF0aCkpDQoJCQkJCQl7DQoJCQkJCQkJLy8gcmVtb3ZlIHRoZSBtYWluIGZvbGRlcg0KCQkJCQkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6cmVtb3ZlRm9sZGVyKCRtYWluX3BhdGgpOw0KCQkJCQkJCS8vIGRvIG5vdCByZW1vdmUgaXQgYWdhaW4NCgkJCQkJCQkkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdID0gdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJCS8vIGNoZWNrIGlmIGV4aXN0IGFuZCBjcmVhdGUgaWYgbm90DQoJCQkJCQlpZiAoIUpGb2xkZXI6OmV4aXN0cygkbWFpbl9wYXRoKSkNCgkJCQkJCXsNCgkJCQkJCQlKRm9sZGVyOjpjcmVhdGUoJG1haW5fcGF0aCk7DQoJCQkJCQkJLy8gY291bnQgdGhlIGZvbGRlciBjcmVhdGVkDQoJCQkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+Zm9sZGVyKys7DQoJCQkJCQl9DQoJCQkJCQlmb3JlYWNoICgkYXJlYXMgYXMgJGFyZWEgPT4gJGxhbmd1YWdlU3RyaW5ncykNCgkJCQkJCXsNCgkJCQkJCQkvLyBnZXQgdGhlIGZpbGUgbmFtZQ0KCQkJCQkJCSRmaWxlTmFtZSA9ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhKTsNCgkJCQkJCQkvLyBjaGVjayBpZiBsYW5ndWFnZSBzaG91bGQgYmUgYWRkZWQNCgkJCQkJCQlpZiAoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnTGFuZ3VhZ2UuVHJhbnNsYXRpb24nKS0+Y2hlY2soJHRhZywgJGxhbmd1YWdlU3RyaW5ncywgJG1haW5MYW5nTG9hZGVyWyRhcmVhXSwgJGZpbGVOYW1lKSAmJiAoJGFjdGlvbnMgPSAkdGhpcy0+Z2V0TGFuZ0FjdGlvbnMoJGZpbGVfbmFtZSwgJHRhZywgJGFyZWEsICR0YXJnZXRfY2xpZW50KSkgIT09IGZhbHNlKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gc2V0IHRoZSBsYW5ndWFnZSBkYXRhDQoJCQkJCQkJCSRsYW5nID0gYXJyYXlfbWFwKA0KCQkJCQkJCQkJZnVuY3Rpb24gKCRsYW5nc3RyaW5nLCAkcGxhY2Vob2xkZXIpIHsNCgkJCQkJCQkJCQlyZXR1cm4gJHBsYWNlaG9sZGVyIC4gJz0iJyAuICRsYW5nc3RyaW5nIC4gJyInOw0KCQkJCQkJCQkJfSwgYXJyYXlfdmFsdWVzKCRsYW5ndWFnZVN0cmluZ3MpLA0KCQkJCQkJCQkJYXJyYXlfa2V5cygkbGFuZ3VhZ2VTdHJpbmdzKQ0KCQkJCQkJCQkpOw0KCQkJCQkJCQkvLyBzZXQgdGhlIGxpbmUgY291bnRlcg0KCQkJCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdVdGlsaXRpZXMuQ291bnRlcicpLT5saW5lICs9IGNvdW50KA0KCQkJCQkJCQkJKGFycmF5KSAkbGFuZw0KCQkJCQkJCQkpOw0KCQkJCQkJCQkvLyBjaGVjayB0aGF0IHRoZSBtYWluIGZvbGRlciBleGlzdA0KCQkJCQkJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkYWN0KQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkY2xpZW50X3BhdGggPSAkbWFpbl9wYXRoIC4gJGFjdFsndGFyZ2V0X2NsaWVudCddIC4gJy8nOw0KCQkJCQkJCQkJLy8gY2hlY2sgaWYgZXhpc3QgYW5kIGNyZWF0ZSBpZiBub3QNCgkJCQkJCQkJCWlmICghSkZvbGRlcjo6ZXhpc3RzKCRjbGllbnRfcGF0aCkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJSkZvbGRlcjo6Y3JlYXRlKCRjbGllbnRfcGF0aCk7DQoJCQkJCQkJCQkJLy8gY291bnQgdGhlIGZvbGRlciBjcmVhdGVkDQoJCQkJCQkJCQkJJHRoaXMtPmZvbGRlckNvdW50Kys7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkvLyB3cml0ZSB0aGUgbGFuZ3VhZ2UgZGF0YSB0byBhIGZpbGUNCgkJCQkJCQkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6d3JpdGVGaWxlKA0KCQkJCQkJCQkJCSRjbGllbnRfcGF0aCAuICRhY3RbJ2ZpbGVfbmFtZSddLCBpbXBsb2RlKFBIUF9FT0wsICRsYW5nKQ0KCQkJCQkJCQkJKTsNCgkJCQkJCQkJCS8vIGNvdW50IHRoZSBmaWxlIGNyZWF0ZWQNCgkJCQkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Db3VudGVyJyktPmxpbmUrKzsNCgkJCQkJCQkJCS8vIGJ1aWxkIHhtbCBzdHJpbmdzDQoJCQkJCQkJCQlpZiAoIWlzc2V0KCRsYW5nWE1MWyRtYWluX3BhdGhdKSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkkbGFuZ1hNTFskbWFpbl9wYXRoXSA9IGFycmF5KCk7DQoJCQkJCQkJCQkJJGxhbmdQYWNrYWdlc1skbWFpbl9wYXRoXSA9IGFycmF5KCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlpZiAoIWlzc2V0KCRsYW5nWE1MWyRtYWluX3BhdGhdWyRhY3RbJ3RhcmdldF9jbGllbnQnXV0pKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRsYW5nWE1MWyRtYWluX3BhdGhdWyRhY3RbJ3RhcmdldF9jbGllbnQnXV0gPSBhcnJheSgpOw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy8gc2V0IHRoZSBwYWNrYWdlIHRhcmdldHMNCgkJCQkJCQkJCSRsYW5nUGFja2FnZXNbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSA9ICRhY3RbJ3RhcmdldCddOw0KCQkJCQkJCQkJJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXVtdID0gJGFjdFsnZmlsZV9uYW1lJ107DQoJCQkJCQkJCX0NCgkJCQkJCQkJLy8gY2xlYXIgbWVtb3J5DQoJCQkJCQkJCXVuc2V0KCRsYW5nKTsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoNCgkJCS8vIGxvYWQgdGhlIGxhbmcgeG1sDQoJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGxhbmdYTUwpKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRsYW5nWE1MIGFzICRtYWluX3BhdGggPT4gJHRhcmdldF9jbGllbnRzKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBYTUwNCgkJCQkJJHhtbCA9IHN0cl9yZXBsYWNlKA0KCQkJCQkJCWFycmF5X2tleXMoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hbGxBY3RpdmUoKSksDQoJCQkJCQkJYXJyYXlfdmFsdWVzKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWxsQWN0aXZlKCkpLA0KCQkJCQkJCSR0aGlzLT5nZXRMYW5ndWFnZVhNTCgkdGFyZ2V0X2NsaWVudHMsICRsYW5nUGFja2FnZXNbJG1haW5fcGF0aF0sICRsYW5nTmFtZXNbJG1haW5fcGF0aF0pDQoJCQkJCQkpOw0KCQkJCQkvLyBnZXQgdGhlIFhNTCBGaWxlIE5hbWUNCgkJCQkJJHhtbEZpbGVOYW1lID0gJGxhbmdYTUxOYW1lc1skbWFpbl9wYXRoXSAuICcueG1sJzsNCgkJCQkJLy8gd3JpdGUgdGhlIGxhbmd1YWdlIGRhdGEgdG8gYSBmaWxlDQoJCQkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6d3JpdGVGaWxlKA0KCQkJCQkJJG1haW5fcGF0aCAuICR4bWxGaWxlTmFtZSwgJHhtbA0KCQkJCQkpOw0KCQkJCQkvLyBzZXQgdGhlIHppcCBmdWxsIHBhdGgNCgkJCQkJJHppcFBhdGggPSAkdGhpcy0+dGVtcFBhdGggLiAnLycgLiAkbGFuZ1pJUE5hbWVzWyRtYWluX3BhdGhdIC4gJy56aXAnOw0KCQkJCQkvLyBub3cgemlwIHRoZSBwYWNrYWdlDQoJCQkJCWlmIChbW1tDb21wb25lbnRdXV1IZWxwZXI6OnppcCgNCgkJCQkJCSRtYWluX3BhdGgsICR6aXBQYXRoDQoJCQkJCSkpDQoJCQkJCXsNCgkJCQkJCS8vIG5vdyByZW1vdmUgdGhlIHBhY2thZ2UNCgkJCQkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6cmVtb3ZlRm9sZGVyKCRtYWluX3BhdGgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSB4bWwNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VYTUwoJiR0YXJnZXRfY2xpZW50cywgJiR0YXJnZXRzLCAmJGxhbmd1YWdlKQ0KCXsNCgkJJHhtbCA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuICc8ZXh0ZW5zaW9uIHR5cGU9ImZpbGUiIHZlcnNpb249IjMuMiIgbWV0aG9kPSJ1cGdyYWRlIj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPG5hbWU+JyAuIFBsYWNlZml4OjpfaCgnQ29tcG9uZW50JykgLiAnIC0gJyAuICRsYW5ndWFnZSAuICcgTGFuZ3VhZ2UgUGFjazwvbmFtZT4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPGNyZWF0aW9uRGF0ZT4nIC4gUGxhY2VmaXg6Ol9oKCdCVUlMRERBVEUnKSAuICc8L2NyZWF0aW9uRGF0ZT4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPGF1dGhvcj4nIC4gUGxhY2VmaXg6Ol9oKCdBVVRIT1InKSAuICc8L2F1dGhvcj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPGF1dGhvckVtYWlsPicgLiBQbGFjZWZpeDo6X2goJ0FVVEhPUkVNQUlMJykgLiAnPC9hdXRob3JFbWFpbD4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMSkgLiAnPGF1dGhvclVybD4nIC4gUGxhY2VmaXg6Ol9oKCdBVVRIT1JXRUJTSVRFJykgLiAnPC9hdXRob3JVcmw+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxjb3B5cmlnaHQ+JyAuIFBsYWNlZml4OjpfaCgnQ09QWVJJR0hUJykgLiAnPC9jb3B5cmlnaHQ+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxsaWNlbnNlPicgLiBQbGFjZWZpeDo6X2goJ0xJQ0VOU0UnKSAuICc8L2xpY2Vuc2U+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzx2ZXJzaW9uPicgLiBQbGFjZWZpeDo6X2goJ0FDVFVBTFZFUlNJT04nKSAuICc8L3ZlcnNpb24+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDEpIC4gJzxkZXNjcmlwdGlvbj4nIC4gJGxhbmd1YWdlIC4gJyBMYW5ndWFnZSBQYWNrIC0gJyAuIFBsYWNlZml4OjpfaCgnU0hPUlRfREVTQ1JJUFRJT04nKSAuICc8L2Rlc2NyaXB0aW9uPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8ZmlsZXNldD4nOw0KCQlmb3JlYWNoICgkdGFyZ2V0X2NsaWVudHMgYXMgJHRhcmdldF9jbGllbnQgPT4gJGZpbGVzKQ0KCQl7DQoJCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAnPGZpbGVzIGZvbGRlcj0iJyAuICR0YXJnZXRfY2xpZW50IC4gJyIgdGFyZ2V0PSInIC4gJHRhcmdldHNbJHRhcmdldF9jbGllbnRdIC4gJyI+JzsNCgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkNCgkJCXsNCgkJCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAnPGZpbGVuYW1lPicgLiAkZmlsZSAuICc8L2ZpbGVuYW1lPic7DQoJCQl9DQoJCQkkeG1sIC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAnPC9maWxlcz4nOw0KCQl9DQoJCSR4bWwgLj0gUEhQX0VPTCAuIEluZGVudDo6XygxKSAuICc8L2ZpbGVzZXQ+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gJzwvZXh0ZW5zaW9uPic7DQoNCgkJcmV0dXJuICR4bWw7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSBuYW1lDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlTmFtZSgmJHRhZykNCgl7DQoJCWlmICghaXNzZXQoJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ10pKQ0KCQl7DQoJCQlpZiAoKCRuYW1lID0gU3VwZXJfX19kYjg3YzMzOV81YmI2XzQyOTFfYTdlZl8yYzQ4ZWExYjA2YmNfX19Qb3dlcjo6dmFyKCdsYW5ndWFnZScsICR0YWcsICdsYW5ndGFnJywgJ25hbWUnKSkgIT09IGZhbHNlKQ0KCQkJew0KCQkJCSR0aGlzLT5sYW5ndWFnZU5hbWVzWyR0YWddID0gJG5hbWU7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ10gPSAkdGFnOw0KCQkJfQ0KCQl9DQoJCXJldHVybiAkdGhpcy0+bGFuZ3VhZ2VOYW1lc1skdGFnXTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGxhbmd1YWdlIGFjdGlvbnMNCgkgKiANCgkgKiBAcmV0dXJuICBhcnJheQ0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMYW5nQWN0aW9ucygmJGZpbGVfbmFtZSwgJiR0YWcsICYkYXJlYSwgJiR0YXJnZXRfY2xpZW50KQ0KCXsNCgkJLy8gY29tcG9uZW50IGV4dGVudGlvbiB0eXBlDQoJCWlmIChzdHJwb3MoJGZpbGVfbmFtZSwgJ2NvbV8nKSAhPT0gZmFsc2UpDQoJCXsNCgkJCSR0YXJnZXRfY2xpZW50ID0gJ2FkbWluJzsNCgkJCSR0YXJnZXQgPSAnYWRtaW5pc3RyYXRvci9sYW5ndWFnZS8nOw0KCQkJaWYgKHN0cnBvcygkYXJlYSwgJ3NpdGUnKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJHRhcmdldF9jbGllbnQgPSAnc2l0ZSc7DQoJCQkJJHRhcmdldCA9ICdsYW5ndWFnZS8nOw0KCQkJfQ0KCQkJcmV0dXJuIGFycmF5KA0KCQkJCWFycmF5KA0KCQkJCQkndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnQsDQoJCQkJCSd0YXJnZXQnID0+ICR0YXJnZXQgLiAkdGFnLA0KCQkJCQknZmlsZV9uYW1lJyA9PiAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSkNCgkJCQkpDQoJCQkpOw0KCQl9DQoJCWVsc2VpZiAoJ2FkbWluJyA9PT0gJHRhcmdldF9jbGllbnQpDQoJCXsNCgkJCSR0YXJnZXQgPSAnYWRtaW5pc3RyYXRvci9sYW5ndWFnZS8nOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHRhcmdldCA9ICdsYW5ndWFnZS8nOw0KCQl9DQoJCS8vIG1vZHVsZS9wbHVnaW4gZXh0ZW5zaW9uIHR5cGUgKFRPRE8gd2UgcmV0dXJuIGJvdGggZm9yIG5vdykNCgkJcmV0dXJuIGFycmF5KA0KCQkJYXJyYXkoDQoJCQkJJ3RhcmdldF9jbGllbnQnID0+ICR0YXJnZXRfY2xpZW50LA0KCQkJCSd0YXJnZXQnID0+ICR0YXJnZXQgLiAkdGFnLA0KCQkJCSdmaWxlX25hbWUnID0+ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhKQ0KCQkJKSwNCgkJCWFycmF5KA0KCQkJCSd0YXJnZXRfY2xpZW50JyA9PiAkdGFyZ2V0X2NsaWVudCwNCgkJCQkndGFyZ2V0JyA9PiAkdGFyZ2V0IC4gJHRhZywNCgkJCQknZmlsZV9uYW1lJyA9PiAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSwgJy5zeXMnKQ0KCQkJKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgZmlsZSBuYW1lDQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmd1YWdlRmlsZU5hbWUoJiRmaWxlX25hbWUsICYkdGFnLCAmJGFyZWEsICR0eXBlID0gJycpDQoJew0KCQkvLyBjb21wb25lbnQgZXh0ZW5zaW9uIHR5cGUNCgkJaWYgKHN0cnBvcygkZmlsZV9uYW1lLCAnY29tXycpICE9PSBmYWxzZSkNCgkJew0KCQkJaWYgKHN0cnBvcygkYXJlYSwgJ3N5cycpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdHlwZSA9ICcuc3lzJzsNCgkJCX0NCgkJfQ0KCQkvLyBmaWxlIG5hbWUNCgkJcmV0dXJuICR0YWcgLiAnLicgLiAkZmlsZV9uYW1lIC4gJHR5cGUgLiAnLmluaSc7DQoJfQ0KDQoJLyoqDQoJICogY2hlY2sgaWYgYSB0cmFuc2xhdGlvbiBzaG91bGQgYmUgYWRkZWQNCgkgKiANCgkgKiBAcmV0dXJuICBib29sDQoJICogQGRlcHJlY2F0ZWQgMy40IFVzZSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdMYW5ndWFnZS5UcmFuc2xhdGlvbicpLT5jaGVjayguLi4pOw0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzaG91bGRMYW5ndWFnZUJlQWRkZWQoJiR0YWcsICYkbGFuZ3VhZ2VTdHJpbmdzLCAmJHRvdGFsLCAmJGZpbGVfbmFtZSkgew0KCQkvLyBvbmx5IGxvZyBtZXNzYWdlcyBmb3Igbm9uZSAkdGhpcy0+bGFuZ1RhZyB0cmFuc2xhdGlvbnMNCgkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnTGFuZ3VhZ2UuVHJhbnNsYXRpb24nKS0+Y2hlY2soDQoJCQkkdGFnLCAkbGFuZ3VhZ2VTdHJpbmdzLCAkdG90YWwsICRmaWxlX25hbWUNCgkJKTsNCgl9DQo=', '[[[Component]]] Language Packaging', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyBsb2FkIHRoZSBoZWxwZXIgY2xhc3MNCgkJCUpMb2FkZXI6OnJlZ2lzdGVyKCdbW1tDb21wb25lbnRdXV1IZWxwZXInLCBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb21wb25lbnRdXV0vaGVscGVycy9bW1tjb21wb25lbnRdXV0ucGhwJyk7DQoJCQkvLyBibG9jayBpbnN0YWxsDQoJCQkkYmxvY2tJbnN0YWxsID0gdHJ1ZTsNCgkJCS8vIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIEpDQg0KCQkJJG1hbmlmZXN0ID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjptYW5pZmVzdCgpOw0KCQkJaWYgKGlzc2V0KCRtYW5pZmVzdC0+dmVyc2lvbikgJiYgc3RycG9zKCRtYW5pZmVzdC0+dmVyc2lvbiwgJy4nKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSB2ZXJzaW9uDQoJCQkJJGpjYlZlcnNpb24gPSBleHBsb2RlKCcuJywgJG1hbmlmZXN0LT52ZXJzaW9uKTsNCgkJCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgSkNCIDIuMTAuMTMgb3IgaGlnaGVyIGluc3RhbGxlZA0KCQkJCWlmIChjb3VudCgkamNiVmVyc2lvbikgPT0gMyAmJiAoKCRqY2JWZXJzaW9uWzBdID09IDIgJiYgJGpjYlZlcnNpb25bMV0gPj0gMTAgJiYgKCgkamNiVmVyc2lvblsxXSA9PSAxMCAmJiAkamNiVmVyc2lvblsyXSA+PSAxMykgfHwgKCRqY2JWZXJzaW9uWzFdID4gMTApKSkgfHwgJGpjYlZlcnNpb25bMF0gPj0gMykpDQoJCQkJew0KCQkJCQkkYmxvY2tJbnN0YWxsID0gZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gYWxsb3cgaW5zdGFsbCBpZiBhbGwgY29uZGl0aW9ucyBhcmUgbWV0DQoJCQlpZiAoJGJsb2NrSW5zdGFsbCkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnUGxlYXNlIHVwZ3JhZGUgdG8gSkNCIDIuMTAuMTMgb3IgaGlnaGVyIGJlZm9yZSBpbnN0YWxsaW5nIHRoaXMgcGx1Z2luLicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.2.1', '{\"property_selection0\":{\"property\":\"34\"},\"property_selection1\":{\"property\":\"35\"},\"property_selection2\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Packaging', '', 1, '', '', 1, '2019-10-12 22:36:16', '2024-08-06 20:54:21', 85, '', 2),
(8, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to integrate componentbuilder with [[[curriculumbuilder_link_name]]]. To activate it you must first enable it here.', '{}', '3b7fd798-af89-4cd9-b85a-1c43b83ec655', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw==', 3, '{}', 'CS8qKg0KCSAqIERhdGFiYXNlIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBEYXRhYmFzZURyaXZlcg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRkYjsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqLw0KCXByb3RlY3RlZCAgJGFwcDsNCg0KCS8qKg0KCSAqIExvY2tlZCBmaWxlbiBuYW1lDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGZpbGVMb2NrZWQ7DQoNCgkvKioNCgkgKiBIaWRkZW4gZmlsZSBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGhpZGVuRmlsZTsNCg0KCS8qKg0KCSAqIE9wZW4gZmlsZSBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJG9wZW5GaWxlOw0KDQoJLyoqDQoJICogSGlkZGVuIGltYWdlIGZvbGRlciBwYXRoDQoJICoNCgkgKiBAdmFyICAgIHN0cmluZw0KCSAqLw0KCXByb3RlY3RlZCAgJGhpZGVuUGFnZXNGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgcGFnZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgICRwYWdlczsNCg0KCS8qKg0KCSAqIEZpbGUgTmFtZQ0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKi8NCglwcm90ZWN0ZWQgICRmaWxlTmFtZSA9IGZhbHNlOw0KDQoJLyoqDQoJICogRmlsZSBFeHRlbnNpb24NCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICovDQoJcHJvdGVjdGVkICAkZmlsZUV4dGVuc2lvbiA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhpcyBpcyBhIGV2ZW50IHRvIGJ1aWxkIHRoZSB2aWV3IGFyZWENCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRjb250ZXh0ICBUaGUgY29udGV4dCBvZiB0aGUgY29udGVudCBiZWluZyBwYXNzZWQgdG8gdGhlIHBsdWdpbi4NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbltbW2NvbXBvbmVudF9hY3JvbnltXV1dUHJvY2Vzc2luZ1JlcXVlc3QoJGNvbnRleHQsICRhamF4LCAmJHBhZ2UsICYkdGFyZ2V0LCAmJHJlc3VsdCkNCgl7DQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5zdGFnZScgPT09ICRjb250ZXh0DQoJCQkmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpDQoJCQkmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGFnZSkNCgkJCSYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR0YXJnZXQpKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIHVzZXIgb2JqZWN0DQoJCQkkdXNlciA9IEZhY3Rvcnk6OmdldFVzZXIoKTsNCgkJCS8vIGdldCBwYWdlIHZhbHVlcw0KCQkJJHBhZ2UgPSBqc29uX2RlY29kZSgkcGFnZSk7DQoJCQkvLyBnZXQgcGFnZSB2YWx1ZXMNCgkJCSR0YXJnZXQgPSBqc29uX2RlY29kZSgkdGFyZ2V0KTsNCgkJCS8vIHNhbml0aXphIHN0cmluZ3MNCgkJCWlmIChpc3NldCgkcGFnZS0+bmFtZSkgJiYgaXNzZXQoJHBhZ2UtPmV4dHJ1ZGUpICYmIGlzc2V0KCRwYWdlLT5pbWFnZSkgJiYgaXNzZXQoJHBhZ2UtPmh0bWwpICYmIGlzc2V0KCRwYWdlLT5zdmcpDQoJCQkJJiYgMSA9PSAkcGFnZS0+ZXh0cnVkZSAmJiBpc3NldCgkdGFyZ2V0LT51c2VyKSAmJiBpc3NldCgkdGFyZ2V0LT50eXBlKSAmJiAoJHRhcmdldC0+dXNlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkdGFyZ2V0LT51c2VyKSkgIT09IGZhbHNlDQoJCQkJJiYgJHRhcmdldC0+dXNlciA9PSAkdXNlci0+Z2V0KCdpZCcpDQoJCQkJJiYgaXNzZXQoJHRhcmdldC0+bmFtZSkgJiYgaXNzZXQoJHRhcmdldC0+ZmlsZW5hbWUpICYmICgkdGFyZ2V0LT5maWxlbmFtZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkdGFyZ2V0LT5maWxlbmFtZSkpICE9PSBmYWxzZQ0KCQkJCSYmIGlzc2V0KCR0YXJnZXQtPmd1aWQpICYmICgkdGFyZ2V0LT5ndWlkID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpkZWNyeXB0KCR0YXJnZXQtPmd1aWQpKSAhPT0gZmFsc2UgJiYgW1tbQ29tcG9uZW50XV1dSGVscGVyOjp2YWxpZEdVSUQoJHRhcmdldC0+Z3VpZCkNCgkJCQkmJiBzdHJwb3MoJHRhcmdldC0+ZmlsZW5hbWUsICdWRE0nKSAhPT0gZmFsc2UgJiYgc3RycG9zKCRwYWdlLT5uYW1lLCAnX3BhZ2UnKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gbG9hZCB0aGUgZmlsZSBjbGFzcw0KCQkJCWppbXBvcnQoJ2pvb21sYS5maWxlc3lzdGVtLmZpbGUnKTsNCgkJCQlqaW1wb3J0KCdqb29tbGEuZmlsZXN5c3RlbS5mb2xkZXInKTsNCgkJCQkvLyBub3cgbGV0cyBnZXQgdGhlIGZpbGUgZGF0YQ0KCQkJCSR0aGlzLT5oaWRlblBhdGggPSBydHJpbShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZvbGRlclBhdGgoJ3BhdGgnLCAnaGlkZGVuZmlsZXBhdGgnKSwgJy8nKTsNCgkJCQkkdGhpcy0+aGlkZW5GaWxlID0gJHRoaXMtPmhpZGVuUGF0aCAuICcvJyAuICR0YXJnZXQtPmZpbGVuYW1lOw0KCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdA0KCQkJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgPSAkdGhpcy0+aGlkZW5QYXRoIC4gJy8ucGFnZXNfJyAuIHRyaW0oJHRhcmdldC0+ZmlsZW5hbWUsICcuJyk7DQoJCQkJCS8vIG1ha2UgcGF0aCBzYWZlDQoJCQkJCSR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyID0gSkZvbGRlcjo6bWFrZVNhZmUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJCQkvLyBkb2VzIHRoZSBpbWFnZSBleGlzdA0KCQkJCQlpZiAoSkZvbGRlcjo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKSAmJiBKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJy4nIC4gJHBhZ2UtPm5hbWUpKQ0KCQkJCQl7DQoJCQkJCQkvLyBzZXQgdGhlIGRhdGVzDQoJCQkJCQkkZGF0ZSA9IEZhY3Rvcnk6OmdldERhdGUoKS0+dG9TcWwoKTsNCgkJCQkJCS8vIGdldCBbW1tjdXJyaWN1bHVtYnVpbGRlcl1dXSBoZWxwZXIgY2xhc3MNCgkJCQkJCSRbW1tDdXJyaWN1bHVtYnVpbGRlcl1dXUhlbHBlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0SGVscGVyQ2xhc3MoJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dJyk7DQoJCQkJCQkvLyBidWlsZCB0aGUgcmVzb3VyY2UgYW5kIGtlZXAgdGhlIEdVSUQgcmVhZHkgaWYgbW9yZSBwYWdlcyBpcyB0byBiZSBidWlsZA0KCQkJCQkJaWYgKCgkcmVzb3VyY2UgPSAkW1tbQ3VycmljdWx1bWJ1aWxkZXJdXV1IZWxwZXI6OmdldFZhcigncmVzb3VyY2UnLCAkdGFyZ2V0LT5ndWlkLCAnZ3VpZCcsICdpZCcpKSA9PT0gZmFsc2UpDQoJCQkJCQl7DQoJCQkJCQkJLy8gc2V0IHRoZSBkYXRhIGZvciB0aGUgcmVzb3VyY2UNCgkJCQkJCQkkZGF0YSA9IGFycmF5KA0KCQkJCQkJCQknaWQnID0+IDAsDQoJCQkJCQkJCSdndWlkJyA9PiAkdGFyZ2V0LT5ndWlkLA0KCQkJCQkJCQknbmFtZScgPT4gJHRhcmdldC0+bmFtZSwNCgkJCQkJCQkJJ3B1Ymxpc2hlZCcgPT4gMCwNCgkJCQkJCQkJJ3ZlcnNpb24nID0+IDEsDQoJCQkJCQkJCSdjcmVhdGVkX2J5JyA9PiAkdGFyZ2V0LT51c2VyLA0KCQkJCQkJCQknY3JlYXRlZCcgPT4gJGRhdGUsDQoJCQkJCQkJCSd0eXBlJyA9PiAkdGFyZ2V0LT50eXBlKTsNCgkJCQkJCQkkcmVzb3VyY2VNb2RlbCA9ICRbW1tDdXJyaWN1bHVtYnVpbGRlcl1dXUhlbHBlcjo6Z2V0TW9kZWwoJ3Jlc291cmNlJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fW1tbY3VycmljdWx1bWJ1aWxkZXJdXV0nKTsNCgkJCQkJCQlpZiAoISRyZXNvdXJjZU1vZGVsLT5zYXZlKCRkYXRhKSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIGRvIG5vdCBjb250aW51ZSB0byBzZXQgdGhlIHBhZ2VzIGlmIHdlIGNvdWxkIG5vdCBjcmVhdGUgdGhlIHJlc291cmNlDQoJCQkJCQkJCSR0YXJnZXQtPmd1aWQgPSBudWxsOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgcmVzb3VyY2UNCgkJCQkJCWlmIChbW1tDb21wb25lbnRdXV1IZWxwZXI6OnZhbGlkR1VJRCgkdGFyZ2V0LT5ndWlkKSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBnZXQgdGhlIFBhZ2UgTW9kZWwNCgkJCQkJCQkkcGFnZU1vZGVsID0gJFtbW0N1cnJpY3VsdW1idWlsZGVyXV1dSGVscGVyOjpnZXRNb2RlbCgncGFnZScsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dJyk7DQoJCQkJCQkJLy8gc2V0IHRoZSBkYXRhIGZvciB0aGUgcGFnZQ0KCQkJCQkJCSRkYXRhID0gYXJyYXkoDQoJCQkJCQkJCSdpZCcgPT4gMCwNCgkJCQkJCQkJJ251bWJlcicgPT4gKGludCkgJHBhZ2UtPm5hbWUsDQoJCQkJCQkJCSdndWlkJyA9PiAnJywNCgkJCQkJCQkJJ3Jlc291cmNlJyA9PiAkdGFyZ2V0LT5ndWlkLA0KCQkJCQkJCQknbmFtZScgPT4gJHRhcmdldC0+bmFtZSwNCgkJCQkJCQkJJ2NvbnRlbnQnID0+ICcnLA0KCQkJCQkJCQkncHVibGlzaGVkJyA9PiAwLA0KCQkJCQkJCQkndmVyc2lvbicgPT4gMSwNCgkJCQkJCQkJJ2NyZWF0ZWRfYnknID0+ICR0YXJnZXQtPnVzZXIsDQoJCQkJCQkJCSdjcmVhdGVkJyA9PiAkZGF0ZSwNCgkJCQkJCQkJJ3R5cGUnID0+ICR0YXJnZXQtPnR5cGUpOw0KCQkJCQkJCS8vIHNldCB0aGUgaW1hZ2UNCgkJCQkJCQlpZiAoMSA9PSAkcGFnZS0+aW1hZ2UpDQoJCQkJCQkJew0KCQkJCQkJCQkvLyBnZXQgY29udGVudA0KCQkJCQkJCQkkZGF0YVsnY29udGVudCddID0gJzxpbWcgc3JjPSInIC4gJHRoaXMtPmdldExpbmsoJy4nLiRwYWdlLT5uYW1lKSAuICciIGFsdD0iJyAuICRwYWdlLT5uYW1lIC4gJyI+JzsNCgkJCQkJCQl9DQoJCQkJCQkJLy8gc2V0IHRoZSBwYWdlIGFzIEhUTUwNCgkJCQkJCQllbHNlaWYgKDEgPT0gJHBhZ2UtPmh0bWwpDQoJCQkJCQkJew0KCQkJCQkJCQkvLyBnZXQgY29udGVudA0KCQkJCQkJCQkkdGhpcy0+Z2V0SFRNTEZyb21QREYoJGRhdGEsIChpbnQpICRwYWdlLT5uYW1lKTsNCgkJCQkJCQl9DQoJCQkJCQkJLy8gc2V0IHRoZSBwYWdlIGFzIEhUTUwNCgkJCQkJCQllbHNlaWYgKDEgPT0gJHBhZ2UtPnN2ZykNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIGdldCBjb250ZW50DQoJCQkJCQkJCSR0aGlzLT5nZXRTVkdGcm9tUERGKCRkYXRhLCAoaW50KSAkcGFnZS0+bmFtZSk7DQoJCQkJCQkJfQ0KCQkJCQkJCS8vIHNhdmUgdGhlIHBhZ2UgaWYgYW55IG9mIHRoZSBvcHRpb25zIHdhcyBzZXQNCgkJCQkJCQlpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGRhdGFbJ2NvbnRlbnQnXSkgJiYgKDEgPT0gJHBhZ2UtPmh0bWwgfHwgMSA9PSAkcGFnZS0+c3ZnIHx8IDEgPT0gJHBhZ2UtPmltYWdlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIHNhdmUgdGhlIHBhZ2UNCgkJCQkJCQkJaWYgKCRwYWdlTW9kZWwtPnNhdmUoJGRhdGEpKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsNCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgYSBldmVudCB0byBidWlsZCB0aGUgdmlldyBhcmVhDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkY29udGV4dCAgVGhlIGNvbnRleHQgb2YgdGhlIGNvbnRlbnQgYmVpbmcgcGFzc2VkIHRvIHRoZSBwbHVnaW4uDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25bW1tjb21wb25lbnRfYWNyb255bV1dXUJ1aWxkVmlldygkY29udGV4dCwgJHZpZXcpDQoJew0KCQlpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uc3RhZ2UnID09PSAkY29udGV4dCAmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpKQ0KCQl7DQoJCQkvLyBleHRyYWN0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYgYW5kIGxvYWQgdGhlaXIgcGF0aHMgdG8gbWVtb3J5DQoJCQlpZiAoJHRoaXMtPnNldFBhZ2VzKCkgJiYgJHRoaXMtPmZpbGVOYW1lKQ0KCQkJew0KCQkJCS8vIGJ1aWxkIHRoZSBzZWxlY3Rpb24gYXJlYQ0KCQkJCWlmICgoJHZpZXctPl9kaXNwbGF5X3ZpZXdfaGVhZGVyID0gJHRoaXMtPmJ1aWxkUmVzb3VyY2VBcmVhKCkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCS8vIGJ1aWxkIHRoZSBzZWxlY3Rpb24gYXJlYQ0KCQkJCQkkdmlldy0+X2Rpc3BsYXlfdmlldyA9ICR0aGlzLT5idWlsZFNlbGVjdGlvbkFyZWEoKTsNCgkJCQkJLy8gYnVpbGQgdGhlIGphdmFzY3JpcHQNCgkJCQkJJHZpZXctPl9kaXNwbGF5X3ZpZXdfZm9vdGVyID0gJHRoaXMtPmJ1aWxkSmF2YVNjcmlwdCgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgYSBnZXQgaXRlbSBldmVudCB0byBpbmplY3QgY3VzdG9tIGJlaGF2aW9yLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IGJlaW5nIHBhc3NlZCB0byB0aGUgcGx1Z2luLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uW1tbY29tcG9uZW50X2Fjcm9ueW1dXV1HZXRJdGVtKCRjb250ZXh0LCAuLi4kYXJncykNCgl7DQoJCS8vIGFjdGlvbiB0byBiZSB0YWtlbiB3aXRoIHdlIGhhdmUgZmlsZSBpdGVtDQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5maWxlJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiBpc3NldCgkYXJnc1swXSkNCgkJCS8vIGp1c3QgZm9yIFBERidzIGZvciBub3cNCgkJCSYmIGlzc2V0KCRhcmdzWzBdLT5maWxlX2V4dGVuc2lvbikgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGFyZ3NbMF0tPmZpbGVfZXh0ZW5zaW9uKSAmJiAncGRmJyA9PT0gc3RydG9sb3dlcigkYXJnc1swXS0+ZmlsZV9leHRlbnNpb24pKQ0KCQl7DQoJCQlpZiAoKCRrZXkgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJGFyZ3NbMF0tPm1haW5fZmlsZSkpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkka2V5ID0gdXJsZW5jb2RlKCRrZXkpOw0KCQkJCS8vICRhcmdzWzBdID09ICRpdGVtDQoJCQkJJGFyZ3NbMF0tPm9uY2xpY2sgLj0gIm9wZW5QZGZQYXRoU2VsZWN0aW9uKCIgLiAoaW50KSAkYXJnc1swXS0+aWQgLiAiLCAnIiAuICRhcmdzWzBdLT5maWxlX25hbWUgLiAiJywgJyIgLiAka2V5IC4gIicpIjsNCgkJCQkkYXJnc1swXS0+bGluayA9ICcjJzsNCgkJCX0NCgkJfQ0KCQllbHNlaWYgKCdjb21fW1tbY29tcG9uZW50XV1dLnN0YWdlJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiAkYXJnc1sxXSA+IDApDQoJCXsNCgkJCS8vICRhcmdzWzBdID09ICR0aGlzDQoJCQkvLyAkYXJnc1sxXSA9PSAkcGsNCgkJCS8vICRhcmdzWzJdID09ICRxdWVyeQ0KCQkJLy8gJGFyZ3NbM10gPT0gJGRiDQoJCQlpZiAoKCRicmlkZ2UgPSAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0KCdicmlkZ2UnLCBmYWxzZSwgJ2Jhc2U2NCcpKSAhPT0gZmFsc2UNCgkJCQkmJiAoJGJyaWRnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZGVjcnlwdCgkYnJpZGdlKSkgIT09IGZhbHNlDQoJCQkJJiYgJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnJlc291cmNlLnBkZicgPT09ICRicmlkZ2UNCgkJCQkmJiAoJHRoaXMtPmZpbGVMb2NrZWQgPSAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0KCdrZXknLCBmYWxzZSwgJ2Jhc2U2NCcpKSAhPT0gZmFsc2UNCgkJCQkmJiAoJGZpbGUgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmRlY3J5cHQoJHRoaXMtPmZpbGVMb2NrZWQpKSAhPT0gZmFsc2UNCgkJCQkmJiBzdHJwb3MoJGZpbGUsICdWRE0nKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJLy8gbG9hZCB0aGUgZmlsZSBjbGFzcw0KCQkJCWppbXBvcnQoJ2pvb21sYS5maWxlc3lzdGVtLmZpbGUnKTsNCgkJCQlqaW1wb3J0KCdqb29tbGEuZmlsZXN5c3RlbS5mb2xkZXInKTsNCgkJCQkvLyBub3cgbGV0cyBnZXQgdGhlIGZpbGUgZGF0YQ0KCQkJCSR0aGlzLT5oaWRlblBhdGggPSBydHJpbShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEZvbGRlclBhdGgoJ3BhdGgnLCAnaGlkZGVuZmlsZXBhdGgnKSwgJy8nKTsNCgkJCQkkdGhpcy0+aGlkZW5GaWxlID0gJHRoaXMtPmhpZGVuUGF0aCAuICcvJyAuICRmaWxlOw0KCQkJCS8vIG1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdA0KCQkJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgPSAkdGhpcy0+aGlkZW5QYXRoIC4gJy8ucGFnZXNfJyAuIHRyaW0oJGZpbGUsICcuJyk7DQoJCQkJCS8vIGV4dHJhY3QgdGhlIHBhZ2VzIGZyb20gdGhlIFBERiBhbmQgbG9hZCB0aGVpciBwYXRocyB0byBtZW1vcnkNCgkJCQkJaWYgKCR0aGlzLT5zZXRQYWdlcygpKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+ZmlsZU5hbWUgPSBleHBsb2RlKCdWRE0nLCAkZmlsZSlbMV07DQoJCQkJCQkkdGhpcy0+X2ZpbGVOYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdGhpcy0+ZmlsZU5hbWUsICdXJywgJ18nLCBmYWxzZSwgZmFsc2UpOw0KCQkJCQkJJHRoaXMtPmZpbGVFeHRlbnNpb24gPSBleHBsb2RlKCdfJywgJGZpbGUpWzJdOw0KCQkJCQkJJHRoaXMtPmZpbGVOYW1lIC49ICcuJyAuICR0aGlzLT5maWxlRXh0ZW5zaW9uOw0KCQkJCQkJJHRoaXMtPmd1aWQgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OkdVSUQoKTsNCgkJCQkJCXJldHVybiB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1RoZSBQREYgZmlsZSBjb3VsZCBub3QgYmUgZm91bmQsIHBsZWFzZSB0cnkgYWdhaW4hJyksICdlcnJvcicpOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyBhIHNldCBEb2N1bWVudCBldmVudCB0byBpbmplY3QgY3VzdG9tIGJlaGF2aW9yLg0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IGJlaW5nIHBhc3NlZCB0byB0aGUgcGx1Z2luLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uW1tbY29tcG9uZW50X2Fjcm9ueW1dXV1Eb2N1bWVudCgkY29udGV4dCwgJHZpZXcpDQoJew0KCQkvLyBhY3Rpb24gdG8gYmUgdGFrZW4gd2l0aCBmb2xkZXJzIGRvY3VtZW50DQoJCWlmICgnY29tX1tbW2NvbXBvbmVudF1dXS5mb2xkZXJzJyA9PT0gJGNvbnRleHQgJiYgJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSAmJiBpc3NldCgkdmlldy0+ZG9jdW1lbnQpKQ0KCQl7DQoJCQkvLyBidWlsZCBicmlkZ2Uga2V5IChvbmx5IGNvbnRpbnVlIGlmIHdlIGNhbiBjcmVhdGUgYSBrZXkpDQoJCQlpZiAoKCRrZXkgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJ1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnJlc291cmNlLnBkZicpKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJGtleSA9IHVybGVuY29kZSgka2V5KTsNCgkJCQkvLyBhZGQgSmF2YVNjcmlwdCB0byBkb2N1bWVudA0KCQkJCSR2aWV3LT5kb2N1bWVudC0+YWRkU2NyaXB0RGVjbGFyYXRpb24oImZ1bmN0aW9uIG9wZW5QZGZQYXRoU2VsZWN0aW9uKGZpbGVJRCwgZmlsZU5hbWUsIGZpbGVLZXkpIHsNCgkJCQkJVUlraXQubW9kYWwuY29uZmlybSgnV291bGQgeW91IGxpa2UgdG8gdXNlIDxiPicrZmlsZU5hbWUrJzwvYj4gaW4gW1tbY3VycmljdWx1bWJ1aWxkZXJfbGlua19uYW1lXV1dIGFzIGEgcmVzb3VyY2U/JykudGhlbihmdW5jdGlvbiAoKSB7DQoJCSAgCQkJCWpRdWVyeSgnI1tbW2NvbXBvbmVudF1dXV9sb2FkZXInKS5odG1sKCc8YnIgLz48Y2VudGVyPjxkaXYgY2xhc3M9XCd1ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1yaWdodCB1ay1hbmltYXRpb24tc2NhbGUtdXAgdWstYm94LXNoYWRvdy1ib3R0b21cJz48aDI+IiAuIFRleHQ6Ol8oJ1dlIGFyZSBleHRyYWN0aW5nIHRoZSBwYWdlcyBmcm9tIHRoZSBQREYsIHRoaXMgbWF5IHRha2UgYSBtb21lbnQuPGJyIC8+UGxlYXNlIHdhaXQgYW5kIGRvIG5vdCByZWRpcmVjdCBhd2F5IGZyb20gdGhpcyBwYWdlIScpIC4gIjwvaDI+PC9kaXY+PC9jZW50ZXI+Jyk7DQoJCQkJCQlqUXVlcnkoJyNsb2FkaW5nJykuc2hvdygpOw0KCQkgIAkJCQl3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdpbmRleC5waHA/b3B0aW9uPWNvbV9bW1tjb21wb25lbnRdXV0mdmlldz1zdGFnZSZicmlkZ2U9IiAuICRrZXkgLiAiJmtleT0nICsgZmlsZUtleSArICcmaWQ9JyArIGZpbGVJRDsNCgkJIAkgIAkJfSk7DQoJCQkJfSIpOw0KCQkJfQ0KCQl9DQoJCWVsc2VpZiAoJ2NvbV9bW1tjb21wb25lbnRdXV0uc3RhZ2UnID09PSAkY29udGV4dCAmJiAkdGhpcy0+YXBwLT5pc0NsaWVudCgnYWRtaW5pc3RyYXRvcicpICYmICR0aGlzLT5maWxlTmFtZSAmJiBpc3NldCgkdmlldy0+ZG9jdW1lbnQpKQ0KCQl7DQoJCQkvLyAgd2UgdXBkYXRlIHRoZSBoZWFkaW5nLCB0aXRsZSBhbmQgaWNvbg0KCQkJJHZpZXctPmRvY3VtZW50LT5zZXRUaXRsZShUZXh0OjpfKCdFeHRydWRlJykgLiAnICcgLiAkdGhpcy0+ZmlsZU5hbWUpOw0KCQkJSlRvb2xiYXJIZWxwZXI6OnRpdGxlKFRleHQ6Ol8oJ0V4dHJ1ZGUnKSAuICcgJyAuICR0aGlzLT5maWxlTmFtZSwgJ2Fycm93LXVwLTQnKTsNCgkJfQ0KCX0NCgkJCQkJCS8vIHdlIGxlYXZlIHRoaXMgb3V0IGZvciBub3cuICciIC4gJGFyZ3NbMF0tPmxpbmsgLiAiJywgDQoJCQkJCQkvLyAsIGZ1bmN0aW9uICgpIHsNCgkJCQkJCS8vIFVJa2l0Lm1vZGFsLmNvbmZpcm0oJ1dvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlIGRvd25sb2FkaW5nIDxiPicrZmlsZU5hbWUrJzwvYj4/JykudGhlbihmdW5jdGlvbiAoKSB7DQoJCSAgCQkJCS8vCXdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbGluazsNCgkJIAkgIAkJCS8vIH0sIGZ1bmN0aW9uICgpIHsNCgkJCQkJCS8vCVVJa2l0Lm1vZGFsLmFsZXJ0KCc8aDM+T2theSBzbyB3aHkgZGlkIHlvdSBjbGljayBvbiB0aGUgZmlsZT88L2gzPjxwPkhtbW0geW91IG11c3QgaGF2ZSBiZWVuIGEgbGl0dGxlIGN1cmlvdXMgaG93IHRoaW5ncyB3b3JrIEkgc3VwcG9zZS48L3A+PGg0PlZlcnkgd2VsbCBlbmpveSE8L2g0PicpOw0KCQkgICAJCQkJLy8gfSk7DQoJCSAgIAkJCQkvLyB9KTsNCg0KCS8qKg0KCSAqIFNldCB0aGUgcGFnZXMgbGlua3MNCgkgKg0KCSAqDQoJICogQHJldHVybiAgYXJyYXkgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFBhZ2VzKCkNCgl7DQoJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikpDQoJCXsNCgkJCS8vIG1ha2UgcGF0aCBzYWZlDQoJCQkkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciA9IEpGb2xkZXI6Om1ha2VTYWZlKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKTsNCgkJCS8vIGNoZWNrIGlmIHRoZSBwYXRoIGV4aXN0DQoJCQlpZiAoIUpGb2xkZXI6OmV4aXN0cygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikpDQoJCQl7DQoJCQkJLy8gY3JlYXRlIHRoZSBwYWdlcyBmb2xkZXINCgkJCQlKRm9sZGVyOjpjcmVhdGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJfQ0KCQkJLy8ganVzdCBsb2FkIHRoZWlyIHBhdGhzIHRvIG1lbW9yeQ0KCQkJcmV0dXJuICR0aGlzLT5nZXRQYWdlcygpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHBhZ2VzIGxpbmtzDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5IG9uIHN1Y2Nlc3MNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRQYWdlcygkdHJ5ID0gdHJ1ZSkNCgl7DQoJCS8vIGFsd2F5cyByZW1vdmUgdGhlIG9wZW4gUERGIGlmIGZvdW5kDQoJCWlmIChpc3NldCgkdGhpcy0+b3BlbkZpbGUpICYmIFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5vcGVuRmlsZSkpDQoJCXsNCgkJCSR0aGlzLT5vcGVuRmlsZSA9ICcnOw0KCQl9DQoJCS8vIGNoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGVtIGxvYWRlZA0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPnBhZ2VzKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJLy8gY2hlY2sgaWYgaXQgbm93IGV4aXN0DQoJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcikgJiYgSkZvbGRlcjo6ZXhpc3RzKCR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyKSkNCgkJew0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBsb2FkIGFsbCB0aGUgcGFnZXMgaW4gdGhpcyBwYXRoDQoJCQkkdGhpcy0+cGFnZXMgPSBKRm9sZGVyOjpmaWxlcygnLicsICdfcGFnZScsIGZhbHNlLCB0cnVlLCBhcnJheSgpLCBhcnJheSgpKTsNCgkJCS8vIGdvIHRvIHRoYXQgam9vbWxhIGZvbGRlcg0KCQkJY2hkaXIoJGpvb21sYSk7DQoJCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGFueQ0KCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5wYWdlcykpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCQkvLyBleHRyYWN0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYNCgkJCWlmICgkdHJ5KQ0KCQkJew0KCQkJCXJldHVybiAkdGhpcy0+Z2V0UGFnZXNGcm9tUERGKCk7DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhIGh0bWwgcGFnZSBmcm9tIFBERg0KCSAqDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SFRNTEZyb21QREYoJiRkYXRhLCAkbnIpDQoJew0KCQlpZiAoYHdoaWNoIHBkZnRvaHRtbGApDQoJCXsNCgkJCS8vIG9wZW4gdGhlIFBERg0KCQkJJHRoaXMtPm9wZW5QREYoKTsNCg0KCQkJJG5hbWUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpyYW5kb20oMjApOw0KCQkJJHRlbXBPcGVuRmlsZSA9ICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUgLiAnLnBkZic7DQoNCgkJCS8vIHdlIGhhdmUgdG8gcGxhY2UgdGhlIG9wZW5lZCBmaWxlIG9uIHRoZSBkcml2ZQ0KCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRlbXBPcGVuRmlsZSwgJHRoaXMtPm9wZW5GaWxlKTsNCg0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBub3cgd2UgcnVuIHRoZSBjb21tYW5kDQoJCQlzaGVsbF9leGVjKCJwZGZ0b2h0bWwgLWYgJG5yIC1sICRuciAtcCAtYyAtcyAtbm9mcmFtZXMgLWZvbnRmdWxsbmFtZSAtZm10IGpwZyAkbmFtZS5wZGYgJG5hbWUiKTsNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoNCgkJCS8vIGdldCB0aGUgZG9tIGRvY3VtZW50IGNsYXNzDQoJCQkkaHRtbCA9IG5ldyBET01Eb2N1bWVudCgpOw0KDQoJCQkvLyBnZXQgdGhlIGh0bWwNCgkJCSRodG1sLT5sb2FkSFRNTEZpbGUoIiRuYW1lLmh0bWwiKTsNCgkJCSRpbWFnZV9uYW1lID0gJG5hbWUgLiBzdHJfcGFkKChzdHJpbmcpJG5yLCAzLCAnMCcsIFNUUl9QQURfTEVGVCk7DQoJCQkvLyBsb2FkIHRoZSBpbWFnZQ0KCQkJJGltYWdlX2RhdGEgPSBmaWxlX2dldF9jb250ZW50cygiJGltYWdlX25hbWUuanBnIik7DQoJCQkkaW1hZ2VfZGF0YSA9IExpYnJhcnlkYXRhYmFzZUhlbHBlcjo6ZW5jcnlwdCgkaW1hZ2VfZGF0YSk7DQoJCQkkaW1hZ2VfbGluayA9ICR0aGlzLT5nZXRMaW5rKCRpbWFnZV9uYW1lKTsNCgkJCVtbW0NvbXBvbmVudF1dXUhlbHBlcjo6d3JpdGVGaWxlKCRpbWFnZV9uYW1lLCB3b3Jkd3JhcCgkaW1hZ2VfZGF0YSwgMTI4LCAiXG4iLCB0cnVlKSk7DQoNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoIiRuYW1lLmh0bWwiKTsNCgkJCUpGaWxlOjpkZWxldGUoIiRpbWFnZV9uYW1lLmpwZyIpOw0KDQoJCQkvLyBnbyB0byB0aGF0IGpvb21sYSBmb2xkZXINCgkJCWNoZGlyKCRqb29tbGEpOw0KDQoJCQkvLyBleHRydWRlIHRoZSBodG1sDQoJCQkkZGl2cyA9ICRodG1sLT5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7DQoJCQkkc3R5bGVzID0gJGh0bWwtPmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpOw0KCQkJLy8gbG9hZCB0aGUgYmFja2dyb3VuZCBpbWFnZSBzdHJpbmcNCgkJCSRpbWFnZXMgPSAkaHRtbC0+Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpOw0KCQkJJGltYWdlX3NyYyA9IG51bGw7DQoJCQkvLyBtYWtlIHN1cmUgdGhlcmUgaXMgYW4gaW1hZ2UNCgkJCWlmICgkaW1hZ2VzLT5sZW5ndGggPiAwKQ0KCQkJew0KCQkJCSRpbWFnZV9zcmMgPSAkaW1hZ2VzLT5pdGVtKDApLT5nZXRBdHRyaWJ1dGUoJ3NyYycpOw0KCQkJfQ0KCQkJLy8gbG9hZCB0aGUgYm9keSBodG1sIHRvIHRoZSBwYWdlIGRhdGFiYXNlIGFycmF5DQoJCQlpZiAoJGRpdnMtPmxlbmd0aCA9PSAxKQ0KCQkJew0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkaW1hZ2Vfc3JjKSkNCgkJCQl7DQoJCQkJCSRkYXRhWydjb250ZW50J10gPSBzdHJfcmVwbGFjZSgkaW1hZ2Vfc3JjLCAkaW1hZ2VfbGluaywgJGh0bWwtPnNhdmVIVE1MKCRkaXZzLT5pdGVtKDApKSk7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRkYXRhWydjb250ZW50J10gPSAkaHRtbC0+c2F2ZUhUTUwoJGRpdnMtPml0ZW0oMCkpOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGxvYWQgdGhlIGJvZHkgY3NzIHRvIHRoZSBwYWdlIGRhdGFiYXNlIGFycmF5DQoJCQlpZiAoJHN0eWxlcy0+bGVuZ3RoID09IDIpDQoJCQl7DQoJCQkJJGRhdGFbJ2NzcyddID0gJHN0eWxlcy0+aXRlbSgxKS0+bm9kZVZhbHVlOw0KCQkJCSRkYXRhWydhZGRfY3NzJ10gPSAxOw0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIGdldCBhIGh0bWwgcGFnZSBmcm9tIFBERg0KCSAqDQoJICoNCgkgKiBAcmV0dXJuIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U1ZHRnJvbVBERigmJGRhdGEsICRucikNCgl7DQoJCWlmIChgd2hpY2ggcGRmdG9jYWlyb2ApDQoJCXsNCgkJCS8vIG9wZW4gdGhlIFBERg0KCQkJJHRoaXMtPm9wZW5QREYoKTsNCg0KCQkJJG5hbWUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpyYW5kb20oMjApOw0KCQkJJHRlbXBPcGVuRmlsZSA9ICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUgLiAnLnBkZic7DQoNCgkJCS8vIHdlIGhhdmUgdG8gcGxhY2UgdGhlIG9wZW5lZCBmaWxlIG9uIHRoZSBkcml2ZQ0KCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRlbXBPcGVuRmlsZSwgJHRoaXMtPm9wZW5GaWxlKTsNCg0KCQkJLy8gd2UgbXVzdCBmaXJzdCBzdG9yZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQ0KCQkJJGpvb21sYSA9IGdldGN3ZCgpOw0KCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQljaGRpcigkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlcik7DQoJCQkvLyBub3cgd2UgcnVuIHRoZSBjb21tYW5kDQoJCQlzaGVsbF9leGVjKCJwZGZ0b2NhaXJvIC1mICRuciAtbCAkbnIgLXN2ZyAkbmFtZS5wZGYgJG5hbWUiKTsNCgkJCS8vIHJlbW92ZSBvcGVuIGZpbGUNCgkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoNCgkJCS8vIGxvYWQgdGhlIHN2ZyBkYXRhDQoJCQkkZGF0YVsnY29udGVudCddID0gZmlsZV9nZXRfY29udGVudHMoJG5hbWUpOw0KDQoJCQkvLyByZW1vdmUgb3BlbiBmaWxlDQoJCQlKRmlsZTo6ZGVsZXRlKCRuYW1lKTsNCgkJCS8vIGdvIHRvIHRoYXQgam9vbWxhIGZvbGRlcg0KCQkJY2hkaXIoJGpvb21sYSk7DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHBhZ2VzIGZyb20gUERGDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFBhZ2VzRnJvbVBERigpDQoJew0KCQkvLyBjaGVjayBpZiBmaWxlIGV4aXN0DQoJCWlmIChKRmlsZTo6ZXhpc3RzKCR0aGlzLT5oaWRlbkZpbGUpKQ0KCQl7DQoJCQkvLyBvcGVuIHRoZSBQREYNCgkJCWlmICghJHRoaXMtPm9wZW5QREYoKSkNCgkJCXsNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdXZSBjb3VsZCBub3Qgb3BlbiB0aGUgZGVjcnlwdCB0aGUgUERGIHRvIGV4dHJhY3QgdGhlIHBhZ2VzLCBwbGVhc2UgdHJ5IGFnYWluISBQbGVhc2UgaW5mb3JtIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgaWYgdGhpcyBjb250aW51ZXMgdG8gaGFwcGVuLicpLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyB1c2UgcGRmdG9jYWlybyAoQkVTVCBPUFRJT04pDQoJCQlpZiAoYHdoaWNoIHBkZnRvY2Fpcm9gKQ0KCQkJew0KCQkJCSRuYW1lID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6cmFuZG9tKDIwKTsNCgkJCQkkdGVtcE9wZW5GaWxlID0gJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLycgLiAkbmFtZSAuICcucGRmJzsNCgkJCQkvLyB3ZSBoYXZlIHRvIHBsYWNlIHRoZSBvcGVuZWQgZmlsZSBvbiB0aGUgZHJpdmUNCgkJCQlbW1tDb21wb25lbnRdXV1IZWxwZXI6OndyaXRlRmlsZSgkdGVtcE9wZW5GaWxlLCAkdGhpcy0+b3BlbkZpbGUpOw0KCQkJCS8vIHdlIG11c3QgZmlyc3Qgc3RvcmUgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkNCgkJCQkkam9vbWxhID0gZ2V0Y3dkKCk7DQoJCQkJLy8gZ28gdG8gdGhhdCBoaWRkZW4gaW1hZ2UgZm9sZGVyDQoJCQkJY2hkaXIoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIpOw0KCQkJCS8vIG5vdyB3ZSBydW4gdGhlIGNvbW1hbmQNCgkJCQlzaGVsbF9leGVjKCJwZGZ0b2NhaXJvIC1qcGVnICRuYW1lLnBkZiBwYWdlIik7DQoJCQkJLy8gcmVtb3ZlIG9wZW4gZmlsZQ0KCQkJCUpGaWxlOjpkZWxldGUoJHRlbXBPcGVuRmlsZSk7DQoJCQkJLy8gbm93IGVuY3J5cHQgdGhlIHBhZ2VzDQoJCQkJJHBhZ2VzID0gSkZvbGRlcjo6ZmlsZXMoJy4nLCAnLmpwZycsIGZhbHNlLCB0cnVlLCBhcnJheSgpLCBhcnJheSgpKTsNCgkJCQkvLyBmaXJzdCBnZXQgY29udGVudCB0aGUgcmVtb3ZlIGZpbGUgdGhlIHNhdmUgZW5jcnlwdGVkIGNvbnRlbnQNCgkJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhZ2VzKSkNCgkJCQl7DQoJCQkJCWFycmF5X21hcCggZnVuY3Rpb24oJGltYWdlKXsNCgkJCQkJCSRwYWdlX251bWJlciA9IHN0cl9yZXBsYWNlKGFycmF5KCcuLycsICdwYWdlLScsICcuanBnJyksICcnLCAkaW1hZ2UpOw0KCQkJCQkJJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkaW1hZ2UpOw0KCQkJCQkJSkZpbGU6OmRlbGV0ZSgkaW1hZ2UpOw0KCQkJCQkJJGRhdGEgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoJGRhdGEpOw0KCQkJCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLy4nIC4gJHBhZ2VfbnVtYmVyIC4gJ19wYWdlJywgd29yZHdyYXAoJGRhdGEsIDEyOCwgIlxuIiwgdHJ1ZSkpOw0KCQkJCQl9LCAkcGFnZXMpOw0KCQkJCX0NCgkJCQkvLyBnbyB0byB0aGF0IGpvb21sYSBmb2xkZXINCgkJCQljaGRpcigkam9vbWxhKTsNCgkJCQkNCgkJCX0NCgkJCWVsc2VpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnaW1hZ2ljaycpKQ0KCQkJew0KCQkJCS8vIHRyeSB0byBydW4gdGhlIGV4dHJhdGlvbg0KCQkJCWlmICghJHRoaXMtPmltYWdpY2tQREZ4dHJhY3QoKSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKFRleHQ6Ol8oJ1dlIGNvdWxkIG5vdCBleHRyYXh0IHRoZSBwYWdlcyBmcm9tIHRoZSBQREYsIHBsZWFzZSB0cnkgYWdhaW4hIFBsZWFzZSBpbmZvcm0geW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBpZiB0aGlzIGNvbnRpbnVlcyB0byBoYXBwZW4uJyksICdlcnJvcicpOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdQbGVhc2UgaW5mb3JtIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgdGhhdCB5b3UgbmVlZCB0aGUgUEhQIDxiPmltYWdpY2sgZXh0cmFjdGlvbjwvYj4gaW5zdGFsbGVkIG9uIHlvdXIgaG9zdGluZyBhY2NvdW50LiBUaGUgZXh0cmFjdGlvbiBvZiB0aGUgcGFnZXMgZnJvbSB5b3VyIFBERiBmaWxlcyBhcmUgZG9uZSB3aXRoIHRoaXMgbGlicmFyeSE8YnIgLz5odHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9pbWFnaWNrLnNldHVwLnBocCcpLCAnZXJyb3InKTsNCgkJCX0NCgkJfQ0KCQkvLyB0cnkgdG8gbG9hZCB0aGUgcGFnZXMgbGlua3MgYWdhaW4NCgkJcmV0dXJuICR0aGlzLT5nZXRQYWdlcyhmYWxzZSk7DQoJfQ0KDQoJLyoqDQoJICogb3BlbiB0aGUgUERGDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIG9wZW5QREYoKQ0KCXsNCgkJJGRhdGEgPSBzdHJfcmVwbGFjZSgiXG4iLCAnJywgZmlsZV9nZXRfY29udGVudHMoJHRoaXMtPmhpZGVuRmlsZSkpOw0KCQlpZiAoJGRhdGEgPT09IGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpKQ0KCQl7DQoJCQlpZiAobWV0aG9kX2V4aXN0cygnW1tbQ29tcG9uZW50XV1dSGVscGVyJywgJ2RlY3J5cHQnKQ0KCQkJCSYmICgkdGhpcy0+b3BlbkZpbGUgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmRlY3J5cHQoJGRhdGEpKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQkJDQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIEV4dHJhY3QgcGFnZXMgZnJvbSBQREYNCgkgKg0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbiBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gaW1hZ2lja1BERnh0cmFjdCgpDQoJew0KCQlpZiAoaXNzZXQoJHRoaXMtPm9wZW5GaWxlKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+b3BlbkZpbGUpKQ0KCQl7DQoJCQkvLyBsb2FkIHRoZSB3aG9sZSBQREYNCgkJCSRwZGYgPSBuZXcgaW1hZ2ljaygpOw0KCQkJLy8gc2V0IGltYWdlIHJlc29sdXRpb24gKFRPRE8pDQoJCQkkcGRmLT5zZXRSZXNvbHV0aW9uKDE0NCwgMTQ0KTsNCgkJCS8vIGxvYWQgdGhlIFBERg0KCQkJJHBkZi0+cmVhZEltYWdlQmxvYigkdGhpcy0+b3BlbkZpbGUpOw0KCQkJLy8gJHBkZi0+ZGVzcGVja2xlaW1hZ2UoKTsNCgkJCS8vIGdldCB0aGUgbnVtYmVyIHBhZ2VzDQoJCQkkbnVtYmVyID0gJHBkZi0+Z2V0TnVtYmVySW1hZ2VzKCk7DQoJCQkvLyBDb252ZXJ0IFBERiBwYWdlcyB0byBpbWFnZXMNCgkJCWZvcigkaSA9IDA7ICRpIDwgJG51bWJlcjsgJGkrKykNCgkJCXsNCgkJCQkvLyBzZXQgbWVtb3J5IHN0b3JhZ2UNCgkJCQkkdG1wX2hhbmRsZSA9IGZvcGVuKCJwaHA6Ly90ZW1wIiwgJ3IrJyk7DQoJCQkJLy8gU2V0IGl0ZXJhdG9yIHBvc3Rpb24NCgkJCQkkcGRmLT5zZXRJdGVyYXRvckluZGV4KCRpKTsNCgkJCQkvLyBTZXQgaW1hZ2UgZm9ybWF0DQoJCQkJJHBkZi0+c2V0SW1hZ2VGb3JtYXQoJ2pwZWcnKTsNCgkJCQkkcGRmLT5zZXRJbWFnZUNvbXByZXNzaW9uKGltYWdpY2s6OkNPTVBSRVNTSU9OX0xPU1NMRVNTSlBFRyk7DQoJCQkJJHBkZi0+c2V0SW1hZ2VDb21wcmVzc2lvblF1YWxpdHkoMTAwKTsNCgkJCQkkcGRmLT5zZXRJbWFnZUFscGhhQ2hhbm5lbChJbWFnaWNrOjpBTFBIQUNIQU5ORUxfUkVNT1ZFKTsNCgkJCQkkcGRmLT50cmFuc3BhcmVudFBhaW50SW1hZ2UoJyNmZmZmZmYnLCAwLCAwLCBmYWxzZSk7DQoJCQkJLy8gV3JpdGUgUGFnZXMgdG8gdGhlIGhpZGRlbiBwYWdlIGZvbGRlcg0KCQkJCSRwZGYtPndyaXRlSW1hZ2VGaWxlKCR0bXBfaGFuZGxlKTsNCgkJCQlyZXdpbmQoJHRtcF9oYW5kbGUpOw0KCQkJCS8vIHNldCB0aGUgcGFnZSBudW1iZXINCgkJCQkkcGFnZV9udW1lciA9ICRpICsgMTsNCgkJCQkvLyBub3cgd3JpdGUgdGhlIGZpbGUgdG8gZHJpdmUgZW5jcnlwdGVkDQoJCQkJW1tbQ29tcG9uZW50XV1dSGVscGVyOjp3cml0ZUZpbGUoJHRoaXMtPmhpZGVuUGFnZXNGb2xkZXIgLiAnLy4nIC4gJHBhZ2VfbnVtZXIgLiAnX3BhZ2UnLCB3b3Jkd3JhcChbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoc3RyZWFtX2dldF9jb250ZW50cygkdG1wX2hhbmRsZSkpLCAxMjgsICJcbiIsIHRydWUpKTsNCgkJCQkvLyBjbGVhbiB1cCB5b3VyIHRlbXBvcmFyeSBzdG9yYWdlIGhhbmRsZQ0KCQkJCWZjbG9zZSgkdG1wX2hhbmRsZSk7DQoJCQl9DQoJCQkkdGhpcy0+b3BlbkZpbGUgPSAnJzsNCgkJCXJldHVybiAkcGRmLT5jbGVhcigpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9DQoNCgkvKioNCgkgKiBidWlsZCB0aGUgc2VsZWN0aW9uIHZpZXcgYXJlYQ0KCSAqDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGJ1aWxkUmVzb3VyY2VBcmVhKCkNCgl7DQoJCS8vIHNldCB0aGUgaGVhZGluZw0KCQkkYXJlYSA9ICc8aDQ+JyAuIFRleHQ6Ol8oJ1Jlc291cmNlJykgLiAnPC9oND4nOw0KDQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJmb3JtLWlubGluZSBmb3JtLWlubGluZS1oZWFkZXIiPic7DQoNCgkJLy8gbmFtZSBhdHRyaWJ1dGVzDQoJCSRhdHRyaWJ1dGVzID0gYXJyYXkoDQoJCQkndHlwZScgPT4gJ3RleHQnLA0KCQkJJ25hbWUnID0+ICdyZXNvdXJjZV9uYW1lJywNCgkJCSdsYWJlbCcgPT4gSnVzdFRFWFQ6Ol8oJ05hbWUnKSwNCgkJCSdjbGFzcycgPT4gJ3RleHRfYXJlYScsDQoJCQknZGVzY3JpcHRpb24nID0+IEp1c3RURVhUOjpfKCdBZGQgdGhlIG5hbWUgaGVyZSB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGNhbGwgdGhpcyByZXNvdXJjZS4nKSk7DQoJCSRmaWVsZCA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6Z2V0RmllbGRPYmplY3QoJGF0dHJpYnV0ZXMsICR0aGlzLT5fZmlsZU5hbWUpOw0KDQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJjb250cm9sLWdyb3VwIj4nOw0KCQkkYXJlYSAuPSAnPGRpdiBjbGFzcz0iY29udHJvbC1sYWJlbCI+JyAuICRmaWVsZC0+bGFiZWwgLiAnPC9kaXY+JzsNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2xzIj4nIC4gJGZpZWxkLT5pbnB1dCAuICc8L2Rpdj4nOw0KCQkkYXJlYSAuPSAnPC9kaXY+JzsNCg0KCQkkYXJlYSAuPSAnPGRpdiBjbGFzcz0iY29udHJvbC1ncm91cCI+JzsNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2xzIj48YnV0dG9uIGNsYXNzPSJidG4gYnV0dG9uLXVuZG8tMiIgb25jbGljaz0id2luZG93LmxvY2F0aW9uLnJlbG9hZChmYWxzZSk7Ij48c3BhbiBjbGFzcz0iaWNvbi11bmRvLTIiPjwvc3Bhbj4gJyAuIFRleHQ6Ol8oJ1Jlc2V0JykgLiAnPC9idXR0b24+PC9kaXY+JzsNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJJGFyZWEgLj0gJzxkaXYgY2xhc3M9ImNvbnRyb2wtZ3JvdXAiPic7DQoJCSRhcmVhIC49ICc8ZGl2IGNsYXNzPSJjb250cm9scyI+PGJ1dHRvbiBjbGFzcz0iYnRuIGJ1dHRvbi1hcnJvdy11cC00IiAgb25jbGljaz0iZXh0cnVkZVNlbGVjdGVkKCk7Ij48c3BhbiBjbGFzcz0iaWNvbi1hcnJvdy11cC00Ij48L3NwYW4+ICcgLiBUZXh0OjpfKCdFeHRydWRlJykgLiAnPC9idXR0b24+PC9kaXY+JzsNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJJGFyZWEgLj0gJzwvZGl2Pic7DQoNCgkJcmV0dXJuICRhcmVhOw0KCX0NCg0KCS8qKg0KCSAqIGJ1aWxkIHRoZSBzZWxlY3Rpb24gdmlldyBhcmVhDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRTZWxlY3Rpb25BcmVhKCkNCgl7DQoJCSRhcmVhID0gJyc7DQoJCSRsaW5rcyA9ICR0aGlzLT5nZXRMaW5rcygpOw0KCQkkbmFtZXMgPSAkdGhpcy0+Z2V0TmFtZXMoKTsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGxpbmtzDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGlua3MpKQ0KCQl7DQoJCQkkYXJlYSA9ICc8c3R5bGU+LnVrLWxpZ2h0Ym94IHt6LWluZGV4OjIwMDA7fTwvc3R5bGU+JzsNCgkJCS8vIG9ubHkgbG9hZCB0aGVzIGlmIHdlIGhhdmUgbW9yZSB0aGVuNSBwYWdlcw0KCQkJaWYgKGNvdW50KCRsaW5rcykgPiA1KQ0KCQkJew0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGRpdiAgaWQ9InNlbGVjdF9idXR0b25fYWxsXzEyMyI+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxidXR0b24gY2xhc3M9InNlbGVjdF9idXR0b25fYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay13aWR0aC0xLTEgdWstbWFyZ2luLXNtYWxsLWJvdHRvbSIgZGF0YS12YWx1ZT0iMSIgb25jbGljaz0idG9nZ2xlU2VsZWN0aW9uKFwnYWxsXCcpIiB1ay10b2dnbGU9InRhcmdldDogLnNlbGVjdGlvbl9hbGw7IGFuaW1hdGlvbjogdWstYW5pbWF0aW9uLWZhZGU7Ij5VbnNlbGVjdCBBbGw8L2J1dHRvbj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgIGlkPSJzZWxlY3RfYnV0dG9uX2FsbF8xMjQiIGNsYXNzPSJ1ay1idXR0b24tZ3JvdXAgdWstd2lkdGgtMS0xIHNlbGVjdGlvbl9hbGwiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaW1hZ2VfYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay1idXR0b24tc21hbGwgdWstd2lkdGgtMS0yIiAgb25jbGljaz0ic2V0RXh0cnVkZVN0YXR1cyhcJ2ltYWdlXCcsIFwnaHRtbFwnLCBcJ3N2Z1wnLCBcJ2FsbFwnKSIgZGF0YS12YWx1ZT0iMSIgdWstaWNvbj0iaWNvbjogaW1hZ2UiPjwvYnV0dG9uPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaHRtbF9hbGwgdWstYnV0dG9uIHVrLWJ1dHRvbi1kZWZhdWx0IHVrLWJ1dHRvbi1zbWFsbCB1ay13aWR0aC0xLTIiICBvbmNsaWNrPSJzZXRFeHRydWRlU3RhdHVzKFwnaHRtbFwnLCBcJ2ltYWdlXCcsIFwnc3ZnXCcsIFwnYWxsXCcpIiBkYXRhLXZhbHVlPSIwIj5IVE1MPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZXh0cnVkZV9zdmdfYWxsIHVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay1idXR0b24tc21hbGwgdWstd2lkdGgtMS0yIiAgb25jbGljaz0ic2V0RXh0cnVkZVN0YXR1cyhcJ3N2Z1wnLCBcJ2ltYWdlXCcsIFwnaHRtbFwnLCBcJ2FsbFwnKSIgZGF0YS12YWx1ZT0iMCI+U1ZHPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2Pic7DQoJCQl9DQoJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWdyaWQtc21hbGwgdWstY2hpbGQtd2lkdGgtMS0yQHMgdWstY2hpbGQtd2lkdGgtMS0zQG0gdWstY2hpbGQtd2lkdGgtMS01QGwiIHVrLWdyaWQgdWstbGlnaHRib3g9ImFuaW1hdGlvbjogc2xpZGUiPic7DQoJCQlmb3JlYWNoICgkbmFtZXMgYXMgJGxpbmsgPT4gJG5hbWUpDQoJCQl7DQoJCQkJLy9tYWtlIHN1cmUgdGhlIG5hbWUgaXMgc2VjdXJlDQoJCQkJJF9uYW1lID0gTGlicmFyeWRhdGFiYXNlSGVscGVyOjpzYWZlU3RyaW5nKCRuYW1lKTsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLXBhZGRpbmctc21hbGwiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIGNsYXNzPSJzZWxlY3RfYnV0dG9uX2FsbCBzZWxlY3RfYnV0dG9uXycgLiAkX25hbWUgLiAnIHVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay13aWR0aC0xLTEgdWstYnV0dG9uLXNtYWxsIiBkYXRhLXZhbHVlPSIxIiBvbmNsaWNrPSJ0b2dnbGVTZWxlY3Rpb24oXCcnIC4gJF9uYW1lIC4gJ1wnKSIgdHlwZT0iYnV0dG9uIiB1ay10b2dnbGU9InRhcmdldDogLnNlbGVjdGlvbl8nIC4gJF9uYW1lIC4gJzsgYW5pbWF0aW9uOiB1ay1hbmltYXRpb24tZmFkZTsiPlVuc2VsZWN0PC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWJveC1zaGFkb3ctbWVkaXVtIj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGEgY2xhc3M9InVrLWlubGluZSIgaHJlZj0iJyAuICRsaW5rc1skbGlua10gLiAnIiBkYXRhLWFsdD0iSW1hZ2UiPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8aW1nIHNyYz0iJyAuICRsaW5rc1skbGlua10gLiAnIiBhbHQ9IicgLiAkbmFtZSAuICciPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8ZGl2IGNsYXNzPSJ1ay1vdmVybGF5IHVrLWxpZ2h0IHVrLWJhY2tncm91bmQtcHJpbWFyeSB1ay1wb3NpdGlvbi1jZW50ZXIgc2VsZWN0aW9uX2FsbCBzZWxlY3Rpb25fJyAuICRfbmFtZSAuICciPjxzcGFuIHVrLWljb249ImNoZWNrIj48L3NwYW4+PC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLW92ZXJsYXkgdWstb3ZlcmxheS1wcmltYXJ5IHVrLXBvc2l0aW9uLWNlbnRlciBzZWxlY3Rpb25fYWxsIHNlbGVjdGlvbl8nIC4gJF9uYW1lIC4gJyIgaGlkZGVuPjxzcGFuIHVrLWljb249ImJhbiI+PC9zcGFuPjwvZGl2Pic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8L2E+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLXRleHQtbGlnaHRlciB1ay10ZXh0LXNtYWxsIHVrLXRleHQtY2VudGVyIj4nIC4gJG5hbWUgLiAnPC9kaXY+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCB1ay13aWR0aC0xLTEgc2VsZWN0aW9uX2FsbCBzZWxlY3Rpb25fJyAuICRfbmFtZSAuICciPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfaW1hZ2VfJyAuICRfbmFtZSAuICcgZXh0cnVkZV9pbWFnZV9hbGwgdWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1zbWFsbCB1ay13aWR0aC0xLTMiICBvbmNsaWNrPSJzZXRFeHRydWRlU3RhdHVzKFwnaW1hZ2VcJywgXCdodG1sXCcsIFwnc3ZnXCcsIFwnJyAuICRfbmFtZSAuICdcJykiIGRhdGEtdmFsdWU9IjEiIHVrLWljb249Imljb246IGltYWdlIj48L2J1dHRvbj4nOw0KCQkJCSRhcmVhIC49IFBIUF9FT0wgLiAnPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJleHRydWRlX2h0bWxfJyAuICRfbmFtZSAuICcgZXh0cnVkZV9odG1sX2FsbCB1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstYnV0dG9uLXNtYWxsIHVrLXdpZHRoLTEtMyIgIG9uY2xpY2s9InNldEV4dHJ1ZGVTdGF0dXMoXCdodG1sXCcsIFwnaW1hZ2VcJywgXCdzdmdcJywgXCcnIC4gJF9uYW1lIC4gJ1wnKSIgZGF0YS12YWx1ZT0iMCI+SFRNTDwvYnV0dG9uPic7DQoJCQkJJGFyZWEgLj0gUEhQX0VPTCAuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImV4dHJ1ZGVfc3ZnXycgLiAkX25hbWUgLiAnIGV4dHJ1ZGVfc3ZnX2FsbCB1ay1idXR0b24gdWstYnV0dG9uLWRlZmF1bHQgdWstYnV0dG9uLXNtYWxsIHVrLXdpZHRoLTEtMyIgIG9uY2xpY2s9InNldEV4dHJ1ZGVTdGF0dXMoXCdzdmdcJywgXCdpbWFnZVwnLCBcJ2h0bWxcJywgXCcnIC4gJF9uYW1lIC4gJ1wnKSIgZGF0YS12YWx1ZT0iMCI+U1ZHPC9idXR0b24+JzsNCgkJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2PjwvZGl2PjwvZGl2Pic7DQoJCQl9DQoJCQkkYXJlYSAuPSBQSFBfRU9MIC4gJzwvZGl2Pic7DQoJCX0NCgkJcmV0dXJuICRhcmVhOw0KCX0NCg0KCS8qKg0KCSAqIGJ1aWxkIHRoZSBhamF4IGJlaGF2aW9yDQoJICoNCgkgKg0KCSAqIEByZXR1cm4gIHN0cmluZyBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRKYXZhU2NyaXB0KCkNCgl7DQoJCSRzY3JpcHQgPSAnJzsNCgkJLy8gZ2V0IHRoZSBwYWdlIG5hbWVzDQoJCSRuYW1lcyA9ICR0aGlzLT5nZXROYW1lcygpOw0KCQkkdXNlciA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZW5jcnlwdChGYWN0b3J5OjpnZXRVc2VyKCktPmdldCgnaWQnKSk7DQoJCSRndWlkID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjplbmNyeXB0KCR0aGlzLT5ndWlkKTsNCgkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIGxpbmtzDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbmFtZXMpKQ0KCQl7DQoJCQkvLyBidWlsZCB0aGUgSlNPTiBvYmplY3QgdGhhdCB3aWxsIGJlIHNlbmQNCgkJCSRqc29uID0gbmV3IFxzdGRDbGFzcygpOyANCgkJCWZvcmVhY2ggKCRuYW1lcyBhcyAkbmFtZSkNCgkJCXsNCgkJCQkkX25hbWUgPSBMaWJyYXJ5ZGF0YWJhc2VIZWxwZXI6OnNhZmVTdHJpbmcoJG5hbWUpOw0KCQkJCSRqc29uLT4kX25hbWUgPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJJGpzb24tPiRfbmFtZS0+bmFtZSA9ICRuYW1lOw0KCQkJCSRqc29uLT4kX25hbWUtPmV4dHJ1ZGUgPSAxOw0KCQkJCSRqc29uLT4kX25hbWUtPmltYWdlID0gMTsNCgkJCQkkanNvbi0+JF9uYW1lLT5odG1sID0gMDsNCgkJCQkkanNvbi0+JF9uYW1lLT5zdmcgPSAwOw0KCQkJfQ0KCQkJJHNjcmlwdCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPic7DQoJCQkkc2NyaXB0IC49ICd2YXIgRGF0YVJlc291cmNlTmFtZSA9ICInIC4gJHRoaXMtPmZpbGVMb2NrZWQgLiAnIjsnOw0KCQkJJHNjcmlwdCAuPSAndmFyIERhdGFSZXNvdXJjZVBhZ2VzPSAnIC4ganNvbl9lbmNvZGUoJGpzb24pIC4gJzsnOw0KDQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBpc0VtcHR5KG9iaikgeyc7DQoJCQkkc2NyaXB0IC49ICdmb3IodmFyIGtleSBpbiBvYmopIHsnOw0KCQkJJHNjcmlwdCAuPSAnaWYob2JqLmhhc093blByb3BlcnR5KGtleSkpJzsNCgkJCSRzY3JpcHQgLj0gJ3JldHVybiBmYWxzZTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdyZXR1cm4gdHJ1ZTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBtYWtlIGFuIGFqYXggcG9zdC9nZXQgdG8gc3RhcnQgdGhlIGV4dHJ1c2lvbg0KCQkJJHNjcmlwdCAuPSAnZnVuY3Rpb24gZXh0cnVkZVNlbGVjdGVkKCl7JzsNCgkJCSRzY3JpcHQgLj0gJy8qIHdlIHN0YXJ0dXAgdGhlIHNwaW5uZXIgKi8nOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjbG9hZGluZyIpLnNob3coKTsnOw0KCQkJJHNjcmlwdCAuPSAndmFyIHR5cGUgPSBKU09OLnN0cmluZ2lmeSh7JzsNCgkJCSRzY3JpcHQgLj0gJ2ZpbGVuYW1lOiBEYXRhUmVzb3VyY2VOYW1lLCc7DQoJCQkkc2NyaXB0IC49ICduYW1lOiBqUXVlcnkoIiNyZXNvdXJjZV9uYW1lIikudmFsKCksJzsNCgkJCSRzY3JpcHQgLj0gJ3VzZXI6ICInIC4gJHVzZXIgLiAnIiwnOw0KCQkJJHNjcmlwdCAuPSAnZ3VpZDogIicgLiAkZ3VpZCAuICciLCc7DQoJCQkkc2NyaXB0IC49ICd0eXBlOiAxJzsNCgkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkkc2NyaXB0IC49ICcvKiBvbmx5IGFjdCBpZiBleHRydXNpb24gaXMgYWN0aXZlLiAqLyc7DQoJCQkkc2NyaXB0IC49ICdwcm9jZXNzaW5nUmVxdWVzdChPYmplY3Qua2V5cyhEYXRhUmVzb3VyY2VQYWdlcykuZmlsdGVyKGZ1bmN0aW9uKGtleSl7JzsNCgkJCSRzY3JpcHQgLj0gJ3JldHVybiBEYXRhUmVzb3VyY2VQYWdlc1trZXldLmV4dHJ1ZGU7JzsNCgkJCSRzY3JpcHQgLj0gJ30pLCB0eXBlKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiB0b2dnbGVTZWxlY3Rpb24ocGFnZSl7JzsNCgkJCS8vIG9ubHkgYWRkIHRoZXNlIGlmIHdlIGhhdmUgbW9yZSB0aGVuIGZpdmUNCgkJCWlmIChjb3VudCgkbmFtZXMpID4gNSkNCgkJCXsNCgkJCQkkc2NyaXB0IC49ICdpZiAocGFnZSAhPT0gImFsbCIpeyc7DQoJCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjc2VsZWN0X2J1dHRvbl9hbGxfMTIzIikucmVtb3ZlKCk7JzsNCgkJCQkkc2NyaXB0IC49ICd9JzsNCgkJCX0NCgkJCSRzY3JpcHQgLj0gJ3ZhciBidXR0b24gPSBqUXVlcnkoIi5zZWxlY3RfYnV0dG9uXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciB2YWx1ZSA9IGJ1dHRvbi5kYXRhKCJ2YWx1ZSIpOyc7DQoJCQkkc2NyaXB0IC49ICdpZiAodmFsdWUpeyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24udGV4dCgiU2VsZWN0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLnRleHQoIlVuc2VsZWN0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhbHVlID0gMTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgPT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeS5lYWNoKERhdGFSZXNvdXJjZVBhZ2VzLCBmdW5jdGlvbihwLCBrZXkpIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleS5leHRydWRlID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICd9KTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30gZWxzZSB7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXS5leHRydWRlID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICd9JzsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXS5leHRydWRlID0gdmFsdWU7JzsNCgkJCX0NCgkJCSRzY3JpcHQgLj0gJ2J1dHRvbi5kYXRhKCJ2YWx1ZSIsIHZhbHVlKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBzZXRFeHRydWRlU3RhdHVzKGFjdGlvbiwgb3RoZXJhY3Rpb24sIGFub3RoZXJhY3Rpb24sIHBhZ2Upeyc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgIT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI3NlbGVjdF9idXR0b25fYWxsXzEyNCIpLnJlbW92ZSgpOyc7DQoJCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQl9DQoJCQkkc2NyaXB0IC49ICd2YXIgYnV0dG9uID0galF1ZXJ5KCIuZXh0cnVkZV8iK2FjdGlvbisiXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBvdGhlcmJ1dHRvbiA9IGpRdWVyeSgiLmV4dHJ1ZGVfIitvdGhlcmFjdGlvbisiXyIrcGFnZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBhbm90aGVyYnV0dG9uID0galF1ZXJ5KCIuZXh0cnVkZV8iK2Fub3RoZXJhY3Rpb24rIl8iK3BhZ2UpOyc7DQoJCQkkc2NyaXB0IC49ICd2YXIgdmFsdWUgPSBidXR0b24uZGF0YSgidmFsdWUiKTsnOw0KCQkJJHNjcmlwdCAuPSAnaWYgKHZhbHVlKXsnOw0KCQkJJHNjcmlwdCAuPSAndmFsdWUgPSAwOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcnZhbHVlID0gMTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAndmFsdWUgPSAxOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcnZhbHVlID0gMDsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkvLyBvbmx5IGFkZCB0aGVzZSBpZiB3ZSBoYXZlIG1vcmUgdGhlbiBmaXZlDQoJCQlpZiAoY291bnQoJG5hbWVzKSA+IDUpDQoJCQl7DQoJCQkJJHNjcmlwdCAuPSAnaWYgKHBhZ2UgPT09ICJhbGwiKXsnOw0KCQkJCSRzY3JpcHQgLj0gJ2pRdWVyeS5lYWNoKERhdGFSZXNvdXJjZVBhZ2VzLCBmdW5jdGlvbihwLCBrZXkpIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleVthY3Rpb25dID0gdmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdrZXlbb3RoZXJhY3Rpb25dID0gb3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ2tleVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW2FjdGlvbl0gPSB2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW290aGVyYWN0aW9uXSA9IG90aGVydmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ30nOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW2FjdGlvbl0gPSB2YWx1ZTsnOw0KCQkJCSRzY3JpcHQgLj0gJ0RhdGFSZXNvdXJjZVBhZ2VzW3BhZ2VdW290aGVyYWN0aW9uXSA9IG90aGVydmFsdWU7JzsNCgkJCQkkc2NyaXB0IC49ICdEYXRhUmVzb3VyY2VQYWdlc1twYWdlXVthbm90aGVyYWN0aW9uXSA9IGFub3RoZXJ2YWx1ZTsnOw0KCQkJfQ0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmRhdGEoInZhbHVlIiwgdmFsdWUpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5kYXRhKCJ2YWx1ZSIsIG90aGVydmFsdWUpOyc7DQoJCQkkc2NyaXB0IC49ICdhbm90aGVyYnV0dG9uLmRhdGEoInZhbHVlIiwgYW5vdGhlcnZhbHVlKTsnOw0KCQkJJHNjcmlwdCAuPSAnaWYgKHZhbHVlKXsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tcHJpbWFyeSIpOyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24ucmVtb3ZlQ2xhc3MoInVrLWJ1dHRvbi1kZWZhdWx0Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ290aGVyYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tZGVmYXVsdCIpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5hZGRDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSBlbHNlIHsnOw0KCQkJJHNjcmlwdCAuPSAnYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tZGVmYXVsdCIpOyc7DQoJCQkkc2NyaXB0IC49ICdidXR0b24ucmVtb3ZlQ2xhc3MoInVrLWJ1dHRvbi1wcmltYXJ5Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ290aGVyYnV0dG9uLmFkZENsYXNzKCJ1ay1idXR0b24tcHJpbWFyeSIpOyc7DQoJCQkkc2NyaXB0IC49ICdvdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5hZGRDbGFzcygidWstYnV0dG9uLWRlZmF1bHQiKTsnOw0KCQkJJHNjcmlwdCAuPSAnYW5vdGhlcmJ1dHRvbi5yZW1vdmVDbGFzcygidWstYnV0dG9uLXByaW1hcnkiKTsnOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICd9JzsNCgkJCSRzY3JpcHQgLj0gJ2Z1bmN0aW9uIHByb2Nlc3NpbmdSZXF1ZXN0KHBhZ2VzLCB0eXBlKSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2lmICghaXNFbXB0eShwYWdlcykpeyc7DQoJCQkkc2NyaXB0IC49ICd2YXIgcnVuID0gMDsgdmFyIHNpemUgPSBPYmplY3Qua2V5cyhwYWdlcykubGVuZ3RoOyBzaXplLS07JzsNCgkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9sb2FkZXIiKS5odG1sKCI8YnIgLz48Y2VudGVyPjxkaXYgY2xhc3M9XCJ1ay10cmFuc2Zvcm0tb3JpZ2luLWJvdHRvbS1yaWdodCB1ay1hbmltYXRpb24tc2NhbGUtdXAgdWstYm94LXNoYWRvdy1ib3R0b21cIj48c21hbGw+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnV2UgYXJlIG5vdyBleHRydWRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgUERGIGRvY3VtZW50IGFuZCBtb3ZpbmcgaXQgaW50byB0aGUgW1tbY3VycmljdWx1bWJ1aWxkZXJfbGlua19uYW1lXV1dIHJlc291cmNlcyBhcmVhLicpOw0KCQkJJHNjcmlwdCAuPSAnPC9zbWFsbD48aDI+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnVGhpcyBtYXkgdGFrZSBhIHNvbWUgdGltZSE8YnIgLz48YnIgLz5QbGVhc2Ugd2FpdCBhbmQgZG8gbm90IHJlZGlyZWN0IGF3YXkgZnJvbSB0aGlzIHBhZ2UhJyk7DQoJCQkkc2NyaXB0IC49ICc8L2gyPjwvZGl2PjwvY2VudGVyPjxkaXY+PHByb2dyZXNzIGlkPVwiW1tbY29tcG9uZW50XV1dX3Jlc3VsdFwiIGNsYXNzPVwidWstcHJvZ3Jlc3NcIiB2YWx1ZT1cIjBcIiBtYXg9XCIiK3NpemUrIlwiPjwvcHJvZ3Jlc3M+PC9kaXY+Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ3ZhciBwcm9jZXNzaW5nUmVxdWVzdENoZWNrZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpeyc7DQoJCQkkc2NyaXB0IC49ICd2YXIga2V5ID0gcGFnZXNbcnVuXTsnOw0KCQkJJHNjcmlwdCAuPSAncHJvY2Vzc2luZ1JlcXVlc3Rfc2VydmVyKEpTT04uc3RyaW5naWZ5KERhdGFSZXNvdXJjZVBhZ2VzW2tleV0pLCB0eXBlKS5kb25lKGZ1bmN0aW9uKHJlc3VsdCkgeyc7DQoJCQkkc2NyaXB0IC49ICdpZiAocmVzdWx0KSB7IGpRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9yZXN1bHQiKS52YWwocnVuKTsgc2hvd1RoZUZpbmlzaGVkTm90aWNlKHJ1biwgc2l6ZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ30gZWxzZSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2pRdWVyeSgiI1tbW2NvbXBvbmVudF1dXV9sb2FkZXIiKS5hZnRlcigiPGRpdiBjbGFzcz1cInVrLXRleHQtZGFuZ2VyXCI+T29wcyB3ZSBmYWlsZWQgdG8gZXh0cnVkZTogPGI+IisgRGF0YVJlc291cmNlUGFnZXNba2V5XS5uYW1lICsgIjwvYj4geW91IHdpbGwgaGF2ZSB0byB0cnkgZXh0cnVkaW5nIHRoaXMgcGFnZSBhZ2FpbiEgSWYgdGhpcyBjb250aW51ZXMgdG8gaGFwcGVuIGluZm9ybSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yLjwvZGl2PiIpO30nOw0KCQkJJHNjcmlwdCAuPSAnc2hvd1RoZUZpbmlzaGVkTm90aWNlKHJ1biwgc2l6ZSk7JzsNCgkJCSRzY3JpcHQgLj0gJ30pOyc7DQoJCQkkc2NyaXB0IC49ICdpZiAocnVuID09IHNpemUpIHsnOw0KCQkJJHNjcmlwdCAuPSAnY2xlYXJJbnRlcnZhbChwcm9jZXNzaW5nUmVxdWVzdENoZWNrZXIpOyc7DQoJCQkkc2NyaXB0IC49ICd9JzsNCgkJCSRzY3JpcHQgLj0gJ3J1bisrOyc7DQoJCQkkc2NyaXB0IC49ICd9LCAyMDApOyc7DQoJCQkkc2NyaXB0IC49ICd9IGVsc2UgeyBqUXVlcnkoIiNsb2FkaW5nIikuaGlkZSgpO30nOw0KCQkJJHNjcmlwdCAuPSAnfSc7DQoJCQkkc2NyaXB0IC49ICdmdW5jdGlvbiBzaG93VGhlRmluaXNoZWROb3RpY2UocnVuLCBzaXplKSB7JzsNCgkJCSRzY3JpcHQgLj0gJ2lmIChydW4gPT0gc2l6ZSB8fCAwID09IHNpemUpIHsnOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjbG9hZGluZyIpLmhpZGUoKTsnOw0KCQkJJHNjcmlwdCAuPSAnalF1ZXJ5KCIjW1tbY29tcG9uZW50XV1dX2xvYWRlciIpLmh0bWwoIjxkaXYgY2xhc3M9XCJ1ay1hbGVydC1zdWNjZXNzXCIgdWstYWxlcnQ+PGgxPic7DQoJCQkkc2NyaXB0IC49IFRleHQ6OnNwcmludGYoJyVzIEV4dHJ1c2lvbiBDb21wbGV0ZSEnLCAkdGhpcy0+X2ZpbGVOYW1lKTsNCgkJCSRzY3JpcHQgLj0gJzwvaDE+PHA+JzsNCgkJCSRzY3JpcHQgLj0gVGV4dDo6XygnRG8gbm90ZSB0aGF0IDxiPm5vIGlucHV0dCBmaWVsZHM8L2I+IHdlcmUgc2V0IGZvciB0aGlzIHJlc291cmNlLCBhbmQgdGhlIHJlc291cmNlIGlzIHN0aWxsIDxiPnVwdWJsaXNoZWQ8L2I+LiBPbmx5IG9uY2UgYW4gZWRpdG9yIGhhcyA8Yj5yZXZpZXdlZCBhbmQgcHVibGxpc2hlZDwvYj4gdGhpcyByZXNvdXJjZSwgd2lsbCBpdCBiZSBhdmFpbGFibGUgZm9yIHVzZSBpbiBjb3Vyc2VzLicpOw0KCQkJJHNjcmlwdCAuPSAnPC9wPjwvZGl2Pic7DQoJCQkkc2NyaXB0IC49ICc8ZGl2IGNsYXNzPVwidWstYnV0dG9uLWdyb3VwIHVrLXdpZHRoLTEtMVwiPic7DQoJCQkkc2NyaXB0IC49ICc8YSBocmVmPVwiaW5kZXgucGhwP29wdGlvbj1jb21fW1tbY3VycmljdWx1bWJ1aWxkZXJdXV0mdmlldz1yZXNvdXJjZXNcIiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSB1ay13aWR0aC0xLTJcIj4nOw0KCQkJJHNjcmlwdCAuPSBUZXh0OjpzcHJpbnRmKCdSZXZpZXdlIFRoZSBSZXNvdXJjZXMnKTsNCgkJCSRzY3JpcHQgLj0gJzwvYT4nOw0KCQkJJHNjcmlwdCAuPSAnPGEgaHJlZj1cImluZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ2aWV3PWZvbGRlcnNcIiBjbGFzcz1cInVrLWJ1dHRvbiB1ay1idXR0b24tZGVmYXVsdCB1ay13aWR0aC0xLTJcIj4nOw0KCQkJJHNjcmlwdCAuPSBUZXh0OjpzcHJpbnRmKCdFeHRydWRlIEFub3RoZXIgUmVzb3VyY2UnKTsNCgkJCSRzY3JpcHQgLj0gJzwvYT4nOw0KCQkJJHNjcmlwdCAuPSAnPC9kaXY+Iik7JzsNCgkJCSRzY3JpcHQgLj0gJ319JzsNCgkJCSRzY3JpcHQgLj0gJzwvc2NyaXB0Pic7DQoJCX0NCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBsaW5rDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcgb24gc3VjY2Vzcw0KCSAqDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExpbmsoJHBhdGgpDQoJew0KCQkvLyBzZXQgZ2xvYmFscw0KCQkkbGlua29wdGlvbnMgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldExpbmtPcHRpb25zKCk7DQoJCS8vIHNldCBsaW5rIHRva2VuIGlmIG5lZWRlZA0KCQkkbGlua1Rva2VuID0gJyc7DQoJCWlmICgkbGlua29wdGlvbnNbJ3Nlc3Npb24nXSkNCgkJew0KCQkJJGxpbmtUb2tlbiA9ICcmJyAuIEpvb21sYV9fXzViYTM4NTEzXzVjNGZfNGIwZF85MzVlXzQ5ZTk4NmE2YmNlOF9fX1Bvd2VyOjpnZXRGb3JtVG9rZW4oKSAuICc9MSc7DQoJCX0NCgkJLy8gYnVpbGQgdGhlIG5hbWUNCgkJJG5hbWUgPSBzdHJfcmVwbGFjZSgnLi8nLCAnJywgJHBhdGgpOw0KCQkvLyBsb2NrIHRoZSBwYXRoIHRvIHRoZSBwYWdlDQoJCWlmICgkbGlua29wdGlvbnNbJ2xvY2snXSkNCgkJew0KCQkJJHBhZ2UgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmJhc2U2NF91cmxlbmNvZGUoW1tbQ29tcG9uZW50XV1dSGVscGVyOjplbmNyeXB0KCAkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lKSk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZSgkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lLCB0cnVlKTsNCgkJfQ0KCQkvLyByZXR1cm4gdGhlIGxpbmsNCgkJcmV0dXJuICR0aGlzLT5nZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbik7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBsaW5rIFVSTA0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nIG9uIHN1Y2Nlc3MNCgkgKg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbikNCgl7DQoJCS8vIHJldHVybiB0aGUgbGluaw0KCQlyZXR1cm4gJ2luZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ0YXNrPWRvd25sb2FkLmpwZyZmaWxlPScgLiAkcGFnZSAuICRsaW5rVG9rZW4gLiAnJm5hbWU9JyAuIHN0cl9yZXBsYWNlKCcuJywgJycsICRuYW1lKTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGltYWdlIGxpbmtzDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGlua3MoKQ0KCXsNCgkJLy8gc2V0IGdsb2JhbHMNCgkJJGxpbmtvcHRpb25zID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRMaW5rT3B0aW9ucygpOw0KCQkvLyBzZXQgbGluayB0b2tlbiBpZiBuZWVkZWQNCgkJJGxpbmtUb2tlbiA9ICcnOw0KCQlpZiAoJGxpbmtvcHRpb25zWydzZXNzaW9uJ10pDQoJCXsNCgkJCSRsaW5rVG9rZW4gPSAnJicgLiBKb29tbGFfX181YmEzODUxM181YzRmXzRiMGRfOTM1ZV80OWU5ODZhNmJjZThfX19Qb3dlcjo6Z2V0Rm9ybVRva2VuKCkgLiAnPTEnOw0KCQl9DQoJCS8vIGJ1aWxkIGFuZCByZXR1cm4gbGlua3MNCgkJcmV0dXJuIGFycmF5X21hcCggZnVuY3Rpb24oJHBhdGgpIHVzZSgkbGlua29wdGlvbnMsICRsaW5rVG9rZW4pew0KCQkJLy8gYnVpbGQgdGhlIG5hbWUNCgkJCSRuYW1lID0gc3RyX3JlcGxhY2UoJy4vJywgJycsICRwYXRoKTsNCgkJCS8vIGxvY2sgdGhlIHBhdGggdG8gdGhlIHBhZ2UNCgkJCWlmICgkbGlua29wdGlvbnNbJ2xvY2snXSkNCgkJCXsNCgkJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZShbW1tDb21wb25lbnRdXV1IZWxwZXI6OmVuY3J5cHQoICR0aGlzLT5oaWRlblBhZ2VzRm9sZGVyIC4gJy8nIC4gJG5hbWUpKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkcGFnZSA9IFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6YmFzZTY0X3VybGVuY29kZSgkdGhpcy0+aGlkZW5QYWdlc0ZvbGRlciAuICcvJyAuICRuYW1lLCB0cnVlKTsNCgkJCX0NCgkJCS8vIHJldHVybiB0aGUgbGluaw0KCQkJcmV0dXJuICR0aGlzLT5nZXRMaW5rVVJMKCRwYWdlLCAkbmFtZSwgJGxpbmtUb2tlbik7DQoJCX0sICR0aGlzLT5wYWdlcyk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBpbWFnZSBuYW1lcw0KCSAqDQoJICoNCgkgKiBAcmV0dXJuICBhcnJheSBvbiBzdWNjZXNzDQoJICoNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TmFtZXMoKQ0KCXsNCgkJLy8gYnVpbGQgYW5kIHJldHVybiBsaW5rcw0KCQlyZXR1cm4gYXJyYXlfbWFwKCBmdW5jdGlvbigkcGF0aCl7DQoJCQkvLyBidWlsZCB0aGUgbmFtZQ0KCQkJcmV0dXJuIHN0cl9yZXBsYWNlKGFycmF5KCcuLycsICcuJyksICcnLCAkcGF0aCk7DQoJCX0sICR0aGlzLT5wYWdlcyk7DQoJfQ0KDQo=', '[[[Component]]] Bridge To [[[curriculumbuilder_link_name]]]', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCQkvLyBjaGVjayB0aGF0IFtbW2N1cnJpY3VsdW1idWlsZGVyXV1dIGlzIGluc3RhbGxlZA0KCQkJJHBhdGhUb0NvcmUgPSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjdXJyaWN1bHVtYnVpbGRlcl1dXS9oZWxwZXJzL1tbW2N1cnJpY3VsdW1idWlsZGVyXV1dLnBocCc7DQoJCQlpZiAoIUpGaWxlOjpleGlzdHMoJHBhdGhUb0NvcmUpKQ0KCQkJew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdbW1tjdXJyaWN1bHVtYnVpbGRlcl9hY3JvbnltXV1dIG11c3QgZmlyc3QgYmUgaW5zdGFsbGVkIGZyb20gPGEgaHJlZj0iW1tbZ2V0X2N1cnJpY3VsdW1idWlsZGVyX2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjdXJyaWN1bHVtYnVpbGRlcl9saW5rX25hbWVdXV08L2E+LicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"8\"},\"property_selection1\":{\"property\":\"9\"},\"property_selection2\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Bridge To Curriculum Builder', '', 1, '', '', 1, '2019-10-22 20:48:43', '2024-08-06 20:54:39', 173, '', 4),
(9, '', '', '', '', '', '', '', '', '', '', '', '', '', 1, 'Loading WHMCS Products details', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"WHMCS\",\"label\":\"WHMCS Access Details\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2678\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2677\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"324\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2712\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2713\",\"custom_value\":\"\"}}}}', 'e8be5861-f9eb-4d35-890b-14352e8ec86e', '', 3, '{\"method_selection0\":{\"method\":\"16\"}}', 'CS8qKg0KCSAqIEFQSSBVUkwNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkdXJsOw0KDQoJLyoqDQoJICogU0hPUCBVUkwNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wLjMNCgkgKi8NCglwcml2YXRlICRzaG9wdXJsOw0KDQoJLyoqDQoJICogQVBJIElERU5USUZJRVJfT1JfQURNSU5fVVNFUk5BTUUNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkdXNlcm5hbWU7DQoNCgkvKioNCgkgKiBBUEkgU0VDUkVUX09SX0hBU0hFRF9QQVNTV09SRA0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcml2YXRlICRwYXNzd29yZDsNCg0KCS8qKg0KCSAqIEFQSSBBQ1RJVkUgQ1VSUkVOQ1kNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJpdmF0ZSAkY3VycmVuY3k7DQoNCgkvKioNCgkgKiBBZGQgdnVlIHRvIHBhZ2UgaGVhZGVyDQoJICoNCgkgKiBAdmFyICAgIGJvb2wNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcml2YXRlICAkYWRkVnVlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFRoZSBjdXJyZW5jaWVzDQoJICoNCgkgKiBAdmFyICBhcnJheQ0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByaXZhdGUgICRjdXJyZW5jaWVzOw0KDQoJLyoqDQoJICogVGhlIHByb2R1Y3RzDQoJICoNCgkgKiBAdmFyICBhcnJheQ0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByaXZhdGUgICRwcm9kdWN0cyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiB3aG1jcyBzdHJpbmcgbmFtZQ0KCSAqDQoJICogQHZhciAgIHN0cmluZw0KCSAqIEBzaW5jZSAxLjANCgkgKi8NCglwcml2YXRlICRfd2htY3M7DQoNCgkvKioNCgkgKiB3aG1jcyBhY3Rpb24gbmFtZQ0KCSAqDQoJICogQHZhciAgIHN0cmluZw0KCSAqIEBzaW5jZSAxLjANCgkgKi8NCglwcml2YXRlICRfd2htY3Nfb3BlbjsNCg0KCS8qKg0KCSAqIHZ1ZSBjYWxsIHRyaWdnZXINCgkgKg0KCSAqIEB2YXIgICBzdHJpbmcNCgkgKiBAc2luY2UgMS4wDQoJICovDQoJcHJpdmF0ZSAkX3dobWNzX3Z1ZTsNCg0KCS8qKg0KCSAqIHZ1ZSBlbmQgdGFyZ2V0DQoJICoNCgkgKiBAdmFyICAgc3RyaW5nDQoJICogQHNpbmNlIDEuMA0KCSAqLw0KCXByaXZhdGUgJF93aG1jc192dWVfOw0KDQoJLyoqDQoJICogZW5kX2Nsb3NpbmcgdGFyZ2V0DQoJICoNCgkgKiBAdmFyICAgc3RyaW5nDQoJICogQHNpbmNlIDEuMA0KCSAqLw0KCXByaXZhdGUgJF9jbG9zaW5nOw0KDQoJLyoqDQoJICogQXBwbGljYXRpb24gb2JqZWN0DQoJICoNCgkgKiBAdmFyICAgIENNU0FwcGxpY2F0aW9uDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFwcDsNCg0KCS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGlzIGlzIHRoZSBmaXJzdCBzdGFnZSBpbiBwcmVwYXJpbmcgY29udGVudCBmb3Igb3V0cHV0IGFuZCBpcyB0aGUNCgkgKiBtb3N0IGNvbW1vbiBwb2ludCBmb3IgY29udGVudCBvcmllbnRhdGVkIHBsdWdpbnMgdG8gZG8gdGhlaXIgd29yay4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICRjb250ZXh0ICBUaGUgY29udGV4dCBvZiB0aGUgY29udGVudCBiZWluZyBwYXNzZWQgdG8gdGhlIHBsdWdpbi4NCgkgKiBAcGFyYW0gICBvYmplY3QgICAmJHJvdyAgICAgVGhlIGFydGljbGUgb2JqZWN0LiAgTm90ZSAkYXJ0aWNsZS0+dGV4dCBpcyBhbHNvIGF2YWlsYWJsZQ0KCSAqIEBwYXJhbSAgIG1peGVkICAgICYkcGFyYW1zICBUaGUgYXJ0aWNsZSBwYXJhbXMNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGFnZSAgICAgVGhlICdwYWdlJyBudW1iZXINCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlKCRjb250ZXh0LCAmJHJvdywgJiRwYXJhbXMsICRwYWdlID0gMCkNCgl7DQoJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBIVE1MIHN0cmVhbQ0KCQlpZiAoJHRoaXMtPmFwcC0+aXNDbGllbnQoJ2FkbWluaXN0cmF0b3InKSB8fCAkdGhpcy0+YXBwLT5pbnB1dC0+Z2V0Q21kKCdmb3JtYXQnLCAnaHRtbCcpICE9ICdodG1sJykNCgkJew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJLy8gc2V0IGNhbGwgc3RyaW5nDQoJCWlmICghaXNzZXQoJHRoaXMtPl93aG1jcykpDQoJCXsNCgkJCSR0aGlzLT5fd2htY3MgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2NhbGxfc3RyaW5nJywgJ1dITUNTJyk7DQoJCQkvLyBzZXQgd2htY3MgcGxhY2Vob2xkZXIgb3BlbmluZyB0YWcNCgkJCSR0aGlzLT5fd2htY3Nfb3BlbiA9ICd7JyAuICR0aGlzLT5fd2htY3M7DQoJCQkvLyBzZXQgd2htY3MgdnVlIHRyaWdnZXIgb3BlbmluZyB0YWcNCgkJCSR0aGlzLT5fd2htY3NfdnVlID0gJHRoaXMtPl93aG1jc19vcGVuIC4gJz0nOw0KCQkJLy8gc2V0IHdobWNzIHZ1ZSB0cmlnZ2VyIGVuZCB0YWcNCgkJCSR0aGlzLT5fd2htY3NfdnVlXyA9ICR0aGlzLT5fd2htY3Nfb3BlbiAuICcvJzsNCgkJCS8vIHNldCBjbG9zaW5nIHRhZw0KCQkJJHRoaXMtPl9jbG9zaW5nID0gJ30nOw0KCQl9DQoNCgkJLy8gU2ltcGxlIHBlcmZvcm1hbmNlIGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGJvdCBzaG91bGQgcHJvY2VzcyBmdXJ0aGVyDQoJCWlmIChzdHJwb3MoJHJvdy0+dGV4dCwgJHRoaXMtPl93aG1jc19vcGVuKSA9PT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KCQkvLyBnZXQgYWxsIGFjdGlvbnMgY2FsbHMNCgkJJGFjdGlvbnMgPSAkdGhpcy0+Z2V0QWxsQmV0d2Vlbigkcm93LT50ZXh0LCAkdGhpcy0+X3dobWNzX3Z1ZSwgJHRoaXMtPl9jbG9zaW5nKTsNCgkJLy8gdXBkYXRlIGlmIGZvdW5kDQoJCSR0aGlzLT5fZG9WdWUoJHJvdy0+dGV4dCwgJGFjdGlvbnMpOw0KCQkvLyBnZXQgYWxsIGFjdGlvbnMgY2FsbHMNCgkJJGFjdGlvbnMgPSAkdGhpcy0+Z2V0QWxsQmV0d2Vlbigkcm93LT50ZXh0LCAkdGhpcy0+X3dobWNzX29wZW4sICR0aGlzLT5fY2xvc2luZyk7DQoJCS8vIHVwZGF0ZSBpZiBmb3VuZA0KCQkkdGhpcy0+X2RvV2htY3MoJHJvdy0+dGV4dCwgJGFjdGlvbnMpOw0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgaXMgdGhlIHdobWNzIHBsYWNlaG9sZGVyIG1ldGhvZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFjdGlvbnMgICAgIFRoZSBhY3Rpb24gY2FsbHMgYmVpbmcgbWFkZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIF9kb1dobWNzKCYkdGV4dCwgJGFjdGlvbnMpDQoJew0KCQkvLyBPbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYWN0aW9ucw0KCQlpZiAoJHRoaXMtPmNoZWNrQXJyYXkoJGFjdGlvbnMsIHRydWUpKQ0KCQl7DQoJCQkvLyBnZXQgdXNlcm5hbWUgaWYgbm90IHNldA0KCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVzZXJuYW1lKSkNCgkJCXsNCgkJCQkkdGhpcy0+dXNlcm5hbWUgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3VzZXJuYW1lJywgbnVsbCk7DQoJCQl9DQoJCQkvLyBnZXQgcGFzc3dvcmQgaWYgbm90IHNldA0KCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnBhc3N3b3JkKSkNCgkJCXsNCgkJCQkkdGhpcy0+cGFzc3dvcmQgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3Bhc3N3b3JkJywgbnVsbCk7DQoJCQl9DQoJCQkvLyBnZXQgdXJsIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT51cmwpKQ0KCQkJew0KCQkJCSR0aGlzLT51cmwgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3VybCcsIG51bGwpOw0KCQkJCS8vIGJ1aWxkIHNob3AgVVJMIGJhc2VkIG9uIGFmaWxpYXRpb24gc3RhdHVzDQoJCQkJJGFjdGl2YXRlX2FmZmlsaWF0ZSA9ICR0aGlzLT5wYXJhbXMtPmdldCgnYWN0aXZhdGVfYWZmaWxpYXRlX3Byb2dyYW0nLCAwKTsNCgkJCQlpZiAoMSA9PSAkYWN0aXZhdGVfYWZmaWxpYXRlKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPnNob3B1cmwgPSAkdGhpcy0+dXJsIC4gJy9hZmYucGhwP2FmZj0nIC4gKGludCkgJHRoaXMtPnBhcmFtcy0+Z2V0KCdhZmZpbGlhdGVfaWQnLCAwKSAuICcmYT1hZGQnOyANCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJJHRoaXMtPnNob3B1cmwgPSAkdGhpcy0+dXJsIC4gJy9jYXJ0LnBocD9hPWFkZCc7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIG5lZWRlZCBkZXRhaWxzIHRvIGNhbGwNCgkJCWlmICgkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVzZXJuYW1lKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnBhc3N3b3JkKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPnVybCkpDQoJCQl7DQoJCQkJLy8gZ2V0IGdsb2JhbCBjdXJyZW5jeQ0KCQkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT5jdXJyZW5jeSkpDQoJCQkJew0KCQkJCQkkdGhpcy0+Y3VycmVuY3kgPSBzdHJ0b3VwcGVyKCR0aGlzLT5wYXJhbXMtPmdldCgnY3VycmVuY3knLCAnVVNEJykpOw0KCQkJCX0NCgkJCQkvLyBnZXQgYXJyYXkgZ2x1ZQ0KCQkJCSRnbHVlID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhcnJheV9nbHVlJywgJywgJyk7DQoJCQkJLy8gc2V0IGVtcHR5IElEIGFycmF5DQoJCQkJJGlkcyA9IGFycmF5KCk7DQoJCQkJJGlkc19xdWVyeSA9IGFycmF5KCk7DQoJCQkJJGRlYnVnID0gZmFsc2U7DQoJCQkJLy8gdXBkYXRlcg0KCQkJCSR1cGRhdGUgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCRhY3Rpb25zIGFzICRxdWVyeSkNCgkJCQl7DQoJCQkJCS8vIGNsZWFyIG91dCB0aGUgY2FsbA0KCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJyc7DQoJCQkJCS8vIGdldCB0aGUgaW5wdXRzDQoJCQkJCSRxdWVyeUFycmF5ID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnfCcsIHRyaW0oJHF1ZXJ5KSkpOw0KCQkJCQkvLyBjb250aW51ZSBvbmx5IGlmIHdlIGhhdmUgdmFsdWVzDQoJCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcXVlcnlBcnJheSwgdHJ1ZSkpDQoJCQkJCXsNCgkJCQkJCS8vIG9ubHkgb25lIElEIHBlci9xdWVyeQ0KCQkJCQkJJHNlYXJjaCA9IHRydWU7DQoJCQkJCQlmb3JlYWNoICgkcXVlcnlBcnJheSBhcyAkcXVlcnlWYWx1ZSkNCgkJCQkJCXsNCgkJCQkJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgaWQgcXVlcnkNCgkJCQkJCQlpZiAoJHNlYXJjaCAmJiBpc19udW1lcmljKCRxdWVyeVZhbHVlKSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRpZCA9IChpbnQpICRxdWVyeVZhbHVlOw0KCQkJCQkJCQkvLyBzZXQgdGhlIHByb2R1Y3QgSUQgYXJyYXkNCgkJCQkJCQkJJGlkc1skaWRdID0gJGlkOw0KCQkJCQkJCQkvLyBtYWtlIHN1cmUgdGhlIGFycmF5IGlzIHNldA0KCQkJCQkJCQlpZiAoIWlzc2V0KCRpZHNfcXVlcnlbJGlkXSkpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRpZHNfcXVlcnlbJGlkXSA9IGFycmF5KCk7DQoJCQkJCQkJCX0NCgkJCQkJCQkJLy8gd2Ugc2V0IHRoZSBidWlsZGVyIHF1ZXJ5DQoJCQkJCQkJCSRpZHNfcXVlcnlbJGlkXVskcXVlcnldID0gICR0aGlzLT5tZXJnZUFycmF5cyhhcnJheV9tYXAoIGZ1bmN0aW9uICgkdmFsKSB1c2UoJGlkKSB7DQoJCQkJCQkJCQkvLyBtYWtlIHN1cmUgaXQgaXMgbm90IGFuIElEDQoJCQkJCQkJCQlpZiAoIWlzX251bWVyaWMoJHZhbCkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJLy8gc2V0IHNvbWUgb3B0aW9ucw0KCQkJCQkJCQkJCSRsb3dlciA9IHN0cnRvbG93ZXIoJHZhbCk7DQoJCQkJCQkJCQkJJHVwcGVyID0gc3RydG91cHBlcigkdmFsKTsNCgkJCQkJCQkJCQlpZiAoJGxvd2VyID09PSAnbW9udGhseScgfHwgJGxvd2VyID09PSAncXVhcnRlcmx5JyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdzZW1pYW5udWFsbHknIHx8ICRsb3dlciA9PT0gJ2FubnVhbGx5JyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdiaWVubmlhbGx5JyB8fCAkbG93ZXIgPT09ICd0cmllbm5pYWxseScgfHwNCgkJCQkJCQkJCQkJJGxvd2VyID09PSAnbXNldHVwZmVlJyB8fCAkbG93ZXIgPT09ICdxc2V0dXBmZWUnIHx8DQoJCQkJCQkJCQkJCSRsb3dlciA9PT0gJ3NzZXR1cGZlZScgfHwgJGxvd2VyID09PSAnYXNldHVwZmVlJyB8fA0KCQkJCQkJCQkJCQkkbG93ZXIgPT09ICdic2V0dXBmZWUnIHx8ICRsb3dlciA9PT0gJ3RzZXR1cGZlZScgKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJLy8gbWFwIElEIHRvIHRlcm0NCgkJCQkJCQkJCQkJcmV0dXJuIGFycmF5KCAndGVybScgPT4gJGxvd2VyKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJZWxzZWlmICgkbG93ZXIgPT09ICR2YWwgJiYgJ2RlYnVnJyAhPT0gJHZhbCkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCS8vIG1hcCBJRCB0byB0eXBlIG9wdGlvbg0KCQkJCQkJCQkJCQlyZXR1cm4gYXJyYXkoICd0eXBlJyA9PiAkbG93ZXIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlaWYgKCR1cHBlciA9PT0gJHZhbCkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCS8vIG1hcCBJRCB0byBjdXJyZW5jeQ0KCQkJCQkJCQkJCQlyZXR1cm4gYXJyYXkoICdjdXJyZW5jeScgPT4gJHVwcGVyKTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQlyZXR1cm4gYXJyYXkoJ2lkJyA9PiAkaWQpOw0KCQkJCQkJCQl9LCAkcXVlcnlBcnJheSkpOw0KCQkJCQkJCQkvLyBvbmx5IG9uZSBJRCBwZXIvcXVlcnkNCgkJCQkJCQkJJHNlYXJjaCA9IGZhbHNlOw0KCQkJCQkJCX0NCgkJCQkJCQllbHNlaWYgKCFpc19udW1lcmljKCRxdWVyeVZhbHVlKSAmJiBzdHJ0b2xvd2VyKCRxdWVyeVZhbHVlKSA9PT0gJ2RlYnVnJykNCgkJCQkJCQl7DQoJCQkJCQkJCSRkZWJ1ZyA9IHRydWU7DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGdldCB0aGUgcHJvZHVjdHMNCgkJCQlpZiAoKCRwcm9kdWN0cyA9ICR0aGlzLT5nZXRQcm9kdWN0cygkaWRzKSkgIT09IGZhbHNlKQ0KCQkJCXsNCgkJCQkJLy8gY2hlY2sgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3MNCgkJCQkJaWYgKCRwcm9kdWN0cy0+cmVzdWx0ID09PSAnc3VjY2VzcycpDQoJCQkJCXsNCgkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0cy0+cHJvZHVjdHMtPnByb2R1Y3QgYXMgJHByb2R1Y3QpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKGlzc2V0KCRpZHNfcXVlcnlbJHByb2R1Y3QtPnBpZF0pKQ0KCQkJCQkJCXsNCgkJCQkJCQkJZm9yZWFjaCAoJGlkc19xdWVyeVskcHJvZHVjdC0+cGlkXSBhcyAkcXVlcnkgPT4gJHRyaWdnZXJzKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkvLyBzZXQgdGhlIGRldGFpbHMNCgkJCQkJCQkJCWlmIChpc3NldCgkdHJpZ2dlcnNbJ3R5cGUnXSkgJiYgJ3VybCcgIT09ICR0cmlnZ2Vyc1sndHlwZSddICYmIGlzc2V0KCRwcm9kdWN0LT57JHRyaWdnZXJzWyd0eXBlJ119KSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQlpZiAoJHRoaXMtPmNoZWNrU3RyaW5nKCRwcm9kdWN0LT57JHRyaWdnZXJzWyd0eXBlJ119KSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc19vcGVuIC4gICRxdWVyeSAuICR0aGlzLT5fY2xvc2luZ10gPSAkcHJvZHVjdC0+eyR0cmlnZ2Vyc1sndHlwZSddfTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJZWxzZWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcHJvZHVjdC0+eyR0cmlnZ2Vyc1sndHlwZSddfSkpDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gaW1wbG9kZSgkZ2x1ZSwgJHByb2R1Y3QtPnskdHJpZ2dlcnNbJ3R5cGUnXX0pOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkvLyBzZXQgdGhlIGN1cnJlbmN5DQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1snY3VycmVuY3knXSkpDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkY3VycmVuY3kgPSAkdHJpZ2dlcnNbJ2N1cnJlbmN5J107DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSRjdXJyZW5jeSA9ICR0aGlzLT5jdXJyZW5jeTsNCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJLy8gc2V0IHRoZSB0ZXJtDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1sndGVybSddKSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR0ZXJtID0gJHRyaWdnZXJzWyd0ZXJtJ107DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSR0ZXJtID0gJ21vbnRobHknOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkvLyBzZXQgdXJsDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCR0cmlnZ2Vyc1sndHlwZSddKSAmJiAndXJsJyA9PT0gJHRyaWdnZXJzWyd0eXBlJ10pDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQlpZiAoaXNzZXQoJHByb2R1Y3QtPnVybHMtPnskY3VycmVuY3l9LT57JHRlcm19KSkNCgkJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkJaWYgKCdtb250aGx5JyA9PT0gJHRlcm0pDQoJCQkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX29wZW4gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICBzdHJfcmVwbGFjZSgnJmJpbGxpbmdjeWNsZT1tb250aGx5JywgJycsICRwcm9kdWN0LT51cmxzLT57JGN1cnJlbmN5fS0+eyR0ZXJtfSk7DQoJCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQllbHNlDQoJCQkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX29wZW4gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICRwcm9kdWN0LT51cmxzLT57JGN1cnJlbmN5fS0+eyR0ZXJtfTsNCgkJCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkvLyBzZXQgcHJpY2UNCgkJCQkJCQkJCQllbHNlaWYgKGlzc2V0KCRwcm9kdWN0LT5wcmljaW5nLT57JGN1cnJlbmN5fS0+eyR0ZXJtfSkgJiYgJzAuMDAnICE9PSAkcHJvZHVjdC0+cHJpY2luZy0+eyRjdXJyZW5jeX0tPnskdGVybX0pDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkdXBkYXRlWyR0aGlzLT5fd2htY3Nfb3BlbiAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJHByb2R1Y3QtPnByaWNpbmctPnskY3VycmVuY3l9LT5wcmVmaXggLiAnICcgLiAkcHJvZHVjdC0+cHJpY2luZy0+eyRjdXJyZW5jeX0tPnskdGVybX07DQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJfQ0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCS8vIGRlYnVnDQoJCQkJCWlmICgkZGVidWcpDQoJCQkJCXsNCgkJCQkJCSR0ZXh0IC49ICc8YnIgLz48cHJlPicgLiBqc29uX2VuY29kZSgkcHJvZHVjdHMsIEpTT05fUFJFVFRZX1BSSU5UKSAuICc8L3ByZT4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIHVwZGF0ZSB0aGUgdGV4dA0KCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkdXBkYXRlKSkNCgkJCQl7DQoJCQkJCSR0ZXh0ID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdXBkYXRlKSwgYXJyYXlfdmFsdWVzKCR1cGRhdGUpLCAkdGV4dCk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyB0aGUgdnVlIG1ldGhvZA0KCSAqDQoJICogQHBhcmFtICAgc3RyaW5nICAgJHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIHVwZGF0ZQ0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGFjdGlvbnMgICAgIFRoZSBhY3Rpb24gY2FsbHMgYmVpbmcgbWFkZQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIF9kb1Z1ZSgmJHRleHQsICRhY3Rpb25zKQ0KCXsNCgkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGFjdGlvbnMNCgkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRhY3Rpb25zLCB0cnVlKSkNCgkJew0KCQkJLy8gZ2V0IHVzZXJuYW1lIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT51c2VybmFtZSkpDQoJCQl7DQoJCQkJJHRoaXMtPnVzZXJuYW1lID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCd1c2VybmFtZScsIG51bGwpOw0KCQkJfQ0KCQkJLy8gZ2V0IHBhc3N3b3JkIGlmIG5vdCBzZXQNCgkJCWlmICghJHRoaXMtPmNoZWNrU3RyaW5nKCR0aGlzLT5wYXNzd29yZCkpDQoJCQl7DQoJCQkJJHRoaXMtPnBhc3N3b3JkID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdwYXNzd29yZCcsIG51bGwpOw0KCQkJfQ0KCQkJLy8gZ2V0IHVybCBpZiBub3Qgc2V0DQoJCQlpZiAoISR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXJsKSkNCgkJCXsNCgkJCQkkdGhpcy0+dXJsID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCd1cmwnLCBudWxsKTsNCgkJCQkvLyBidWlsZCBzaG9wIFVSTCBiYXNlZCBvbiBhZmlsaWF0aW9uIHN0YXR1cw0KCQkJCSRhY3RpdmF0ZV9hZmZpbGlhdGUgPSAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FjdGl2YXRlX2FmZmlsaWF0ZV9wcm9ncmFtJywgMCk7DQoJCQkJaWYgKDEgPT0gJGFjdGl2YXRlX2FmZmlsaWF0ZSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5zaG9wdXJsID0gJHRoaXMtPnVybCAuICcvYWZmLnBocD9hZmY9JyAuIChpbnQpICR0aGlzLT5wYXJhbXMtPmdldCgnYWZmaWxpYXRlX2lkJywgMCkgLiAnJmE9YWRkJzsgDQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSR0aGlzLT5zaG9wdXJsID0gJHRoaXMtPnVybCAuICcvY2FydC5waHA/YT1hZGQnOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGFkZCB2dWUgdG8gdGhlIGhlYWRlciBvZiB0aGUgZG9jdW1lbnQgaWYgbmVlZGVkIChkZWZhdWx0IHRydWUpDQoJCQlpZiAoJHRoaXMtPmFkZFZ1ZSAmJiAkdGhpcy0+cGFyYW1zLT5nZXQoJ2FkZF92dWUnLCAxKSkNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXREb2N1bWVudCgpLT5hZGRTY3JpcHQoSm9vbWxhX19fZWVjYzE0M2VfYjVjZl80YzMzX2JhNGRfOTdkYTFkZjYxNDIyX19fUG93ZXI6OnJvb3QodHJ1ZSkgLicvcGx1Z2lucy9jb250ZW50L3dobWNzcHJvZHVjdHMvanMvdnVlLm1pbi5qcycsIGFycmF5KCd2ZXJzaW9uJyA9PiAnYXV0bycpKTsNCgkJCX0NCgkJCS8vIGRvIG5vdCBhZGQgdnVlIGFnYWluDQoJCQkkdGhpcy0+YWRkVnVlID0gZmFsc2U7DQoJCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUgbmVlZGVkIGRldGFpbHMgdG8gY2FsbA0KCQkJaWYgKCR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXNlcm5hbWUpICYmICR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+cGFzc3dvcmQpICYmICR0aGlzLT5jaGVja1N0cmluZygkdGhpcy0+dXJsKSkNCgkJCXsNCgkJCQkvLyBnZXQgZ2xvYmFsIGN1cnJlbmN5DQoJCQkJaWYgKCEkdGhpcy0+Y2hlY2tTdHJpbmcoJHRoaXMtPmN1cnJlbmN5KSkNCgkJCQl7DQoJCQkJCSR0aGlzLT5jdXJyZW5jeSA9IHN0cnRvdXBwZXIoJHRoaXMtPnBhcmFtcy0+Z2V0KCdjdXJyZW5jeScsICdVU0QnKSk7DQoJCQkJfQ0KCQkJCS8vIHVwZGF0ZXINCgkJCQkkdXBkYXRlID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgkYWN0aW9ucyBhcyAkcXVlcnkpDQoJCQkJew0KCQkJCQkvLyBjbGVhciBvdXQgdGhlIGNhbGwNCgkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX3Z1ZSAuICAkcXVlcnkgLiAkdGhpcy0+X2Nsb3NpbmddID0gJyc7DQoJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc192dWVfIC4gICRxdWVyeSAuICR0aGlzLT5fY2xvc2luZ10gPSAnJzsNCgkJCQkJLy8gZ2V0IHRoZSBpbnB1dHMNCgkJCQkJJHF1ZXJ5QXJyYXkgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCd8JywgdHJpbSgkcXVlcnkpKSk7DQoJCQkJCS8vIGNvbnRpbnVlIG9ubHkgaWYgd2UgaGF2ZSB2YWx1ZXMNCgkJCQkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRxdWVyeUFycmF5LCB0cnVlKSkNCgkJCQkJew0KCQkJCQkJLy8gc2V0IHRoaXMNCgkJCQkJCSRpZHMgPSBhcnJheSgpOw0KCQkJCQkJJHR5cGUgPSAncGlkJzsNCgkJCQkJCSRkZWJ1ZyA9IGZhbHNlOw0KCQkJCQkJJGN1cnJlbmN5ID0gJHRoaXMtPmN1cnJlbmN5Ow0KCQkJCQkJZm9yZWFjaCAoJHF1ZXJ5QXJyYXkgYXMgJHF1ZXJ5VmFsdWUpDQoJCQkJCQl7DQoJCQkJCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIGlkIHF1ZXJ5DQoJCQkJCQkJaWYgKGlzX251bWVyaWMoJHF1ZXJ5VmFsdWUpKQ0KCQkJCQkJCXsNCgkJCQkJCQkJJGlkc1soaW50KSAkcXVlcnlWYWx1ZV0gPSAoaW50KSAkcXVlcnlWYWx1ZTsNCgkJCQkJCQl9DQoJCQkJCQkJZWxzZWlmICgkdGhpcy0+Y2hlY2tTdHJpbmcoJHF1ZXJ5VmFsdWUpKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gc2V0IHNvbWUgb3B0aW9ucw0KCQkJCQkJCQkkbG93ZXIgPSBzdHJ0b2xvd2VyKCRxdWVyeVZhbHVlKTsNCgkJCQkJCQkJJHVwcGVyID0gc3RydG91cHBlcigkcXVlcnlWYWx1ZSk7DQoJCQkJCQkJCWlmICgkbG93ZXIgPT09ICdwaWQnIHx8ICRsb3dlciA9PT0gJ2dpZCcpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCS8vIHdlIGNhbiBvbmx5IGhhdmUgb25lIHR5cGUgKGRvIG5vdCBtaXggdGhlbSkNCgkJCQkJCQkJCSR0eXBlID0gc3RydG9sb3dlcigkcXVlcnlWYWx1ZSk7DQoJCQkJCQkJCX0NCgkJCQkJCQkJZWxzZWlmICgkbG93ZXIgPT09ICdkZWJ1ZycpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRkZWJ1ZyA9IHRydWU7DQoJCQkJCQkJCX0NCgkJCQkJCQkJZWxzZWlmICgkdXBwZXIgPT09ICRxdWVyeVZhbHVlKQ0KCQkJCQkJCQl7DQoJCQkJCQkJCQkkY3VycmVuY3kgPSAkdXBwZXI7DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQkvLyBnZXQgcHJvZHVjdHMNCgkJCQkJCWlmICgoJHByb2R1Y3RzID0gJHRoaXMtPmdldFByb2R1Y3RzKCRpZHMsICR0eXBlLCAkY3VycmVuY3kpKSAhPT0gZmFsc2UpDQoJCQkJCQl7DQoJCQkJCQkJLy8gdGhpcyBhcHAgYmxvY2sgaXNvbGF0aW9uIElEDQoJCQkJCQkJJGFwcElEID0gJHRoaXMtPnJhbmRvbWtleSgxMCk7DQoJCQkJCQkJJHByb2R1Y3RzLT5hcHBfaWQgPSAkYXBwSUQ7DQoJCQkJCQkJJGRhdGEgPSBqc29uX2VuY29kZSgkcHJvZHVjdHMpOw0KCQkJCQkJCS8vIGFkZCB0aGUgYXBwIGRpdg0KCQkJCQkJCSR1cGRhdGVbJHRoaXMtPl93aG1jc192dWUgLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICI8ZGl2IGlkPSckYXBwSUQnPiI7DQoJCQkJCQkJJHVwZGF0ZVskdGhpcy0+X3dobWNzX3Z1ZV8gLiAgJHF1ZXJ5IC4gJHRoaXMtPl9jbG9zaW5nXSA9ICI8L2Rpdj48c2NyaXB0PnZhciBkYXRhJGFwcElEID0gJGRhdGE7dmFyIGFwcCRhcHBJRCA9IG5ldyBWdWUoe2VsOiAnIyRhcHBJRCcsIGRhdGE6IGRhdGEkYXBwSUR9KTs8L3NjcmlwdD4iOw0KCQkJCQkJCS8vIGRlYnVnDQoJCQkJCQkJaWYgKCRkZWJ1ZykNCgkJCQkJCQl7DQoJCQkJCQkJCSR0ZXh0IC49ICc8YnIgLz48cHJlPicgLiBqc29uX2VuY29kZSgkcHJvZHVjdHMsIEpTT05fUFJFVFRZX1BSSU5UKSAuICc8L3ByZT4nOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCQkvLyB1cGRhdGUgdGhlIHRleHQNCgkJCQlpZiAoJHRoaXMtPmNoZWNrQXJyYXkoJHVwZGF0ZSkpDQoJCQkJew0KCQkJCQkkdGV4dCA9IHN0cl9yZXBsYWNlKGFycmF5X2tleXMoJHVwZGF0ZSksIGFycmF5X3ZhbHVlcygkdXBkYXRlKSwgJHRleHQpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgZ2V0cyB0aGUgcHJvZHVjdHMNCgkgKg0KCSAqIEBwYXJhbSAgIGFycmF5ICAgJGlkcyAgICAgICAgVGhlIGlkcyB0byBnZXQNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkdHlwZSAgICAgVGhlIHR5cGUgb2YgaWRzDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGN1cnJlbmN5ICAgICBUaGUgYWN0aXZlIGN1cnJlbmN5IGZvciB0aGlzIGJsb2NrDQoJICoNCgkgKiBAcmV0dXJuICBvYmplY3QNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRQcm9kdWN0cygkaWRzLCAkdHlwZSA9ICdwaWQnLCAkY3VycmVuY3kgPSAnVVNEJykNCgl7DQoJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkaWRzKSAmJiAkdGhpcy0+Y2hlY2tTdHJpbmcoJHR5cGUpKQ0KCQl7DQoJCQkvLyBnZXQgdGhlIG1lbW9yeSBrZXkNCgkJCSRrZXkgPSBtZDUoc2VyaWFsaXplKCRpZHMpIC4gJHR5cGUpOw0KCQkJLy8gY2hlY2sgaWYgdGhlc2Ugd2VyZSBhbHJlYWR5IHNldA0KCQkJaWYgKGlzc2V0KCR0aGlzLT5wcm9kdWN0c1ska2V5XSkpDQoJCQl7DQoJCQkJLy8gbWFrZSBzdXJlIHRoZSBjb3JyZWN0IGN1cnJlbmN5IGlzIGFjdGl2ZQ0KCQkJCWZvcmVhY2ggKCR0aGlzLT5wcm9kdWN0c1ska2V5XS0+cHJvZHVjdHMtPnByb2R1Y3QgYXMgJiRwcm9kdWN0KQ0KCQkJCXsNCgkJCQkJJHByb2R1Y3QtPmFjdGl2ZV9jdXJyZW5jeSA9ICRjdXJyZW5jeTsNCgkJCQl9DQoJCQkJcmV0dXJuICR0aGlzLT5wcm9kdWN0c1ska2V5XTsNCgkJCX0NCgkJCS8vIHdlIG1ha2UgYSBuZXcgY2FsbA0KCQkJJGNoID0gY3VybF9pbml0KCk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdGhpcy0+dXJsIC4gJy9pbmNsdWRlcy9hcGkucGhwJyk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVCwgMSk7DQoJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywNCgkJCQlodHRwX2J1aWxkX3F1ZXJ5KA0KCQkJCQlhcnJheSgNCgkJCQkJCSdhY3Rpb24nID0+ICdHZXRQcm9kdWN0cycsDQoJCQkJCQkndXNlcm5hbWUnID0+ICR0aGlzLT51c2VybmFtZSwNCgkJCQkJCSdwYXNzd29yZCcgPT4gJHRoaXMtPnBhc3N3b3JkLA0KCQkJCQkJJHR5cGUgPT4gaW1wbG9kZSgnLCcsICRpZHMpLA0KCQkJCQkJJ3Jlc3BvbnNldHlwZScgPT4gJ2pzb24nDQoJCQkJCSkNCgkJCQkpDQoJCQkpOw0KCQkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCAxKTsNCgkJCSRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOw0KCQkJY3VybF9jbG9zZSgkY2gpOw0KCQkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgYSBqc29uIHN0cmluZw0KCQkJaWYgKCR0aGlzLT5jaGVja0pzb24oJHJlc3BvbnNlKSkNCgkJCXsNCgkJCQkvLyB3ZSBtdXN0IHNldCBhIGZldyBkZXRhaWxzDQoJCQkJJHJlc3BvbnNlID0ganNvbl9kZWNvZGUoJHJlc3BvbnNlKTsNCgkJCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgc3VjY2Vzcw0KCQkJCWlmICgkcmVzcG9uc2UtPnJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKQ0KCQkJCXsNCgkJCQkJLy8gc2V0IHRoZSBnbG9iYWwgYXZhaWxhYmxlIGN1cnJlbmNpZXMNCgkJCQkJJHJlc3BvbnNlLT5jdXJyZW5jeSA9ICRjdXJyZW5jeTsNCgkJCQkJaWYgKCFpc3NldCgkcmVzcG9uc2UtPmN1cnJlbmNpZXNfc2V0KSkNCgkJCQkJew0KCQkJCQkJJGN1cnJlbmNpZXMgPSAkdGhpcy0+Z2V0Q3VycmVuY2llcygpOw0KCQkJCQl9DQoJCQkJCS8vIGNoZWNrIGlmIHdlIHN1Y2NlZWRlZA0KCQkJCQlpZiAoJHRoaXMtPmNoZWNrT2JqZWN0KCRjdXJyZW5jaWVzKSAmJiAkY3VycmVuY2llcy0+cmVzdWx0ID09PSAnc3VjY2VzcycpDQoJCQkJCXsNCgkJCQkJCSRyZXNwb25zZS0+Y3VycmVuY2llc19zZXQgPSB0cnVlOw0KCQkJCQkJJHJlc3BvbnNlLT5jdXJyZW5jaWVzID0gJGN1cnJlbmNpZXMtPmN1cnJlbmNpZXMtPmN1cnJlbmN5Ow0KCQkJCQkJLy8gbm93IGdldCB0aGUgYWN0aXZlIGN1cnJlbmN5IFVSTCBpZA0KCQkJCQkJZm9yZWFjaCAoJHJlc3BvbnNlLT5jdXJyZW5jaWVzIGFzICRfY3VycmVuY3kpDQoJCQkJCQl7DQoJCQkJCQkJaWYgKCRjdXJyZW5jeSA9PT0gJF9jdXJyZW5jeS0+Y29kZSkNCgkJCQkJCQl7DQoJCQkJCQkJCSRyZXNwb25zZS0+Y3VycmVuY3lfaWQgPSAkX2N1cnJlbmN5LT5pZDsNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZQ0KCQkJCQl7DQoJCQkJCQkkcmVzcG9uc2UtPmN1cnJlbmNpZXNfc2V0ID0gZmFsc2U7DQoJCQkJCX0NCgkJCQkJLy8gbWF0aCBmb3IgbW9udGhseSBiaWxsaW5nIG1hcHBpbmcNCgkJCQkJJGRpdmlkZSA9IGFycmF5KCdxdWFydGVybHknID0+IDMsICdzZW1pYW5udWFsbHknID0+IDYsICdhbm51YWxseScgPT4gMTIsICdiaWVubmlhbGx5JyA9PiAyNCwgJ3RyaWVubmlhbGx5JyA9PiAzNik7DQoJCQkJCS8vIHNldCB3aG1jcyBzZXR0aW5ncyB0YWdzDQoJCQkJCSR3aG1jc19vcGVuID0gJzwnIC4gJHRoaXMtPl93aG1jczsNCgkJCQkJLy8gc2V0IGNsb3NpbmcgdGFnDQoJCQkJCSR3aG1jc19jbG9zaW5nID0gJzwvJyAuICR0aGlzLT5fd2htY3MgLiAnPic7DQoJCQkJCS8vIHJlbW92ZSB0aGVzZSBmcm9tIGRlc2NyaXB0aW9uDQoJCQkJCSRyZW1vdmVfZGVzYyA9IGFycmF5KCc8IS0tLS0tLS0nID0+ICcnLCAnLS0tLS0tLT4nID0+ICcnKTsNCgkJCQkJJGZpeF91cmwgPSBhcnJheSgnaHR0cHMtLy8nID0+ICdodHRwczovLycsICdodHRwLS8vJyA9PiAnaHR0cDovLycpOw0KCQkJCQlmb3JlYWNoICgkcmVzcG9uc2UtPnByb2R1Y3RzLT5wcm9kdWN0IGFzICRwcm9kdWN0KQ0KCQkJCQl7DQoJCQkJCQkvLyB3ZSBzZXQgdGhlIG1haW4gVVJMDQoJCQkJCQlpZiAoaXNzZXQoJHJlc3BvbnNlLT5jdXJyZW5jeV9pZCkpDQoJCQkJCQl7DQoJCQkJCQkJJHByb2R1Y3QtPnVybCA9ICR0aGlzLT5zaG9wdXJsIC4gJyZwaWQ9JyAuICRwcm9kdWN0LT5waWQgLiAnJmN1cnJlbmN5PScgLiAkcmVzcG9uc2UtPmN1cnJlbmN5X2lkOw0KCQkJCQkJfQ0KCQkJCQkJZWxzZQ0KCQkJCQkJew0KCQkJCQkJCSRwcm9kdWN0LT51cmwgPSAkdGhpcy0+c2hvcHVybCAuICcmcGlkPScgLiAkcHJvZHVjdC0+cGlkOw0KCQkJCQkJfQ0KCQkJCQkJLy8gd2Ugc2V0IHRoZSBhIHVybCBmb3IgZWFjaCBjdXJyZW5jeQ0KCQkJCQkJJHByb2R1Y3QtPnVybHMgPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkkcHJvZHVjdC0+bW9udGhseSA9IG5ldyBcc3RkQ2xhc3MoKTsNCgkJCQkJCWZvcmVhY2ggKCRyZXNwb25zZS0+Y3VycmVuY2llcyBhcyAkX2N1cnJlbmN5KQ0KCQkJCQkJew0KCQkJCQkJCS8vIG9ubHkgYWRkIGlmIHdlIGhhdmUgYSBwcmljZSBmb3IgdGhhdCBjdXJyZW5jeQ0KCQkJCQkJCWlmIChpc3NldCgkcHJvZHVjdC0+cHJpY2luZy0+eyRfY3VycmVuY3ktPmNvZGV9KSAgJiYgJHRoaXMtPmNoZWNrT2JqZWN0KCRwcm9kdWN0LT5wcmljaW5nLT57JF9jdXJyZW5jeS0+Y29kZX0pKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gY3VycmVuY3kgJiBiaWxsaW5nY3ljbGUgdXJsDQoJCQkJCQkJCSRwcm9kdWN0LT51cmxzLT57JF9jdXJyZW5jeS0+Y29kZX0gPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkJCSRwcm9kdWN0LT5tb250aGx5LT57JF9jdXJyZW5jeS0+Y29kZX0gPSBuZXcgXHN0ZENsYXNzKCk7DQoJCQkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0LT5wcmljaW5nLT57JF9jdXJyZW5jeS0+Y29kZX0gYXMgJGJpbGxpbmdjeWNsZSA9PiAkY29zdCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJaWYgKGlzX251bWVyaWMoJGNvc3QpICYmICcwLjAwJyAhPT0gJGNvc3QgJiYgKCdtb250aGx5JyA9PT0gJGJpbGxpbmdjeWNsZSB8fCBpc3NldCgkZGl2aWRlWyRiaWxsaW5nY3ljbGVdKSkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJHByb2R1Y3QtPnVybHMtPnskX2N1cnJlbmN5LT5jb2RlfS0+eyRiaWxsaW5nY3ljbGV9ID0gJHRoaXMtPnNob3B1cmwgLiAnJnBpZD0nIC4gJHByb2R1Y3QtPnBpZCAuICcmY3VycmVuY3k9JyAuICRfY3VycmVuY3ktPmlkIC4gJyZiaWxsaW5nY3ljbGU9JyAuICRiaWxsaW5nY3ljbGU7DQoJCQkJCQkJCQkJLy8gc2V0IHRoZSBtb250aGx5IHByaWNlDQoJCQkJCQkJCQkJaWYgKGlzc2V0KCRkaXZpZGVbJGJpbGxpbmdjeWNsZV0pKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHByb2R1Y3QtPm1vbnRobHktPnskX2N1cnJlbmN5LT5jb2RlfS0+eyRiaWxsaW5nY3ljbGV9ID0gJHRoaXMtPmJjbWF0aCgnZGl2JywgJGNvc3QsICRkaXZpZGVbJGJpbGxpbmdjeWNsZV0sIDIpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlaWYgKCdtb250aGx5JyA9PT0gJGJpbGxpbmdjeWNsZSkNCgkJCQkJCQkJCQl7DQoJCQkJCQkJCQkJCSRwcm9kdWN0LT5tb250aGx5LT57JF9jdXJyZW5jeS0+Y29kZX0tPnskYmlsbGluZ2N5Y2xlfSA9ICRjb3N0Ow0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIHNldCB0aGUgZ2xvYmFsIGF2YWlsYWJsZSBwYXltZW50IG9wdGlvbnMgKHllcyB0aGUgZmlyc3QgcHJvZHVjdCBzZXRzIHRoZSBzdGFnZSkNCgkJCQkJCWlmICghaXNzZXQoJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnNfc2V0KSAmJiAncmVjdXJyaW5nJyA9PT0gJHByb2R1Y3QtPnBheXR5cGUgJiYgaXNzZXQoJHByb2R1Y3QtPnByaWNpbmctPiRjdXJyZW5jeSkpDQoJCQkJCQl7DQoJCQkJCQkJJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnMgPSBhcnJheSgpOw0KCQkJCQkJCWZvcmVhY2ggKCRwcm9kdWN0LT5wcmljaW5nLT4kY3VycmVuY3kgYXMgJGsgPT4gJHYpDQoJCQkJCQkJew0KCQkJCQkJCQlpZiAoaXNfbnVtZXJpYygkdikgJiYgJzAuMDAnICE9PSAkdiAmJiBzdHJwb3MoJGssICdzZXR1cGZlZScpID09PSBmYWxzZSkNCgkJCQkJCQkJew0KCQkJCQkJCQkJJHJlc3BvbnNlLT5wYXltZW50X29wdGlvbnNbXSA9ICRrOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCS8vIGNoZWNrIGlmIHdlIHN1Y2NlZWRlZA0KCQkJCQkJCWlmICgkdGhpcy0+Y2hlY2tBcnJheSgkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9ucykpDQoJCQkJCQkJew0KCQkJCQkJCQkkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9uc19zZXQgPSB0cnVlOw0KCQkJCQkJCQkkcmVzcG9uc2UtPnBheW1lbnRfb3B0aW9uID0gJ21vbnRobHknOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCS8vIG5vdyBleHRyYWN0IHRoZSBzZXR0aW5ncw0KCQkJCQkJJHNldHRpbmdzID0gJHRoaXMtPmdldEFsbEJldHdlZW4oJHByb2R1Y3QtPmRlc2NyaXB0aW9uLCAkd2htY3Nfb3BlbiwgJHdobWNzX2Nsb3NpbmcpOw0KCQkJCQkJaWYgKCR0aGlzLT5jaGVja0FycmF5KCRzZXR0aW5ncykpDQoJCQkJCQl7DQoJCQkJCQkJZm9yZWFjaCAoJHNldHRpbmdzIGFzICRzZXR0aW5nKQ0KCQkJCQkJCXsNCgkJCQkJCQkJLy8gbWFrZSBzdXJlIHRvIHJlbW92ZSB0aGVzZSBzZXR0aW5ncw0KCQkJCQkJCQkkcmVtb3ZlX2Rlc2NbJHdobWNzX29wZW4gLiAkc2V0dGluZyAuICR3aG1jc19jbG9zaW5nXSA9ICcnOw0KCQkJCQkJCQkvLyBvbmx5IGNvbnRpbnVlIGlmIHNldCBjb3JyZWN0bHkNCgkJCQkJCQkJaWYgKHN0cnBvcygkc2V0dGluZywgJz4nKSAhPT0gZmFsc2UpDQoJCQkJCQkJCXsNCgkJCQkJCQkJCSRzZXR0aW5nID0gdHJpbShleHBsb2RlKCc+JywgdHJpbSgkc2V0dGluZykpWzBdKTsNCgkJCQkJCQkJCWlmIChzdHJwb3MoJHNldHRpbmcsICc9JykgIT09IGZhbHNlKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRzZXR0aW5nID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnPScsICRzZXR0aW5nKSk7DQoJCQkJCQkJCQkJJHNfa2V5ID0gYXJyYXlfc2hpZnQoJHNldHRpbmcpOw0KCQkJCQkJCQkJCS8vIGNvbGxhcHNlIHRvIHN0cmluZyBhZ2Fpbg0KCQkJCQkJCQkJCSRzZXR0aW5nID0gaW1wbG9kZSgnJywgJHNldHRpbmcpOw0KCQkJCQkJCQkJCWlmIChzdHJwb3MoJHNldHRpbmcsICd8JykgIT09IGZhbHNlKQ0KCQkJCQkJCQkJCXsNCgkJCQkJCQkJCQkJJHByb2R1Y3QtPnskc19rZXl9ID0gYXJyYXlfbWFwKGZ1bmN0aW9uKCR2KSB1c2UoJGZpeF91cmwpew0KCQkJCQkJCQkJCQkJcmV0dXJuIHRyaW0oc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkZml4X3VybCksIGFycmF5X3ZhbHVlcygkZml4X3VybCksICR2KSk7DQoJCQkJCQkJCQkJCX0sIGV4cGxvZGUoJ3wnLCAkc2V0dGluZykpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQllbHNlDQoJCQkJCQkJCQkJew0KCQkJCQkJCQkJCQkkcHJvZHVjdC0+eyRzX2tleX0gPSBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCRmaXhfdXJsKSwgYXJyYXlfdmFsdWVzKCRmaXhfdXJsKSwgJHNldHRpbmcpOw0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWVsc2VpZiAoJHRoaXMtPmNoZWNrU3RyaW5nKCRzZXR0aW5nKSkNCgkJCQkJCQkJCXsNCgkJCQkJCQkJCQkkcHJvZHVjdC0+eyRzZXR0aW5nfSA9IHRydWU7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCQkvLyB1cGRhdGUgdGhlIGRlc2NyaXB0aW9ucw0KCQkJCQkJJHByb2R1Y3QtPmRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkcmVtb3ZlX2Rlc2MpLCBhcnJheV92YWx1ZXMoJHJlbW92ZV9kZXNjKSwgJHByb2R1Y3QtPmRlc2NyaXB0aW9uKTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkvLyBsb2FkIHRvIHBsdWdpbiBtZW1vcnkNCgkJCQkkdGhpcy0+cHJvZHVjdHNbJGtleV0gPSAkcmVzcG9uc2U7DQoJCQkJLy8gcmV0dXJuIG9iamVjdA0KCQkJCXJldHVybiAkdGhpcy0+cHJvZHVjdHNbJGtleV07DQoJCQl9DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCg0KCS8qKg0KCSAqIFRoaXMgZ2V0cyB0aGUgY3VycmVuY2llcyANCgkgKg0KCSAqIEByZXR1cm4gIG9iamVjdHxmYWxzZQ0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEN1cnJlbmNpZXMoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jaGVja09iamVjdCgkdGhpcy0+Y3VycmVuY2llcykpDQoJCXsNCgkJCXJldHVybiAkdGhpcy0+Y3VycmVuY2llczsNCgkJfQ0KCQkvLyB3ZSBtYWtlIGEgbmV3IGNhbGwNCgkJJGNoID0gY3VybF9pbml0KCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR0aGlzLT51cmwgLiAnL2luY2x1ZGVzL2FwaS5waHAnKTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIDEpOw0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywNCgkJCWh0dHBfYnVpbGRfcXVlcnkoDQoJCQkJYXJyYXkoDQoJCQkJCSdhY3Rpb24nID0+ICdHZXRDdXJyZW5jaWVzJywNCgkJCQkJJ3VzZXJuYW1lJyA9PiAkdGhpcy0+dXNlcm5hbWUsDQoJCQkJCSdwYXNzd29yZCcgPT4gJHRoaXMtPnBhc3N3b3JkLA0KCQkJCQkncmVzcG9uc2V0eXBlJyA9PiAnanNvbicNCgkJCQkpDQoJCQkpDQoJCSk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQoJCSRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOw0KCQljdXJsX2Nsb3NlKCRjaCk7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGEganNvbiBzdHJpbmcNCgkJaWYgKCR0aGlzLT5jaGVja0pzb24oJHJlc3BvbnNlKSkNCgkJew0KCQkJLy8gbG9hZCB0byBwbHVnaW4gbWVtb3J5DQoJCQkkdGhpcy0+Y3VycmVuY2llcyA9IGpzb25fZGVjb2RlKCRyZXNwb25zZSk7DQoJCQkvLyByZXR1cm4gb2JqZWN0DQoJCQlyZXR1cm4gJHRoaXMtPmN1cnJlbmNpZXM7DQoJCX0NCgkJcmV0dXJuIGZhbHNlOw0KCX0NCltDVVNUT01DT0RFPXBsdWdpbkhlbHBlcnNdDQpbQ1VTVE9NQ09ERT10aGlzYmNtYXRoXQ==', 'WHMCSProducts', '', '', '', '', '', '', '', '1.0.3', '{\"property_selection0\":{\"property\":\"7\"},\"property_selection1\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'WHMCS Products', '', 1, '', '', 1, '2019-11-17 01:24:51', '2024-08-06 20:54:49', 85, '', 5),
(10, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to add packaging (bundling of extentions) to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '63eb11cc-41ba-4c2f-82b3-94487b0caa12', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjs=', 11, '{}', '', '[[[Component]]] Extention Packaging', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb21wb25lbnRdXV0gaXMgaW5zdGFsbGVkDQoJCQkkcGF0aFRvQ29yZSA9IEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29tcG9uZW50X2Fjcm9ueW1dXV0gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgZnJvbSA8YSBocmVmPSJbW1tnZXRfY29tcG9uZW50X2xpbmtdXV0iIHRhcmdldD0iX2JsYW5rIj5bW1tjb21wb25lbnRfbGlua19uYW1lXV1dPC9hPi4nLCAnZXJyb3InKTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9', '', '', '', '1.0.2', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Extention Packaging', '', 1, '', '', 1, '2020-03-19 12:10:12', '2024-08-06 20:54:54', 8, '', 2),
(11, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.language_options\",\"fieldset\":\"language_options\",\"label\":\"Language Options\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2740\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2746\",\"custom_value\":\"1\"},\"fields3\":{\"field\":\"2745\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2742\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2741\",\"custom_value\":\"\"}}}}', '7f2c7689-0f46-41c8-ba69-e33cd92cb20f', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7DQp1c2UgSm9vbWxhXENNU1xGb3JtXEZvcm07', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5qb29tbGFfY29tcG9uZW50JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnam9vbWxhX2NvbXBvbmVudCcpOw0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX0NCg==', '[[[Component]]] Language Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Tabs', '', 1, '', '', 1, '2020-03-19 15:27:41', '2024-08-06 20:55:08', 28, '', 2),
(12, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'The [[[core]]] branding override.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Company Details\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"681\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"1310\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"280\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"691\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"1169\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"1160\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"1156\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"1005\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"1006\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"1004\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"1008\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"1007\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2392\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"1311\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"1313\",\"custom_value\":\"\"}}}}', '32674996-ce5c-452a-9810-af715d5170e3', '', 11, '{}', 'LyoqDQoJICogQWZmZWN0cyBjb25zdHJ1Y3RvciBiZWhhdmlvci4gSWYgdHJ1ZSwgbGFuZ3VhZ2UgZmlsZXMgd2lsbCBiZSBsb2FkZWQgYXV0b21hdGljYWxseS4NCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIG9uR2V0Q29tcGFueURldGFpbHMuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25HZXRDb21wYW55RGV0YWlscygkZGV0YWlscywgJGYsICRiKQ0KCXsNCgkJLy8gYWRkIHlvdXIgY29kZSBoZXJlDQoJCXZhcl9kdW1wKCRkZXRhaWxzKTtqZXhpdCgpOw0KCX0NCg0KCS8qKg0KCSAqIG9uR2V0VGVtcGxhdGUuDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25HZXRUZW1wbGF0ZSgkY29udGV4dCwgJGRldGFpbHMpDQoJew0KCQkvLyBhZGQgeW91ciBjb2RlIGhlcmUNCgkJdmFyX2R1bXAoJGNvbnRleHQsICRkZXRhaWxzKTtqZXhpdCgpOw0KCX0=', '[[[core]]]BrandingOverride', '', '', '', 'CQkJLy8gY2hlY2sgdGhhdCBbW1tjb3JlXV1dIGlzIGluc3RhbGxlZA0KCQkJJHBhdGhUb0NvcmUgPSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9bW1tjb3JlXV1dL2hlbHBlcnMvW1tbY29yZV1dXS5waHAnOw0KCQkJaWYgKCFKRmlsZTo6ZXhpc3RzKCRwYXRoVG9Db3JlKSkNCgkJCXsNCgkJCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnW1tbY29yZV1dXSBtdXN0IGZpcnN0IGJlIGluc3RhbGxlZCBmcm9tIDxhIGhyZWY9IltbW2dldF9jb21wb25lbnRfbGlua11dXSIgdGFyZ2V0PSJfYmxhbmsiPltbW2NvbXBvbmVudF9saW5rX25hbWVdXV08L2E+LicsICdlcnJvcicpOw0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0=', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'CoreBrandingOverride', '', 1, '', '', 1, '2020-03-23 02:18:28', '2024-08-06 20:55:13', 16, '', 6),
(13, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom ordering to fields in the JCB list views.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.fieldordering\",\"fieldset\":\"fieldordering\",\"label\":\"Field Ordering\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2751\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2753\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2749\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2754\",\"custom_value\":\"\"}}}}', '5b21d4c5-fe7c-4d71-8eb9-1e6be3e2f662', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX0=', '[[[Component]]] Field Ordering Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.0.3', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Tabs', '', 1, '', '', 1, '2020-05-20 12:52:37', '2024-08-06 20:55:17', 25, '', 2),
(14, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the ordring for your component views during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your admin views where you would like to use Field Ordering.', '{}', '752b8c09-8848-4519-8c94-3e61c735935f', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcRmFjdG9yeSBhcyBDRmFjdG9yeTs=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJHZpZXctPnBhcmFtcyA9IChpc3NldCgkdmlldy0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+cGFyYW1zLCB0cnVlKSA6ICR2aWV3LT5wYXJhbXM7DQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSkpDQoJCXsNCgkJCWlmICgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9hZG1pbl9vcmRlcmluZyddID09IDENCgkJCQl8fCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9saW5rZWRfb3JkZXJpbmcnXSA9PSAxKQ0KCQkJew0KCQkJCS8vIHNldHVwIHRoZSB2aWV3IGtleSBuYW1lDQoJCQkJJG5hbWVfbGlzdCAgID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBsb2FkIHRoZSBhZG1pbiB2aWV3IGRldGFpbHMNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5WaWV3cy5EZWZhdWx0Lk9yZGVyaW5nJyktPnNldCgkbmFtZV9saXN0LCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pOw0KCQkJfQ0KCQl9DQoJfQ==', '[[[Component]]] Field Ordering Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDBd', '', '', '', '1.1.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Compiler', '', 1, '', '', 1, '2020-05-21 12:55:05', '2024-08-06 20:55:23', 22, '', 3),
(15, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the custom headers for your classes during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your code where you would like to set Custom Headers.', '{}', 'dff42201-b4d4-442d-85d4-aa3ca3104e37', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTsNCnVzZSBWRE1cSm9vbWxhXENvbXBvbmVudGJ1aWxkZXJcQ29tcGlsZXJcRmFjdG9yeSBhcyBDRmFjdG9yeTs=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEdsb2JhbCBzd2l0Y2ggdG8gc2VlIGlmIGEgZmlsZSBoYXMgY3VzdG9tIGhlYWRlcnMuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsb2FkSGVhZGVycyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIGFjdGl2ZSBoZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCAkYWN0aXZlSGVhZGVycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgY29tcGlsZXIgcGxhY2Vob2xkZXJzIHZhbHVlcw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgJHBsYWNlaG9sZGVycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgcG93ZXJzIHRvIGluY2x1ZGUgaW4gcHJvamVjdA0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgJGxpbmtlZFBvd2VycyA9IGFycmF5KCk7DQoNCgkvKioNCgkgKiBUaGUgVGFyZ2V0cw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjgNCgkgKi8NCglwcm90ZWN0ZWQgJHRhcmdldHMgPSBhcnJheSgNCgkJJ2FkbWluX3ZpZXdfaGVhZGVycycgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfYWRtaW5fdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfYWRtaW5fdmlld19odG1sJyAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmFkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX3NpbmdsZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfaW1wb3J0X2N1c3RvbV9jb250cm9sbGVyJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdpbXBvcnRfY3VzdG9tX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2ltcG9ydC5jdXN0b20uY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9pbXBvcnRfY3VzdG9tX21vZGVsJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdpbXBvcnRfY3VzdG9tX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdpbXBvcnQuY3VzdG9tLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKQ0KCQkJKSwNCgkJJ3NpdGVfdmlld19oZWFkZXJzJyAgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfc2l0ZV92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LnNpdGUubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2N1c3RvbV9hZG1pbl92aWV3X2hlYWRlcnMnICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2R5bmFtaWNfZ2V0X2hlYWRlcnMnICAgICAgICAgICA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3LmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlldycgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3LmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19tb2RlbCcgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9hamF4X21vZGVsJyAgICAgICAgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpDQoJCQkpLA0KCQknY29tcG9uZW50X2Rhc2hib2FyZF9oZWFkZXJzJyA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9kYXNoYm9hcmRfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX3ZpZXcnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9kYXNoYm9hcmRfdmlld19odG1sJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLnZpZXcuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9kYXNoYm9hcmRfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnZGFzaGJvYXJkX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2Rhc2hib2FyZC5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdkYXNoYm9hcmQnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LmFkbWluLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdqb29tbGFfY29tcG9uZW50X2hlYWRlcnMnICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2FkbWluX2NvbXBvbmVudCcgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fY29tcG9uZW50JywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi5jb21wb25lbnQnLA0KCQkJCQkndmlldycgICAgPT4gJ2FkbWluJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2NvbXBvbmVudCcgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfY29tcG9uZW50JywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmNvbXBvbmVudCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnc2l0ZScNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5faGVscGVyJyAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl9oZWxwZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLmhlbHBlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWRtaW4nDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfaGVscGVyJyAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV9oZWxwZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUuaGVscGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdzaXRlJw0KCQkJCSkNCgkJCSkNCgkpOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkdmlldy0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQWRtaW4gVmlld3MNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCR2aWV3LT5wYXJhbXMsICR2aWV3LCAnYWRtaW5fdmlld19oZWFkZXJzJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgTW9kZWwgQ3VzdG9tIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4yDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZU1vZGVsQ3VzdG9tVmlld0RhdGEoJiR2aWV3LCAmJGlkLCAmJHRhYmxlKQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXMpKQ0KCQl7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBTaXRlIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ3NpdGVfdmlld19oZWFkZXJzJyk7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBDdXN0b20gQWRtaW4gVmlld3MNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCR2aWV3LT5wYXJhbXMsICR2aWV3LCAnY3VzdG9tX2FkbWluX3ZpZXdfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIER5bmFtaWMgR2V0IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuMTANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxEeW5hbWljR2V0RGF0YSgmJGR5bmFtaWNHZXQsICYkaWQsICYkY29kZSwgJiRhcmVhKQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCRkeW5hbWljR2V0LT5wYXJhbXMpKQ0KCQl7DQoJCQkvLyBhZGQgdGhlIGhlYWRlcnMgZm9yIHRoZSBTaXRlIFZpZXdzDQoJCQkkdGhpcy0+c2V0RHluYW1pY0hlYWRlcnMoJGR5bmFtaWNHZXQtPnBhcmFtcywgJGNvZGUsICdkeW5hbWljX2dldF9oZWFkZXJzJyk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuNA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBjaGVjayB0aGF0IHRoZSBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgSm9vbWxhIENvbXBvbmVudA0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJGNvbXBvbmVudC0+cGFyYW1zLCAkY29tcG9uZW50LCAnam9vbWxhX2NvbXBvbmVudF9oZWFkZXJzJyk7DQoJCX0NCgkJLy8gY2hlY2sgdGhhdCB0aGUgZGFzaGJvYXJkIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkY29tcG9uZW50LT5kYXNoYm9hcmRfcGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQ29tcG9uZW50IERhc2hib2FyZA0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJGNvbXBvbmVudC0+ZGFzaGJvYXJkX3BhcmFtcywgJGNvbXBvbmVudCwgJ2NvbXBvbmVudF9kYXNoYm9hcmRfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gc2V0IENsYXNzIEhlYWRlcl0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfc2V0Q2xhc3NIZWFkZXIoJiRldmVudF9jb250ZXh0LCAmJHZpZXdfbmFtZSwgJiRoZWFkZXJzKQ0KCXsNCgkJaWYgKCR0aGlzLT5sb2FkSGVhZGVycyAmJiBpc3NldCgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXSkNCgkJCSYmIGlzc2V0KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRldmVudF9jb250ZXh0XSkNCgkJCSYmIGlzX2FycmF5KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRldmVudF9jb250ZXh0XSkpDQoJCXsNCgkJCS8vIHdvcmsgd2l0aCB0aGUgaGVhZGVyIHZhbHVlcyBhcyBrZXlzDQoJCQkkX2hlYWRlcnMgPSBhcnJheV9mbGlwKCRoZWFkZXJzKTsNCg0KCQkJLy8gbmV3IGhlYWRlcnMNCgkJCSRuZXcgPSAkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF07DQoNCgkJCS8vIG5vdyBhZGQgdGhlIG5ldyBoZWFkZXJzDQoJCQlmb3JlYWNoICgkbmV3IGFzICRuID0+ICRoZWFkZXIpDQoJCQl7DQoJCQkJLy8gaWYgYW4gZW1wdHkgbGluZSBpcyBmb3VuZCBqdXN0IHNraXAgaXQgDQoJCQkJLy8gd2UgY2hlY2sgaWYgdGhpcyBoZWFkZXIgaXMgYWxyZWFkeSBzZXQNCgkJCQlpZiAoZW1wdHkoJGhlYWRlcikgfHwgaXNzZXQoJF9oZWFkZXJzWyRoZWFkZXJdKSkNCgkJCQl7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQkkaGVhZGVyc1tdID0gJGhlYWRlcjsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBHZXQgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuNg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGdldCBwbGFjZWhvbGRlcnMgZnJvbSB0aGUgY29tcGlsZXINCgkJJHRoaXMtPnBsYWNlaG9sZGVycyA9IENGYWN0b3J5OjpfKCdDb21wb25lbnQuUGxhY2Vob2xkZXInKS0+Z2V0KCk7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGFkZCB0aGUgcG93ZXJzIHRvIHRoZSBjb21wb25lbnQNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5saW5rZWRQb3dlcnMsIHRydWUpKQ0KCQl7DQoJCQlDRmFjdG9yeTo6XygnUG93ZXInKS0+bG9hZCgkdGhpcy0+bGlua2VkUG93ZXJzKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIHNldCB0aGUgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjgNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0SGVhZGVycygmJHBhcmFtcywgJiRvYmosICRrZXkpDQoJew0KCQkvLyBhZGQgdGhlIGhlYWRlcnMNCgkJJHBhcmFtcyA9IChTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zKSkgPyBqc29uX2RlY29kZSgkcGFyYW1zLCB0cnVlKSA6ICRwYXJhbXM7DQoJCS8vIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBrZXlzIHZhbHVlcyBpbiB0aGUgcGFyYW1zIGFyZWENCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpICYmIGlzc2V0KCRwYXJhbXNbJGtleV0pDQoJCQkmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWyRrZXldKSkNCgkJew0KCQkJZm9yZWFjaCAoJHRoaXMtPnRhcmdldHNbJGtleV0gYXMgJHRhcmdldCA9PiAkZXZlbnQpDQoJCQl7DQoJCQkJaWYgKGlzc2V0KCRwYXJhbXNbJGtleV1bJHRhcmdldF0pDQoJCQkJCSYmICRwYXJhbXNbJGtleV1bJHRhcmdldF0gPT0gMSkNCgkJCQl7DQoJCQkJCS8vIGdldCB0aGUgaGVhZGVyIHN0cmluZyBpZiBzZXQNCgkJCQkJJHRoaXMtPmdldEhlYWRlcnMoDQoJCQkJCQkkcGFyYW1zWyRrZXldLA0KCQkJCQkJJGV2ZW50LA0KCQkJCQkJJHRoaXMtPmdldFZpZXdOYW1lKA0KCQkJCQkJCSRvYmosDQoJCQkJCQkJJGV2ZW50Wyd2aWV3J10NCgkJCQkJCSkNCgkJCQkJKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBzZXQgdGhlIGR5bmFtaWMgZ2V0IGhlYWRlcnMNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC4xMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXREeW5hbWljSGVhZGVycygkcGFyYW1zLCAkY29kZSwgJGtleSkNCgl7DQoJCS8vIGFkZCB0aGUgaGVhZGVycw0KCQkkcGFyYW1zID0gKFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpKSA/IGpzb25fZGVjb2RlKCRwYXJhbXMsIHRydWUpIDogJHBhcmFtczsNCgkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGtleXMgdmFsdWVzIGluIHRoZSBwYXJhbXMgYXJlYQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykgJiYgaXNzZXQoJHBhcmFtc1ska2V5XSkNCgkJCSYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJGtleV0pKQ0KCQl7DQoJCQlmb3JlYWNoICgkdGhpcy0+dGFyZ2V0c1ska2V5XSBhcyAkdGFyZ2V0ID0+ICRldmVudCkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJHBhcmFtc1ska2V5XVskdGFyZ2V0XSkNCgkJCQkJJiYgJHBhcmFtc1ska2V5XVskdGFyZ2V0XSA9PSAxKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBoZWFkZXIgc3RyaW5nIGlmIHNldA0KCQkJCQkkdGhpcy0+Z2V0SGVhZGVycygNCgkJCQkJCSRwYXJhbXNbJGtleV0sDQoJCQkJCQkkZXZlbnQsDQoJCQkJCQkkY29kZQ0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhlYWRlcnMoJiRwYXJhbXMsICYkZ2V0LCAkdmlld19uYW1lKQ0KCXsNCgkJLy8gd2UgZmlyc3QgY2hlY2sgaWYgdGhlIHZhbHVlIGlzIHNldA0KCQlpZiAoaXNzZXQoJHBhcmFtc1skZ2V0WydmaWVsZCddXSkgfHwgaXNzZXQoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSkNCgkJew0KCQkJLy8gc3RhcnQgbGl0dGxlIGhlYWRlcnMgYnVja2V0DQoJCQkkaGVhZGVycyA9IFtdOw0KDQoJCQkvLyBsb2FkIHRoZSBoZWFkZXJzIGlmIHBvd2VyDQoJCQlpZiAoaXNzZXQoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0sIHRydWUpDQoJCQkJJiYgKCRwb3dlcnMgPSAkdGhpcy0+Z2V0UG93ZXJzKCRwYXJhbXNbJ3Bvd2VyXycgLiAkZ2V0WydmaWVsZCddXSkpICE9PSBudWxsKQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRwb3dlcnMgYXMgJHBvd2VyKQ0KCQkJCXsNCgkJCQkJJHBvd2VyID0gdHJpbSgkcG93ZXIpOw0KCQkJCQkkaGVhZGVyc1skcG93ZXJdID0gJHBvd2VyOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gbG9hZCB0aGUgaGVhZGVycyBpZiB0ZXh0DQoJCQlpZiAoaXNzZXQoJHBhcmFtc1skZ2V0WydmaWVsZCddXSkgJiYgU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHBhcmFtc1skZ2V0WydmaWVsZCddXSkpDQoJCQl7DQoJCQkJaWYgKCgkX2hlYWRlcnMgPSBleHBsb2RlKFBIUF9FT0wsICRwYXJhbXNbJGdldFsnZmllbGQnXV0pKSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRfaGVhZGVycyBhcyAkaGVhZGVyKQ0KCQkJCQl7DQoJCQkJCQkkaGVhZGVyID0gdHJpbSgkaGVhZGVyKTsNCgkJCQkJCWlmIChlbXB0eSgkaGVhZGVyKSkNCgkJCQkJCXsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0NCgkJCQkJCSRoZWFkZXJzWyRoZWFkZXJdID0gJGhlYWRlcjsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gY2hlY2sgaWYgd2UgZm91bmQgc29tZSBoZWFkZXIgdmFsdWVzDQoJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGhlYWRlcnMsIHRydWUpKQ0KCQkJew0KCQkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBoZWFkZXJzDQoJCQkJJHRoaXMtPmxvYWRIZWFkZXJzID0gdHJ1ZTsNCgkJCQkvLyBjaGVjayBpZiB0aGlzIGFjdGl2ZSBoZWFkZXIgaXMgYWxyZWFkeSBzZXQNCgkJCQlpZiAoIWlzc2V0KCR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRnZXRbJ2NvbnRleHQnXV0pKQ0KCQkJCXsNCgkJCQkJLy8gc3RhcnQgdGhlIGFjdGl2ZSBoZWFkZXINCgkJCQkJJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGdldFsnY29udGV4dCddXSA9IFtdOw0KCQkJCX0NCgkJCQkvLyBsb2FkIHRoZSBmb3VuZCBoZWFkZXJzIGFuZCBhdm9pZCBhZGRpbmcgdGhlIHNhbWUgaGVhZGVyIHR3aWNlDQoJCQkJZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikNCgkJCQl7DQoJCQkJCSRoZWFkZXIgPSB0cmltKCRoZWFkZXIpOw0KCQkJCQkkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZ2V0Wydjb250ZXh0J11dWyRoZWFkZXJdID0gJGhlYWRlcjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHZpZXcgbmFtZQ0KCSAqDQoJICogQHJldHVybiAgc3RyaW5nDQoJICoNCgkgKiBAc2luY2UgICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3TmFtZSgmJHZpZXcsICYkZ2V0KQ0KCXsNCgkJaWYgKCRnZXQgPT09ICdzaXRlJyB8fCAkZ2V0ID09PSAnYWRtaW4nIHx8ICRnZXQgPT09ICdhamF4JyB8fCAkZ2V0ID09PSAnZGFzaGJvYXJkJykNCgkJew0KCQkJLy8gc3RhdGljIGtleSBuYW1lDQoJCQlyZXR1cm4gJGdldDsNCgkJfQ0KCQllbHNlaWYgKGlzc2V0KCR2aWV3LT57JGdldH0pKQ0KCQl7DQoJCQlyZXR1cm4gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgNCgkJCQkkdmlldy0+eyRnZXR9DQoJCQkpOw0KCQl9DQoJCXJldHVybiAnX2Vycm9yJzsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIHBvd2VycyBoZWFkZXIgdXNlIHN0cmluZ3MNCgkgKg0KCSAqIEByZXR1cm4gIGFycmF5fG51bGwNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFBvd2Vycygkcm93cyk6ID9hcnJheQ0KCXsNCgkJLy8gbG9hZCB0aGUgYWN0aXZlIHBvd2Vycw0KCQkkcG93ZXJzID0gYXJyYXlfZmlsdGVyKA0KCQkJLy8gZ2V0IHRoZSBwb3dlciBuYW1lc3BhY2UNCgkJCWFycmF5X21hcChmdW5jdGlvbiAoJHJvdykgew0KCQkJCWlmICgoJHBvd2VyID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRHVUlEKCRyb3dbJ3Bvd2VyJ10sICdwb3dlcicsIFsnYS5ndWlkJywgJ2EubmFtZXNwYWNlJ10pKSAhPT0gbnVsbCkNCgkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCX0NCgkJCQllbHNlaWYgKENGYWN0b3J5OjpfKCdTdXBlcnBvd2VyJyktPmxvYWQoJHJvd1sncG93ZXInXSwgIFsncmVtb3RlJ10pKQ0KCQkJCXsNCgkJCQkJaWYgKCgkcG93ZXIgPSBbW1tDb21wb25lbnRdXV1IZWxwZXI6OmdldEdVSUQoJHJvd1sncG93ZXInXSwgJ3Bvd2VyJywgWydhLmd1aWQnLCAnYS5uYW1lc3BhY2UnXSkpICE9PSBudWxsKQ0KCQkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0sICRyb3dzKSwNCgkJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSB2YWxpZCBwb3dlcnMNCgkJCWZ1bmN0aW9uICgkcm93KSB7DQoJCQkJcmV0dXJuIGlzX29iamVjdCgkcm93KSAmJiBpc3NldCgkcm93LT5ndWlkKTsNCgkJCX0NCgkJKTsNCgkJLy8gYWRkIHRvIGFjdGl2ZSBwb3dlcnMNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwb3dlcnMpKQ0KCQl7DQoJCQkvLyBjb252ZXJ0IHRoZSBkb3RzIHRvIG5hbWVzcGFjZQ0KCQkJcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoJHBvd2VyKSB7DQoJCQkJLy8gYWRkIHRvIGNvbXBpbGVyICh0byBidWlsZCkNCgkJCQlpZiAoJHBvd2VyLT5idWlsZCAhPSA2KQ0KCQkJCXsNCgkJCQkJLy8gc2VjdXJlIHRoYXQgYWx3YXlzIHdpbGwgcmVtYWluIGFsd2F5cyBldmVuIGlmIG9ubHkgc2V0IHRoYXQgd2F5IG9uY2UNCgkJCQkJaWYgKGVtcHR5KCR0aGlzLT5saW5rZWRQb3dlcnNbJHBvd2VyLT5ndWlkXSkgfHwgJHBvd2VyLT5idWlsZCA9PSAxKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+bGlua2VkUG93ZXJzWyRwb3dlci0+Z3VpZF0gPSAkcG93ZXItPmJ1aWxkOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGJ1aWxkIHRoZSBuYW1lc3BhY2UNCgkJCQkkbmFtZXNwYWNlID0gU3VwZXJfX19jZThjZjgzNF82YmFjXzQ0ZmJfOTQxY184NjFmN2UwNDZjYzBfX19Qb3dlcjo6c2FmZSgNCgkJCQkJc3RyX3JlcGxhY2UoDQoJCQkJCQlhcnJheV9rZXlzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJYXJyYXlfdmFsdWVzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJc3RyX3JlcGxhY2UoJy4nLCAnXFwnLCAkcG93ZXItPm5hbWVzcGFjZSkNCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gY2hlY2sgaWYgaXQgaGFzIGFuIEFTIG9wdGlvbg0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcG93ZXItPmFzKSAmJiAkcG93ZXItPmFzICE9PSAnZGVmYXVsdCcpDQoJCQkJew0KCQkJCQlyZXR1cm4gJ3VzZSAnIC4gJG5hbWVzcGFjZSAuICcgYXMgJyAuICRwb3dlci0+YXMgLiAnOyc7DQoJCQkJfQ0KCQkJCXJldHVybiAndXNlICcgLiAkbmFtZXNwYWNlIC4gJzsnOw0KCQkJfSwgJHBvd2Vycyk7DQoJCX0NCg0KCQlyZXR1cm4gbnVsbDsNCgl9DQo=', '[[[Component]]] Headers Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywxLDE4XQ==', '', '', '', '2.3.1', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Headers Compiler', '', 1, '', '', 1, '2020-05-24 23:04:17', '2024-08-06 20:55:26', 127, '', 3),
(16, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set admin class custom headers.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.admin_view_headers\",\"fieldset\":\"admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2849\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2846\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2969\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2983\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2985\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2968\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2886\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2884\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2995\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2850\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2845\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2967\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2844\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2847\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2966\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2984\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2986\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2965\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2885\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2883\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2996\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2851\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2848\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2964\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2895\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2896\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2970\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2987\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2988\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2952\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2897\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2898\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2999\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"3088\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"3089\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"3090\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"3091\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"3092\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"3093\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '9add2e9c-ec36-48ef-b8e5-939ade0149eb', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrYWRtaW5fdmlld10=', '[[[Component]]] Admin Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywxLDE4XQ==', '', '', '', '2.0.3', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Admin Headers Tabs', '', 1, '', '', 1, '2020-10-27 00:46:51', '2024-08-06 20:55:40', 64, '', 2),
(17, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set site class custom headers.', '{\"fields0\":{\"file\":\"site_view\",\"fields_name\":\"params.site_view_headers\",\"fieldset\":\"site_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'ee258df8-057b-4039-a60d-e5b97e6fa6f3', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrc2l0ZV92aWV3XQ==', '[[[Component]]] Site Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Site Headers Tabs', '', 1, '', '', 1, '2020-12-08 03:18:35', '2024-08-06 20:56:18', 36, '', 2),
(18, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom admin class custom headers.', '{\"fields0\":{\"file\":\"custom_admin_view\",\"fields_name\":\"params.custom_admin_view_headers\",\"fieldset\":\"custom_admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'b5e29027-f010-45ae-adb1-e8a1dde9a157', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrY3VzdG9tX2FkbWluX3ZpZXdd', '[[[Component]]] Custom Admin Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Custom Admin Headers Tabs', '', 1, '', '', 1, '2020-12-08 05:25:29', '2024-08-06 20:56:35', 38, '', 2),
(19, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component class custom headers.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.joomla_component_headers\",\"fieldset\":\"joomla_component_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2871\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2872\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2974\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2873\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2874\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2975\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2878\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2877\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2973\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2875\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2876\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2972\",\"custom_value\":\"\"}}}}', 'ce453c88-6f87-4739-9340-de0416066ff4', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMram9vbWxhX2NvbXBvbmVudF0=', '[[[Component]]] Component Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Headers Tabs', '', 1, '', '', 1, '2020-12-26 16:49:54', '2024-08-06 20:56:52', 28, '', 2),
(20, '', '', 1, '', 1, '', '', '', '', 1, '', '', '', 1, 'RSForm! Pro - Advance PHP', '{}', '693bcf07-6464-4bcd-9d32-2af49ebbca44', '', 8, '{}', 'CXByb3RlY3RlZCAkaGFzQWNjZXNzOw0KCXByb3RlY3RlZCAkVkRNX3Bvc3Q7DQoJcHJvdGVjdGVkICRWRE1fYWN0aXZlOw0KCXByb3RlY3RlZCAkVkRNX2NvZGU7DQoJcHJvdGVjdGVkICRWRE1fcnNmb3JtX2lkOw0KDQoJLyoqDQoJICogTG9hZCB0aGUgbGFuZ3VhZ2UgZmlsZSBvbiBpbnN0YW50aWF0aW9uLg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAzLjENCgkgKi8NCglwcm90ZWN0ZWQgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogQ29uc3RydWN0b3INCgkgKg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJiRzdWJqZWN0ICBUaGUgb2JqZWN0IHRvIG9ic2VydmUNCgkgKiBAcGFyYW0gICBhcnJheSAgICAkY29uZmlnICAgQW4gYXJyYXkgdGhhdCBob2xkcyB0aGUgcGx1Z2luIGNvbmZpZ3VyYXRpb24NCgkgKg0KCSAqIEBzaW5jZSAgIDEuNQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHN1YmplY3QsICRjb25maWcpDQoJew0KCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRzdWJqZWN0LCAkY29uZmlnKTsNCg0KCQkvLyBzZXQgYmFja2VuZCBhY2Nlc3MNCgkJJHRoaXMtPmhhc0FjY2VzcyA9ICR0aGlzLT5iYWNrZW5kQWNjZXNzKCk7DQoNCgkJLy8gc2V0IHRoZSB0YWJsZSBwYXRoDQoJCUpUYWJsZTo6YWRkSW5jbHVkZVBhdGgoSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fcnNmb3JtL3RhYmxlcycpOw0KCX0NCg0KCS8qKg0KCSAqICAgIC8vLy8vLyAgICBWYXN0IERldmVsb3BtZW50IE1ldGhvZCAgIFxcXFxcXA0KCSAqICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCgkgKiAgICMjIyMjIyMjIyMgICAgICAgQkFDSyBFTkQgICAgICAjIyMjIyMjIyMjIyMNCgkgKiAgICMjIyMjIyMjIyMgICAgRXZlbnQgVHJpZ2dlcnMgICAjIyMjIyMjIyMjIyMNCgkgKiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoJICoNCgkgKiovDQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gQmFjay1lbmQgW09uIEZvcm0gU2F2ZV0NCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gb3JtU2F2ZSgkZm9ybSkNCgl7DQoJCWlmICgkdGhpcy0+aGFzQWNjZXNzKQ0KCQl7DQoJCQkkYXBwICAgID0gRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKTsNCgkJCSRmb3JtSWQgPSAkYXBwLT5pbnB1dC0+cG9zdC0+Z2V0KCdmb3JtSWQnLCAwLCBpbnQpOw0KCQkJLy8gZ2V0IGFjdGl2ZSBzdGF0ZXMNCgkJCSRldmVudHMgICAgICAgID0gcmFuZ2UoMCwgMTApOw0KCQkJJGV2ZW50c19hY3RpdmUgPSBhcnJheSgpOw0KCQkJJGV2ZW50c19jb2RlICAgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGV2ZW50cyBhcyAkbnIpDQoJCQl7DQoJCQkJJGV2ZW50c19hY3RpdmVbJG5yXSA9ICRhcHAtPmlucHV0LT5wb3N0LT5nZXQoJ3JzZnBhZHZhbmNlcGhwX2FjdGl2ZV8nIC4gJG5yLCAwLCBJTlQpOw0KCQkJCWlmICgkZXZlbnRzX2FjdGl2ZVskbnJdICE9IDApDQoJCQkJew0KCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9IGJhc2U2NF9lbmNvZGUoJGFwcC0+aW5wdXQtPnBvc3QtPmdldCgncnNmcGFkdmFuY2VwaHBfY29kZV8nIC4gJG5yLCAnJywgUkFXKSk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQlpZiAoaXNfYXJyYXkoJGV2ZW50c19hY3RpdmUpICYmIGNvdW50KCRldmVudHNfYWN0aXZlKSkNCgkJCXsNCgkJCQkkZXZlbnRzX2FjdGl2ZSA9IGpzb25fZW5jb2RlKCRldmVudHNfYWN0aXZlKTsNCgkJCX0NCgkJCWlmIChpc19hcnJheSgkZXZlbnRzX2NvZGUpICYmIGNvdW50KCRldmVudHNfY29kZSkpDQoJCQl7DQoJCQkJJGV2ZW50c19jb2RlID0ganNvbl9lbmNvZGUoJGV2ZW50c19jb2RlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkZXZlbnRzX2NvZGUgPSAnJzsNCgkJCX0NCg0KCQkJLy8gR2V0IGEgZGIgY29ubmVjdGlvbi4NCgkJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KCQkJLy8gY2hlY2sgaWYgZGF0YSBpcyBzZXQNCgkJCSRkYi0+c2V0UXVlcnkoIlNFTEVDVCBmb3JtX2lkIEZST00gI19fcnNmb3JtX2FkdmFuY2VwaHAgV0hFUkUgZm9ybV9pZD0nIiAuICRmb3JtSWQgLiAiJyIpOw0KCQkJaWYgKCEkZGItPmxvYWRSZXN1bHQoKSkNCgkJCXsNCgkJCQkvLyBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0Lg0KCQkJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJCQkvLyBJbnNlcnQgY29sdW1ucy4NCgkJCQkkY29sdW1ucyA9IGFycmF5KCdmb3JtX2lkJywgJ2V2ZW50c19hY3RpdmUnLCAnZXZlbnRzX2NvZGUnKTsNCg0KCQkJCS8vIEluc2VydCB2YWx1ZXMuDQoJCQkJJHZhbHVlcyA9IGFycmF5KCRmb3JtSWQsICRkYi0+cXVvdGUoJGV2ZW50c19hY3RpdmUpLCAkZGItPnF1b3RlKCRldmVudHNfY29kZSkpOw0KDQoJCQkJLy8gUHJlcGFyZSB0aGUgaW5zZXJ0IHF1ZXJ5Lg0KCQkJCSRxdWVyeQ0KCQkJCQktPmluc2VydCgkZGItPnF1b3RlTmFtZSgnI19fcnNmb3JtX2FkdmFuY2VwaHAnKSkNCgkJCQkJLT5jb2x1bW5zKCRkYi0+cXVvdGVOYW1lKCRjb2x1bW5zKSkNCgkJCQkJLT52YWx1ZXMoaW1wbG9kZSgnLCcsICR2YWx1ZXMpKTsNCg0KCQkJCS8vIFNldCB0aGUgcXVlcnkgdXNpbmcgb3VyIG5ld2x5IHBvcHVsYXRlZCBxdWVyeSBvYmplY3QgYW5kIGV4ZWN1dGUgaXQuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KDQoJCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQkJfQ0KDQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdldmVudHNfYWN0aXZlJykgLiAnID0gJyAuICRkYi0+cXVvdGUoJGV2ZW50c19hY3RpdmUpLA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdldmVudHNfY29kZScpIC4gJyA9ICcgLiAkZGItPnF1b3RlKCRldmVudHNfY29kZSkNCgkJCSk7DQoNCgkJCS8vIENvbmRpdGlvbnMgZm9yIHdoaWNoIHJlY29yZHMgc2hvdWxkIGJlIHVwZGF0ZWQuDQoJCQkkY29uZGl0aW9ucyA9IGFycmF5KA0KCQkJCSRkYi0+cXVvdGVOYW1lKCdmb3JtX2lkJykgLiAnID0gJyAuICRmb3JtSWQNCgkJCSk7DQoNCgkJCSRxdWVyeS0+dXBkYXRlKCRkYi0+cXVvdGVOYW1lKCcjX19yc2Zvcm1fYWR2YW5jZXBocCcpKS0+c2V0KCRmaWVsZHMpLT53aGVyZSgkY29uZGl0aW9ucyk7DQoNCgkJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCg0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEJhY2stZW5kIFtPbiBBZnRlciBTaG93IEZvcm0gRWRpdCBUYWJzIFRhYl0NCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1CYWNrZW5kQWZ0ZXJTaG93Rm9ybUVkaXRUYWJzVGFiKCkNCgl7DQoJCWlmICgkdGhpcy0+aGFzQWNjZXNzKQ0KCQl7DQoJCQkkbGFuZyA9IEZhY3Rvcnk6OmdldExhbmd1YWdlKCk7DQoJCQkkbGFuZy0+bG9hZCgncGxnX3N5c3RlbV9yc2ZwYWR2YW5jZXBocCcpOw0KDQoJCQllY2hvICc8bGk+PGEgaWQ9ImFkdmFuY2VwaHBzY3JpcHRzIiBocmVmPSJqYXZhc2NyaXB0OiB2b2lkKDApOyI+PHNwYW4gY2xhc3M9InJzZmljb24gcnNmaWNvbi1jb2RlIj48L3NwYW4+PHNwYW4gY2xhc3M9ImlubmVyLXRleHQiPicgLiBUZXh0OjpfKCdQTEdfU1lTVEVNX1JTRlBBRFZBTkNFUEhQX0pPT01MQV9QUk9GSUxFX1RBQicpIC4gJzwvc3Bhbj48L2E+PC9saT4nOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEJhY2stZW5kIFtPbiBBZnRlciBTaG93IEZvcm0gRWRpdCBUYWJzXQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJhY2tlbmRBZnRlclNob3dGb3JtRWRpdFRhYnMoKQ0KCXsNCgkJaWYgKCR0aGlzLT5oYXNBY2Nlc3MpDQoJCXsNCgkJCS8vIHNldCBldmVudCByYW5nZQ0KCQkJJGV2ZW50cyA9IHJhbmdlKDAsIDEwKTsNCgkJCS8vIHNldCB0aGUgbGFuZyByYW5nZQ0KCQkJJEpUZXh0ID0gcmFuZ2UoJ0InLCAnTCcpOw0KDQoJCQkvLyBzZXQgbGFuZ3VhZ2UNCgkJCSRsYW5nID0gRmFjdG9yeTo6Z2V0TGFuZ3VhZ2UoKTsNCgkJCSRsYW5nLT5sb2FkKCdwbGdfc3lzdGVtX3JzZnBhZHZhbmNlcGhwJyk7DQoNCgkJCS8vIGdldCBzZXQgdmFsdWVzDQoJCQkkZm9ybUlkID0gRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKS0+aW5wdXQtPmdldEludCgnZm9ybUlkJyk7DQoJCQkkcm93ICAgID0gSlRhYmxlOjpnZXRJbnN0YW5jZSgnUlNGb3JtX0FkdmFuY2VwaHAnLCAnVGFibGUnKTsNCgkJCWlmICghJHJvdykNCgkJCXsNCgkJCQlyZXR1cm47DQoJCQl9DQoJCQkkcm93LT5sb2FkKCRmb3JtSWQpOw0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfYWN0aXZlKSA+IDApDQoJCQl7DQoJCQkJJGV2ZW50c19hY3RpdmUgPSBqc29uX2RlY29kZSgkcm93LT5ldmVudHNfYWN0aXZlLCB0cnVlKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlmb3JlYWNoICgkZXZlbnRzIGFzICRucikNCgkJCQl7DQoJCQkJCSRldmVudHNfYWN0aXZlWyRucl0gPSAwOw0KCQkJCX0NCgkJCX0NCgkJCWlmIChzdHJsZW4oJHJvdy0+ZXZlbnRzX2NvZGUpID4gMCkNCgkJCXsNCgkJCQkkZXZlbnRzX2NvZGUgPSBqc29uX2RlY29kZSgkcm93LT5ldmVudHNfY29kZSwgdHJ1ZSk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGV2ZW50cyBhcyAkbnIpDQoJCQkJew0KCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9ICcnOw0KCQkJCX0NCgkJCX0NCgkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZXZlbnRzX2NvZGVbJG5yXSkpDQoJCQkJew0KCQkJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRldmVudHNfY29kZVskbnJdLCB0cnVlKSkgPT09ICRldmVudHNfY29kZVskbnJdKQ0KCQkJCQl7DQoJCQkJCQkkZXZlbnRzX2NvZGVbJG5yXSA9IGJhc2U2NF9kZWNvZGUoJGV2ZW50c19jb2RlWyRucl0pOw0KCQkJCQl9DQoJCQkJCSRsaXN0c1snYWN0aXZlXycgLiAkbnJdID0gUlNGb3JtUHJvSGVscGVyOjpyZW5kZXJIVE1MKCdzZWxlY3QuYm9vbGVhbmxpc3QnLCAncnNmcGFkdmFuY2VwaHBfYWN0aXZlXycgLiAkbnIsICdjbGFzcz0iaW5wdXRib3giJywgJGV2ZW50c19hY3RpdmVbJG5yXSk7DQoJCQkJCSRsaXN0c1snY29kZV8nIC4gJG5yXSAgID0gJzx0ZXh0YXJlYSBjbGFzcz0icnNfdGV4dGFyZWEgY29kZW1pcnJvci1waHAiIG5hbWU9InJzZnBhZHZhbmNlcGhwX2NvZGVfJyAuICRuciAuICciIGlkPSJjb2RlXycgLiAkbnIgLiAnIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiA5OCU7IiBjb2xzPSI5MDAiIGZpbHRlcj0icmF3IiA+Jw0KCQkJCQkJLiBodG1sc3BlY2lhbGNoYXJzKCRldmVudHNfY29kZVskbnJdLCBFTlRfQ09NUEFULCAnVVRGLTgnKSAuICc8L3RleHRhcmVhPic7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRsaXN0c1snYWN0aXZlXycgLiAkbnJdID0gUlNGb3JtUHJvSGVscGVyOjpyZW5kZXJIVE1MKCdzZWxlY3QuYm9vbGVhbmxpc3QnLCAncnNmcGFkdmFuY2VwaHBfYWN0aXZlXycgLiAkbnIsICdjbGFzcz0iaW5wdXRib3giJywgJGV2ZW50c19hY3RpdmVbJG5yXSk7DQoJCQkJCSRsaXN0c1snY29kZV8nIC4gJG5yXSAgID0gJzx0ZXh0YXJlYSBjbGFzcz0icnNfdGV4dGFyZWEgY29kZW1pcnJvci1waHAiIG5hbWU9InJzZnBhZHZhbmNlcGhwX2NvZGVfJyAuICRuciAuICciIGlkPSJjb2RlXycgLiAkbnIgLiAnIiByb3dzPSIyMCIgc3R5bGU9IndpZHRoOiA5OCU7IiBjb2xzPSI5MDAiIGZpbHRlcj0icmF3IiA+PC90ZXh0YXJlYT4nOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gJzxkaXYgaWQ9InJzZnBhZHZhbmNlcGhwZGl2Ij4nOw0KCQkJaW5jbHVkZSBKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9yc2Zvcm0vaGVscGVycy9yc2ZwYWR2YW5jZXBocC5waHAnOw0KCQkJZWNobyAnPC9kaXY+JzsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBCYWNrLWVuZCBbT24gQWZ0ZXIgU2hvdyBDb25maWd1cmF0aW9uIFRhYnNdDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUnNmb3JtQmFja2VuZEFmdGVyU2hvd0NvbmZpZ3VyYXRpb25UYWJzKCR0YWJzKQ0KCXsNCgkJaWYgKCR0aGlzLT5oYXNBY2Nlc3MpDQoJCXsNCgkJCSRsYW5nID0gRmFjdG9yeTo6Z2V0TGFuZ3VhZ2UoKTsNCgkJCSRsYW5nLT5sb2FkKCdwbGdfc3lzdGVtX3JzZnBhZHZhbmNlcGhwJyk7DQoNCgkJCSR0YWJzLT5hZGRUaXRsZShUZXh0OjpfKCdQTEdfU1lTVEVNX1JTRlBBRFZBTkNFUEhQX0NPTkZJR19UQUInKSwgJ2Zvcm0tYWR2YW5jZXBocCcpOw0KCQkJJHRhYnMtPmFkZENvbnRlbnQoJHRoaXMtPmFkdmFuY2VwaHBDb25maWd1cmF0aW9uU2NyZWVuKCkpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogU2V0cyB0aGUgdGFiIGRpc3BsYXkgZm9yIHRoZSBDb25maWd1cmF0aW9uIFNjcmVlbg0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBhZHZhbmNlcGhwQ29uZmlndXJhdGlvblNjcmVlbigpDQoJew0KCQlpZiAoJHRoaXMtPmhhc0FjY2VzcykNCgkJew0KCQkJJGxhbmcgPSBGYWN0b3J5OjpnZXRMYW5ndWFnZSgpOw0KCQkJJGxhbmctPmxvYWQoJ3BsZ19zeXN0ZW1fcnNmcGFkdmFuY2VwaHAnKTsNCg0KCQkJcmV0dXJuIFRleHQ6Ol8oJ1BMR19TWVNURU1fUlNGUEFEVkFOQ0VQSFBfQ09ORklHX05PVElDRScpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogICAgLy8vLy8vICAgIFZhc3QgRGV2ZWxvcG1lbnQgTWV0aG9kICAgXFxcXFxcDQoJICogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KCSAqICAgIyMjIyMjIyMjIyAgICAgIEZST05UIEVORCAgICAgICMjIyMjIyMjIyMjIw0KCSAqICAgIyMjIyMjIyMjIyAgICBFdmVudCBUcmlnZ2VycyAgICMjIyMjIyMjIyMjIw0KCSAqICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCgkgKg0KCSAqKi8NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEluaXQgRm9ybSBEaXNwbGF5XQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZmluZCc9PiYkZmluZCwncmVwbGFjZSc9PiYkcmVwbGFjZSwnZm9ybUxheW91dCc9PiYkZm9ybUxheW91dCkNCgkgKi8NCgkvKnB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kSW5pdEZvcm1EaXNwbGF5KCRhcmdzKQ0KCXsNCgkJLS0gPj4gIFdlIG5lZWQgYSBmb3JtSWQgdG8gaGF2ZSB0aGlzIHdvcmsgIDw8IC0tLQ0KCQkNCgkJJHRoaXMtPnNldEV2ZW50cygkdGhpcy0+VkRNX3JzZm9ybV9pZCk7DQoJCWlmKCR0aGlzLT5WRE1fYWN0aXZlWzBdID09IDEpew0KCQkJZXZhbCgkdGhpcy0+VkRNX2NvZGVbMF0pOw0KCQl9DQoJfSovDQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBCZWZvcmUgRm9ybSBEaXNwbGF5XQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybUxheW91dCc9PiYkZm9ybUxheW91dCwnZm9ybUlkJz0+JGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZUZvcm1EaXNwbGF5KCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1snZm9ybUlkJ10pOw0KCQlpZiAoJHRoaXMtPlZETV9hY3RpdmVbMF0gPT0gMSkNCgkJew0KCQkJJGRhdGEgPSAkdGhpcy0+VkRNX2NvZGVbMF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEJlZm9yZSBGb3JtIFZhbGlkYXRpb25dDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdpbnZhbGlkJz0+JiRpbnZhbGlkLCAnZm9ybUlkJyA9PiAkZm9ybUlkLCAncG9zdCcgPT4gJiRwb3N0KQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kQmVmb3JlRm9ybVZhbGlkYXRpb24oJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVsxXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsxXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEZvcm0gUHJvY2Vzc10NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ3Bvc3QnID0+ICYkcG9zdCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZUZvcm1Qcm9jZXNzKCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1sncG9zdCddWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVsyXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsyXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIFN0b3JlIFN1Ym1pc3Npb25zXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybUlkJz0+JGZvcm1JZCwncG9zdCc9PiYkcG9zdCwnU3VibWlzc2lvbklkJz0+JFN1Ym1pc3Npb25JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEJlZm9yZVN0b3JlU3VibWlzc2lvbnMoJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtSWQnXSk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVszXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVszXTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQWZ0ZXIgU3RvcmUgU3VibWlzc2lvbnNdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdTdWJtaXNzaW9uSWQnPT4kU3VibWlzc2lvbklkLCAnZm9ybUlkJz0+JGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEFmdGVyU3RvcmVTdWJtaXNzaW9ucygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzRdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzRdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBBZnRlciBGb3JtIFByb2Nlc3NdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdTdWJtaXNzaW9uSWQnPT4kU3VibWlzc2lvbklkLCdmb3JtSWQnPT4kZm9ybUlkKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUZyb250ZW5kQWZ0ZXJGb3JtUHJvY2VzcygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzVdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzVdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiBGcm9udC1lbmQgW09uIEFmdGVyIFNob3cgVGhhbmt5b3UgTWVzc2FnZV0NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ291dHB1dCc9PiYkb3V0cHV0LCdmb3JtSWQnPT4mJGZvcm1JZCkNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1Gcm9udGVuZEFmdGVyU2hvd1RoYW5reW91TWVzc2FnZSgkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm1JZCddKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzZdID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzZdOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBBZnRlciBDcmVhdGUgUGxhY2Vob2xkZXJzXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybScgPT4gJiRmb3JtLCAncGxhY2Vob2xkZXJzJyA9PiAmJHBsYWNlaG9sZGVycywgJ3ZhbHVlcycgPT4gJiR2YWx1ZXMsICdzdWJtaXNzaW9uJyA9PiAkc3VibWlzc2lvbikNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gb25Sc2Zvcm1BZnRlckNyZWF0ZVBsYWNlaG9sZGVycygkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm0nXS0+Rm9ybUlkKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzddID09IDEpDQoJCXsNCgkJCSRkYXRhID0gJHRoaXMtPlZETV9jb2RlWzddOw0KCQkJaWYgKGJhc2U2NF9lbmNvZGUoYmFzZTY0X2RlY29kZSgkZGF0YSwgdHJ1ZSkpID09PSAkZGF0YSkNCgkJCXsNCgkJCQkkZGF0YSA9IGJhc2U2NF9kZWNvZGUoJGRhdGEpOw0KCQkJfQ0KCQkJZXZhbCgkZGF0YSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gRnJvbnQtZW5kIFtPbiBCZWZvcmUgVXNlciBFbWFpbF0NCgkgKg0KCSAqICRhcmdzID0gYXJyYXkoJ2Zvcm0nID0+ICYkZm9ybSwgJ3BsYWNlaG9sZGVycycgPT4gJiRwbGFjZWhvbGRlcnMsICd2YWx1ZXMnID0+ICYkdmFsdWVzLCAnc3VibWlzc2lvbklkJyA9PiAkU3VibWlzc2lvbklkLCAndXNlckVtYWlsJz0+JiR1c2VyRW1haWwpDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uUnNmb3JtQmVmb3JlVXNlckVtYWlsKCRhcmdzKQ0KCXsNCgkJJHRoaXMtPnNldEV2ZW50cygkYXJnc1snZm9ybSddLT5Gb3JtSWQpOw0KCQlpZiAoJHRoaXMtPlZETV9hY3RpdmVbOF0gPT0gMSkNCgkJew0KCQkJJGRhdGEgPSAkdGhpcy0+VkRNX2NvZGVbOF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEFkbWluIEVtYWlsXQ0KCSAqDQoJICogJGFyZ3MgPSBhcnJheSgnZm9ybScgPT4gJiRmb3JtLCAncGxhY2Vob2xkZXJzJyA9PiAmJHBsYWNlaG9sZGVycywgJ3ZhbHVlcycgPT4gJiR2YWx1ZXMsICdzdWJtaXNzaW9uSWQnID0+ICRTdWJtaXNzaW9uSWQsICdhZG1pbkVtYWlsJz0+JiRhZG1pbkVtYWlsKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJlZm9yZUFkbWluRW1haWwoJGFyZ3MpDQoJew0KCQkkdGhpcy0+c2V0RXZlbnRzKCRhcmdzWydmb3JtJ10tPkZvcm1JZCk7DQoJCWlmICgkdGhpcy0+VkRNX2FjdGl2ZVs5XSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVs5XTsNCgkJCWlmIChiYXNlNjRfZW5jb2RlKGJhc2U2NF9kZWNvZGUoJGRhdGEsIHRydWUpKSA9PT0gJGRhdGEpDQoJCQl7DQoJCQkJJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRkYXRhKTsNCgkJCX0NCgkJCWV2YWwoJGRhdGEpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIEZyb250LWVuZCBbT24gQmVmb3JlIEFkZGl0aW9uYWwgRW1haWxdDQoJICoNCgkgKiAkYXJncyA9IGFycmF5KCdmb3JtJz0+JiRmb3JtLCdwbGFjZWhvbGRlcnMnPT4mJHBsYWNlaG9sZGVycywndmFsdWVzJz0+JiR2YWx1ZXMsJ3N1Ym1pc3Npb25JZCc9PiRTdWJtaXNzaW9uSWQsJ2FkZGl0aW9uYWxFbWFpbCc9PiYkYWRkaXRpb25hbEVtYWlsKQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvblJzZm9ybUJlZm9yZUFkZGl0aW9uYWxFbWFpbCgkYXJncykNCgl7DQoJCSR0aGlzLT5zZXRFdmVudHMoJGFyZ3NbJ2Zvcm0nXS0+Rm9ybUlkKTsNCgkJaWYgKCR0aGlzLT5WRE1fYWN0aXZlWzEwXSA9PSAxKQ0KCQl7DQoJCQkkZGF0YSA9ICR0aGlzLT5WRE1fY29kZVsxMF07DQoJCQlpZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRkYXRhLCB0cnVlKSkgPT09ICRkYXRhKQ0KCQkJew0KCQkJCSRkYXRhID0gYmFzZTY0X2RlY29kZSgkZGF0YSk7DQoJCQl9DQoJCQlldmFsKCRkYXRhKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqICAgIENoZWNrIGlmIHRoaXMgcGx1Z2luIGlzIGFjdGl2ZSBvbiB0aGUgZm9ybQ0KCSAqDQoJICogQHJldHVybnMgYSBib29sIGZhbHNlIG9yIHRydWUNCgkgKiovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldEV2ZW50cygkZm9ybUlkKQ0KCXsNCgkJaWYgKCFpc19hcnJheSgkdGhpcy0+VkRNX2FjdGl2ZSkgfHwgIWNvdW50KCR0aGlzLT5WRE1fYWN0aXZlKSB8fCAkdGhpcy0+VkRNX3JzZm9ybV9pZCAhPSAkZm9ybUlkKQ0KCQl7DQoJCQkvLyBzZXQgZm9ybSBpZA0KCQkJJHRoaXMtPlZETV9yc2Zvcm1faWQgPSAkZm9ybUlkOw0KCQkJLy8gc2V0IGV2ZW50IGFycmF5DQoJCQkkZXZlbnRzID0gcmFuZ2UoMCwgMTApOw0KCQkJLy8gZ2V0IHNldCB2YWx1ZXMNCgkJCSRyb3cgPSBKVGFibGU6OmdldEluc3RhbmNlKCdSU0Zvcm1fQWR2YW5jZXBocCcsICdUYWJsZScpOw0KCQkJaWYgKCEkcm93KQ0KCQkJew0KCQkJCXJldHVybjsNCgkJCX0NCgkJCSRyb3ctPmxvYWQoJHRoaXMtPlZETV9yc2Zvcm1faWQpOw0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfYWN0aXZlKSkNCgkJCXsNCgkJCQkkdGhpcy0+VkRNX2FjdGl2ZSA9IGpzb25fZGVjb2RlKCRyb3ctPmV2ZW50c19hY3RpdmUsIHRydWUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPlZETV9hY3RpdmVbJG5yXSA9IDA7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKHN0cmxlbigkcm93LT5ldmVudHNfY29kZSkpDQoJCQl7DQoJCQkJJHRoaXMtPlZETV9jb2RlID0ganNvbl9kZWNvZGUoJHJvdy0+ZXZlbnRzX2NvZGUsIHRydWUpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCWZvcmVhY2ggKCRldmVudHMgYXMgJG5yKQ0KCQkJCXsNCgkJCQkJJHRoaXMtPlZETV9jb2RlWyRucl0gPSAnJzsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gY29uZmlndXJhdGlvblNjcmVlbigpDQoJew0KCQlvYl9zdGFydCgpOw0KDQoJCUpGb3JtOjphZGRGb3JtUGF0aChfX0RJUl9fIC4gJy9mb3JtcycpOw0KDQoJCSRmb3JtID0gSkZvcm06OmdldEluc3RhbmNlKCdwbGdfc3lzdGVtX3JzZnBnb29nbGUuY29uZmlndXJhdGlvbicsICdjb25maWd1cmF0aW9uJywgYXJyYXkoJ2NvbnRyb2wnID0+ICdyc2Zvcm1Db25maWcnKSwgZmFsc2UsIGZhbHNlKTsNCgkJJGZvcm0tPmJpbmQoJHRoaXMtPmxvYWRGb3JtRGF0YSgpKTsNCg0KCQk/Pg0KICAgICAgICA8ZGl2IGlkPSJwYWdlLWdvb2dsZSIgY2xhc3M9ImZvcm0taG9yaXpvbnRhbCI+DQoJCQk8P3BocA0KCQkJZm9yZWFjaCAoJGZvcm0tPmdldEZpZWxkc2V0cygpIGFzICRmaWVsZHNldCkNCgkJCXsNCgkJCQlpZiAoJGZpZWxkcyA9ICRmb3JtLT5nZXRGaWVsZHNldCgkZmllbGRzZXQtPm5hbWUpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJGZpZWxkcyBhcyAkZmllbGQpDQoJCQkJCXsNCgkJCQkJCWVjaG8gJGZpZWxkLT5yZW5kZXJGaWVsZCgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJPz4NCiAgICAgICAgPC9kaXY+DQoJCTw/cGhwDQoNCgkJJGNvbnRlbnRzID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQoJCW9iX2VuZF9jbGVhbigpOw0KDQoJCXJldHVybiAkY29udGVudHM7DQoJfQ0KDQoJLyoqDQoJICogICAgQ2hlY2sgaWYgdGhlIHVzZXIgaGFzIGJhY2tlbmQgYWNjZXNzDQoJICoNCgkgKiBAcmV0dXJucyBhIGJvb2wgZmFsc2Ugb3IgdHJ1ZQ0KCSAqKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYmFja2VuZEFjY2VzcygpDQoJew0KCQkvLyBnZXQgdXNlcg0KCQkkdXNlcklkICAgICAgID0gRmFjdG9yeTo6Z2V0VXNlcigpLT5pZDsNCgkJJHVzZXJHcm91cCAgICA9IEpVc2VySGVscGVyOjpnZXRVc2VyR3JvdXBzKCR1c2VySWQpOw0KCQkkYWNjZXNzR3JvdXBzID0gJHRoaXMtPnBhcmFtcy0+Z2V0KCdhY2Nlc3MnKTsNCgkJaWYgKGlzX2FycmF5KCR1c2VyR3JvdXApKQ0KCQl7DQoJCQlpZiAoaXNfYXJyYXkoJGFjY2Vzc0dyb3VwcykpDQoJCQl7DQoJCQkJcmV0dXJuIChjb3VudChhcnJheV9pbnRlcnNlY3QoJGFjY2Vzc0dyb3VwcywgJHVzZXJHcm91cCkpKSA/IHRydWUgOiBmYWxzZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyByZXR1cm4gdHJ1ZSBpZiBub3Qgc2V0DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', 'RSFPadvancephp', '', 'CQlpZiAoJHR5cGUgPT0gJ2luc3RhbGwnKQ0KCQl7DQoJCQllY2hvICcJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+Q29uZ3JhdHVsYXRpb25zISBUaGUgcGx1Z2luIGlzIG5vdyBpbnN0YWxsZWQhPC9oMj4NCgkJCQkJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+PGEgaHJlZj0iJyAuIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpiYXNlKCkgLiAnaW5kZXgucGhwP29wdGlvbj1jb21fcGx1Z2lucyZ2aWV3PXBsdWdpbnMmZmlsdGVyX3NlYXJjaD1BZHZhbmNlIFBIUCBmb3IgUlNGb3JtIVBybyI+QWN0aXZhdGU8L2E+IHRoaXMgcGx1Z2lucyBub3chPC9oMj4NCgkJCQkJPGgyIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+WW91IHdpbGwgbmVlZCB0byBzZXR1cCBhIGZldyB0aGluZ3MsIHdhdGNoIHRoZXNlIHR1dG9yaWFsczo8L2gyPg0KCQkJCQk8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+DQoJCQkJCQk8dWw+DQoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvREtFVnphdGJwRDgiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsIFJTRm9ybSBBZHZhbmNlIFBIUCBQbHVnaW48L2E+PC9saT4NCgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9WMzdOcWkxZHBuWSIgdGFyZ2V0PSJfYmxhbmsiPlNldCBSU0Zvcm0gQWR2YW5jZSBQSFA8L2E+PC9saT4NCgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9oU0JKZV9yeXExRSIgdGFyZ2V0PSJfYmxhbmsiPkRlbW9uc3RyYXRpb24gb2YgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQkJPC91bD4NCgkJCQkJPC9kaXY+DQoJCQkJCTxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+TGV0IHVzIGtub3cgaWYgc29tZXRoaW5nIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkITwvcD4nOw0KCQl9DQoJCWlmICgkdHlwZSA9PSAndXBkYXRlJykNCgkJew0KCQkJZWNobyAnCTxoMiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPkNvbmdyYXR1bGF0aW9ucyEgWW91IGhhdmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgdGhlIHBsdWdpbiE8L2gyPg0KCQkJCTxoMiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPlBsZWFzZSB3YXRjaCB0aGVzZSB0dXRvcmlhbHMgaWYgaGF2ZSBhbnkgcXVlc3Rpb25zOjwvaDI+DQoJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPg0KCQkJCQk8dWw+DQoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9ES0VWemF0YnBEOCIgdGFyZ2V0PSJfYmxhbmsiPkluc3RhbGwgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8veW91dHUuYmUvVjM3TnFpMWRwblkiIHRhcmdldD0iX2JsYW5rIj5TZXQgUlNGb3JtIEFkdmFuY2UgUEhQPC9hPjwvbGk+DQoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly95b3V0dS5iZS9oU0JKZV9yeXExRSIgdGFyZ2V0PSJfYmxhbmsiPkRlbW9uc3RyYXRpb24gb2YgUlNGb3JtIEFkdmFuY2UgUEhQIFBsdWdpbjwvYT48L2xpPg0KCQkJCQk8L3VsPg0KCQkJCTwvZGl2Pg0KCQkJCTxwIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciI+TGV0IHVzIGtub3cgaWYgc29tZXRoaW5nIGlzIG5vdCB3b3JraW5nIGFzIGV4cGVjdGVkITwvcD4nOw0KCQl9', '', 'CQlpZiAoJHR5cGUgPT0gJ3VuaW5zdGFsbCcpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJJGFwcCA9IEZhY3Rvcnk6OmdldEFwcGxpY2F0aW9uKCk7DQoNCgkJaWYgKCFmaWxlX2V4aXN0cyhKUEFUSF9BRE1JTklTVFJBVE9SIC4gJy9jb21wb25lbnRzL2NvbV9yc2Zvcm0vaGVscGVycy9yc2Zvcm0ucGhwJykpDQoJCXsNCgkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgaW5zdGFsbCB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9zZWN1cmUuYXZhbmdhdGUuY29tL29yZGVyL2NhcnQucGhwP1BST0RTPTE5MjUwNDQmUVRZPTEmQUZGSUxJQVRFPTYzOTU2JkFGRlNSQz1wbHVnaW4iIHRhcmdldD0iX2JsYW5rIj5SU0Zvcm0hIFBybyBjb21wb25lbnQ8L2E+IGJlZm9yZSBjb250aW51aW5nLicsICdlcnJvcicpOw0KDQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQlpZiAoIWZpbGVfZXhpc3RzKEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX3JzZm9ybS9oZWxwZXJzL3ZlcnNpb24ucGhwJykpDQoJCXsNCgkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSA8YSBocmVmPSJodHRwczovL3NlY3VyZS5hdmFuZ2F0ZS5jb20vb3JkZXIvY2FydC5waHA/UFJPRFM9MTkyNTA0NCZRVFk9MSZBRkZJTElBVEU9NjM5NTYmQUZGU1JDPXBsdWdpbiIgdGFyZ2V0PSJfYmxhbmsiPlJTRm9ybSEgUHJvPC9hPiB0byBhdCBsZWFzdCBSNDUgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCXJldHVybiB0cnVlOw==', '', '', '', '2.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', 'Q1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgYCNfX3JzZm9ybV9hZHZhbmNlcGhwYCAoDQogIGBmb3JtX2lkYCBpbnQoMTEpIE5PVCBOVUxMLA0KICBgZXZlbnRzX2FjdGl2ZWAgdmFyY2hhcigyNTUpIE5PVCBOVUxMLA0KICBgZXZlbnRzX2NvZGVgIG1lZGl1bXRleHQgTk9UIE5VTEwsDQogIFBSSU1BUlkgS0VZIChgZm9ybV9pZGApDQopIEVOR0lORT1NeUlTQU0gREVGQVVMVCBDSEFSU0VUPXV0Zjg7DQoNCkNSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGAjX19yc2Zvcm1fYWR2YW5jZXBocHN0b3JlYCAoDQogIGBpZGAgYmlnaW50KDIwKSBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwNCiAgYHVzZXJfaWRgIGludCgxMSkgTk9UIE5VTEwgREVGQVVMVCAnMCcsDQogIGBkYXRhYCBtZWRpdW10ZXh0IE5PVCBOVUxMLA0KICBQUklNQVJZIEtFWSAoYGlkYCksDQogIEtFWSBgdXNlcl9pZGAgKGB1c2VyX2lkYCkNCikgRU5HSU5FPU15SVNBTSBERUZBVUxUIENIQVJTRVQ9dXRmODs=', '', 'RSForm! Pro - Advance PHP', '', 1, '', '', 1, '2021-09-15 15:11:10', '2023-11-11 09:06:02', 6, '', 7),
(21, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Plugin to autoload the powers of componentbuilder', '{}', '86dd28b5-18d4-437e-8a53-7eaf23478fc8', '', 8, '{}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIENvbnN0cnVjdG9yLg0KCSAqDQoJICogQHBhcmFtICAgb2JqZWN0ICAmJHN1YmplY3QgIFRoZSBvYmplY3QgdG8gb2JzZXJ2ZSAtLSBldmVudCBkaXNwYXRjaGVyLg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGNvbmZpZyAgICBBbiBvcHRpb25hbCBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjb25maWd1cmF0aW9uIHNldHRpbmdzLg0KCSAqDQoJICogQHNpbmNlICAgMS42DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdWJqZWN0LCAkY29uZmlnKQ0KCXsNCgkJcGFyZW50OjpfX2NvbnN0cnVjdCgkc3ViamVjdCwgJGNvbmZpZyk7IyMjUExVR0lOX1BPV0VSX0FVVE9MT0FERVIjIyMNCgl9', '[[[Component]]] Powers Autoloader', '', '', '', 'Ly8gV0hBVD8=', '', '', '', '1.0.1', '{\"property_selection0\":{\"property\":\"25\"},\"property_selection1\":{\"property\":\"27\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Powers Autoloader', '', 1, '', '', 1, '2021-11-11 02:22:02', '2024-03-01 21:18:38', 16, '', 8),
(22, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the power autoloader plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Autoloader\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2977\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', 'd4f37ffe-afd8-492f-9491-9846f215a66d', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsNCg0KdXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow==', 11, '{\"method_selection0\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbiBsb2FkZWQNCgkJaWYgKENGYWN0b3J5OjpfKCdDb25maWcnKS0+YWRkX3Bvd2VyICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gbm93IGdldCB0aGUgcGx1Z2luIElEIGlmIHNldA0KCQkJaWYgKCgkaWQgPSAoaW50KSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3BsdWdpbicsIDApKSAhPT0gMCkNCgkJCXsNCgkJCQkvLyBsb2FkIHRoZSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbg0KCQkJCUNGYWN0b3J5OjpfKCdKb29tbGFwbHVnaW4uRGF0YScpLT5zZXQoJGlkKTsNCgkJCQkvLyBub3cgc2V0IHRoZSBwbHVnaW4gcG93ZXJzIHBsYWNlaG9sZGVyDQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+c2V0KCdQTFVHSU5fUE9XRVJfQVVUT0xPQURFUicsICcnKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdZb3UgZG8gbm90IGhhdmUgYSBnbG9iYWwgcG93ZXIgcGx1Z2luIHNldHVwLCBzbyB0aGUgcG93ZXJzIHBsdWdpbiBhdXRvbG9hZGVyIGNvdWxkIG5vdCBiZSBhZGRlZC4nKSwgJ1dhcm5pbmcnKTsNCgkJCX0NCgkJfQ0KCX0NCltDVVNUT01DT0RFPWNvbXBvbmVudEFjdGl2ZV0=', '[[[Component]]] Powers Autoloader Compiler', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDEwXQ==', '', '', '', '1.2.1', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Powers Autoloader Compiler', '', 1, '', '', 1, '2021-11-13 13:05:34', '2024-08-06 20:50:05', 32, '', 3),
(23, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component dashboard class custom headers.', '{\"fields0\":{\"file\":\"component_dashboard\",\"fields_name\":\"params.component_dashboard_headers\",\"fieldset\":\"component_dashboard_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"3010\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"3014\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"3006\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"3011\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"3015\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"3007\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"3012\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"3016\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"3008\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"3013\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"3017\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"3009\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'e3252a0c-ce05-428d-a916-24167e00c798', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrY29tcG9uZW50X2Rhc2hib2FyZF0=', '[[[Component]]] Component Dashboard Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.2', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Dashboard Headers Tabs', '', 1, '', '', 1, '2021-12-06 04:40:01', '2024-08-06 20:57:56', 19, '', 2),
(24, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Add Access Token to easy update [[[Component]]]', '{}', '29ac30d2-1c1a-4b9e-9cfa-c5fcb08caa01', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogb25JbnN0YWxsZXJCZWZvcmVQYWNrYWdlRG93bmxvYWQuDQoJICoNCgkgKiBGb3IgbW9kaWZpY2F0aW9uIG9mIFVSTCBhbmQgaGVhZGVycyBiZWZvcmUgcGFja2FnZSBkb3dubG9hZA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkKCYkdXJsLCAmJGhlYWRlcnMpDQoJew0KCQkvLyBzZXQgdGhlIFVSSSBvYmplY3QNCgkJJHVyaSA9IEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgkdXJsKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnLycsICR1cmktPmdldFBhdGgoKSk7DQoNCgkJLy8gY2hlY2sgdGhhdCB0aGlzIGlzIG91ciBBUEkNCgkJaWYgKCR1cmktPmdldEhvc3QoKSA9PSAnW1tbZ2l0ZWFfdXJsXV1dJyAmJiBpbl9hcnJheSgnW1tbZ2l0ZWFfcGFja2FnZV9uYW1lXV1dJywgJHBhcnRzKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSB0b2tlbiBpZiBzZXQNCgkJCSR0b2tlbiA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdnaXRlYV90b2tlbicsIGZhbHNlKTsNCgkJCS8vIG9ubHkgYWRkIGlmIHRva2VuIGlzIHNldA0KCQkJaWYgKCR0b2tlbikNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIHRva2VuDQoJCQkJJHVyaS0+c2V0VmFyKCdhY2Nlc3NfdG9rZW4nLCAkdG9rZW4pOw0KCQkJCS8vIHVwZGF0ZSB0aGUgVVJMDQoJCQkJJHVybCA9ICR1cmktPnRvU3RyaW5nKCk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gc2V0IHRoZSByZXR1cm4gVVJMDQoJCQkJJHJldHVybiA9IHVybGVuY29kZShiYXNlNjRfZW5jb2RlKChzdHJpbmcpIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgpKSk7DQoJCQkJLy8gc2V0IHRoZSB1cmxzDQoJCQkJJGdldF9hY2Nlc3NfdG9rZW5fdXJsID0gJyJodHRwczovL1tbW2dpdGVhX3VybF1dXS91c2VyL3NldHRpbmdzL2FwcGxpY2F0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSInIC4gVGV4dDo6XygnR2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCSRzZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciJyAuIEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpyb290KCkgLiAnYWRtaW5pc3RyYXRvci9pbmRleC5waHA/b3B0aW9uPWNvbV9jb25maWcmdmlldz1jb21wb25lbnQmY29tcG9uZW50PWNvbV9bW1tjb21wb25lbnRdXV0mcGF0aD0mcmV0dXJuPScgLiAkcmV0dXJuIC4gJyIgdGl0bGU9IicgLiBUZXh0OjpfKCdTZXQgQWNjZXNzIFRva2VuJykgLiAnIic7DQoJCQkJLy8gbG9hZCB0aGUgbWVzc2FnZQ0KCQkJCSR0aGlzLT5hcHAtPmVucXVldWVNZXNzYWdlKA0KCQkJCQlUZXh0OjpzcHJpbnRmKCJJZiB0aGVyZSB3YXMgYSBkb3dubG9hZC91cGRhdGUgZXJyb3IsIGl0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGUgPGEgaHJlZj0lcyA+QVBJIEFjY2VzcyBUb2tlbjwvYT4gZm9yIHVwZGF0ZXMgb2YgW1tbY29tcG9uZW50XV1dIGhhcyBub3QgYmVlbiBzZXQsIHlvdSBjYW4gc2V0IHRoaXMgYWNjZXNzIHRva2VuIGluIHRoZSA8YSBocmVmPSVzID5nbG9iYWwgb3B0aW9ucyB0YWI8L2E+LiIsDQoJCQkJCQkkZ2V0X2FjY2Vzc190b2tlbl91cmwsDQoJCQkJCQkkc2V0X2FjY2Vzc190b2tlbl91cmwNCgkJCQkJKSwgJ25vdGljZScpOw0KCQkJfQ0KCQl9DQoJfQ0K', 'componentbuilder', '', '', '', 'Ly8gbmVlZHMgZml4', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"39\"},\"property_selection1\":{\"property\":\"37\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev)', '', 1, '', '', 1, '2021-12-08 07:42:39', '2024-08-06 20:57:44', 18, '', 9),
(25, '', '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'For easy update of [[[Component]]]', '{}', '5565c7ce-bbbc-48c6-992a-9842046d28db', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW9yLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogb25JbnN0YWxsZXJCZWZvcmVQYWNrYWdlRG93bmxvYWQuDQoJICoNCgkgKiBGb3IgbW9kaWZpY2F0aW9uIG9mIFVSTCBhbmQgaGVhZGVycyBiZWZvcmUgcGFja2FnZSBkb3dubG9hZA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkKCYkdXJsLCAmJGhlYWRlcnMpDQoJew0KCQkvLyBzZXQgdGhlIFVSSSBvYmplY3QNCgkJJHVyaSA9IEpvb21sYV9fX2VlY2MxNDNlX2I1Y2ZfNGMzM19iYTRkXzk3ZGExZGY2MTQyMl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgkdXJsKTsNCgkJJHBhcnRzID0gZXhwbG9kZSgnLycsICR1cmktPmdldFBhdGgoKSk7DQoNCgkJLy8gY2hlY2sgdGhhdCB0aGlzIGlzIG91ciBBUEkNCgkJaWYgKCR1cmktPmdldEhvc3QoKSA9PSAnW1tbZ2l0ZWFfdXJsXV1dJyAmJiBpbl9hcnJheSgnW1tbZ2l0ZWFfcGFja2FnZV9uYW1lXV1dJywgJHBhcnRzKSkNCgkJew0KCQkJLy8gZ2V0IHRoZSB0b2tlbiBpZiBzZXQgKHdlIGFkZGVkIHRoZSBkZWZhdWx0IHB1YmxpYyB0b2tlbikNCgkJCSR0b2tlbiA9IEpvb21sYV9fX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV9bW1tjb21wb25lbnRdXV0nKS0+Z2V0KCdnaXRlYV90b2tlbicsICcxZjRkMGY0ZTRjNjNkNDcwYzJiYjRjMzM3YjdlNzNlYjU4ZWNiOTcyJyk7DQoJCQkvLyBvbmx5IGFkZCBpZiB0b2tlbiBpcyBzZXQNCgkJCWlmICgkdG9rZW4pDQoJCQl7DQoJCQkJLy8gYWRkIHRoZSB0b2tlbg0KCQkJCSR1cmktPnNldFZhcignYWNjZXNzX3Rva2VuJywgJHRva2VuKTsNCgkJCQkvLyB1cGRhdGUgdGhlIFVSTA0KCQkJCSR1cmwgPSAkdXJpLT50b1N0cmluZygpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIHNldCB0aGUgcmV0dXJuIFVSTA0KCQkJCSRyZXR1cm4gPSB1cmxlbmNvZGUoYmFzZTY0X2VuY29kZSgoc3RyaW5nKSBKb29tbGFfX19lZWNjMTQzZV9iNWNmXzRjMzNfYmE0ZF85N2RhMWRmNjE0MjJfX19Qb3dlcjo6Z2V0SW5zdGFuY2UoKSkpOw0KCQkJCS8vIHNldCB0aGUgdXJscw0KCQkJCSRnZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciaHR0cHM6Ly9bW1tnaXRlYV91cmxdXV0vdXNlci9zZXR0aW5ncy9hcHBsaWNhdGlvbnMiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iJyAuIFRleHQ6Ol8oJ0dldCBBY2Nlc3MgVG9rZW4nKSAuICciJzsNCgkJCQkkc2V0X2FjY2Vzc190b2tlbl91cmwgPSAnIicgLiBKb29tbGFfX19lZWNjMTQzZV9iNWNmXzRjMzNfYmE0ZF85N2RhMWRmNjE0MjJfX19Qb3dlcjo6cm9vdCgpIC4gJ2FkbWluaXN0cmF0b3IvaW5kZXgucGhwP29wdGlvbj1jb21fY29uZmlnJnZpZXc9Y29tcG9uZW50JmNvbXBvbmVudD1jb21fW1tbY29tcG9uZW50XV1dJnBhdGg9JnJldHVybj0nIC4gJHJldHVybiAuICciIHRpdGxlPSInIC4gVGV4dDo6XygnU2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCS8vIGxvYWQgdGhlIG1lc3NhZ2UNCgkJCQkkdGhpcy0+YXBwLT5lbnF1ZXVlTWVzc2FnZSgNCgkJCQkJVGV4dDo6c3ByaW50ZigiSWYgdGhlcmUgd2FzIGEgZG93bmxvYWQvdXBkYXRlIGVycm9yLCBpdCdzIHByb2JhYmx5IGJlY2F1c2UgdGhlIDxhIGhyZWY9JXMgPkFQSSBBY2Nlc3MgVG9rZW48L2E+IGZvciB1cGRhdGVzIG9mIFtbW2NvbXBvbmVudF1dXSBoYXMgbm90IGJlZW4gc2V0LCB5b3UgY2FuIHNldCB0aGlzIGFjY2VzcyB0b2tlbiBpbiB0aGUgPGEgaHJlZj0lcyA+Z2xvYmFsIG9wdGlvbnMgdGFiPC9hPi4iLA0KCQkJCQkJJGdldF9hY2Nlc3NfdG9rZW5fdXJsLA0KCQkJCQkJJHNldF9hY2Nlc3NfdG9rZW5fdXJsDQoJCQkJCSksICdub3RpY2UnKTsNCgkJCX0NCgkJfQ0KCX0NCg==', 'componentbuilder_public', '', '', '', 'Ly8=', '', '', '', '1.0.2', '{\"property_selection0\":{\"property\":\"39\"},\"property_selection1\":{\"property\":\"37\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev - public)', '', 1, '', '', 1, '2021-12-20 16:18:59', '2024-08-06 20:58:03', 6, '', 9),
(26, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'This plugin is used to set dynamic gets class headers.', '{\"fields0\":{\"file\":\"dynamic_get\",\"fields_name\":\"params.dynamic_get_headers\",\"fieldset\":\"dynamic_get_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields42\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields43\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields44\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields45\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields46\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields47\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields48\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields49\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields50\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'd44a5259-8dc9-4214-aa1d-e436ccc1f50c', 'SkxvYWRlcjo6cmVnaXN0ZXIoJ1tbW0NvbXBvbmVudF1dXUhlbHBlcicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tX1tbW2NvbXBvbmVudF1dXS9oZWxwZXJzL1tbW2NvbXBvbmVudF1dXS5waHAnKTsgDQoNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47', 3, '{}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnMrZHluYW1pY19nZXRd', '[[[Component]]] Dynamic Get Headers Tabs', '', '', '', 'W0NVU1RPTUNPREU9akNCUHJvUmVxdWlyZWQrMywwLDE0XQ==', '', '', '', '2.0.3', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Dynamic Get Headers Tabs', '', 1, '', '', 1, '2022-01-10 03:11:11', '2024-08-06 20:58:21', 24, '', 2),
(27, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 1, 'This plugin is used to load scripture on your website. So it adds https://cdn.jsdelivr.net/gh/getbible/loader@3.1.0/dist/js/getBible.min.js to the header of your website. See: https://getbible.net/loader for more details.', '{}', '3d7c1a27-54ca-418d-a77a-6590147cf901', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEh0bWxcSFRNTEhlbHBlcjsNCg==', 8, '{\"method_selection0\":{\"method\":\"122\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBoZWFkIGlzIGNvbXBpbGVkIGFuZCBhbGxvd3MgbWFuaXB1bGF0aW9uIG9mIHRoZSBoZWFkIGRhdGEuDQoJICogSW4gdGhpcyBjYXNlLCBpdCdzIHVzZWQgdG8gYWRkIGEgSmF2YVNjcmlwdCBmaWxlIHRvIHRoZSBmcm9udCBlbmQgb2YgdGhlIEpvb21sYSBzaXRlLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMy4wLjANCgkgKiBAdGhyb3dzICBFeGNlcHRpb24gb24gZXJyb3IuDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQmVmb3JlQ29tcGlsZUhlYWQoKQ0KCXsNCgkJLy8gQ2hlY2sgaWYgd2UgYXJlIGluIHRoZSBzaXRlIGFwcGxpY2F0aW9uDQoJCWlmICgkdGhpcy0+YXBwLT5pc0NsaWVudCgnc2l0ZScpKSB7DQoJCQlIVE1MSGVscGVyOjpfKCdzY3JpcHQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL2dldGJpYmxlL2xvYWRlckAzLjEuMC9kaXN0L2pzL2dldEJpYmxlLm1pbi5qcycsIFsndmVyc2lvbicgPT4gJ2F1dG8nXSk7DQoJCX0NCgl9', 'GetBibleLoader', '', '', '', 'CQkJJGp2ZXJzaW9uID0gbmV3IEpWZXJzaW9uKCk7DQoJCQlpZiAoISRqdmVyc2lvbi0+aXNDb21wYXRpYmxlKCczLjEwLjAnKSkgew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSB0byBhdCBsZWFzdCBKb29tbGEhIDMuMTAgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0K', '', '', '', '3.1.0', '{\"property_selection0\":{\"property\":\"25\"}}', 'IyBnZXRCaWJsZSBMb2FkZXIgKFtbW3BsdWdpbi52ZXJzaW9uXV1dKQ0KDQojIyMgVGhlIEpvb21sYSBwbHVnaW4gZnJvbSBbZ2V0QmlibGUubmV0XShodHRwczovL2dldGJpYmxlLm5ldC9qb29tbGEpIHRvIGxvYWQgb2YgdGhlIFNjcmlwdHVyZXMgaW4geW91ciB3ZWJzaXRlIGNvbnRlbnQuDQoNCkFkaW5nIHRoZSBbZ2V0QmlibGUgTG9hZGVyIFNjcmlwdF0oaHR0cHM6Ly9naXQudmRtLmRldi9nZXRCaWJsZS9sb2FkZXIpIHRoZSB0aGUgaGVhZGVyIG9mIHlvdXIgd2Vic2l0ZSwgd2UgYXJlIGFkZGluZyB0aGUgYWJpbGl0eSB0byB5b3VyIEpvb21sYSB3ZWJzaXRlIHRvIGFkZCBTY3JpcHR1cmVzIHRvIHlvdXIgY29udGVudCB2ZXJ5IGVhc2lseS4NCg0KIyMgSG93Pw0KDQotIERvd25sb2FkIHRoZSBwbHVnaW4gW2hlcmVdKGh0dHBzOi8vZ2l0LnZkbS5kZXYvZ2V0QmlibGUvbG9hZGVyLXBsdWdpbi9hcmNoaXZlL21hc3Rlci56aXApLg0KLSBJbnN0YWxsIHRoZSBwbHVnaW4gb24geW91ciBKb29tbGEgMy80LzUgd2Vic2l0ZS4NCi0gQWRkIGEgY2xhc3MgYGdldEJpYmxlYCB0byBhbnkgZWxlbWVudCAoaW4geW91ciBjb250ZW50KSB0aGF0IGNvbnRhaW5zIGEgU2NyaXB0dXJlIHJlZmVyZW5jZXMgbGlrZSB0aGlzOg0KDQogICBgYGBodG1sDQogICA8dWw+DQogICAgIDxsaSBjbGFzcz0iZ2V0QmlibGUiPkpvaG4gMzoxNjwvbGk+DQogICAgIDxsaSBjbGFzcz0iZ2V0QmlibGUiPjEgSm9obiAzOjE2LTE5LDIyPC9saT4NCiAgICAgPCEtLSBBZGQgbW9yZSBlbGVtZW50cyBhcyBuZWVkZWQgLS0+DQogICA8L3VsPg0KICAgYGBgDQotIEZvbGxvdyB0aGVzZSBbcmVmZXJlbmNlIG5hbWluZ10oaHR0cHM6Ly9naXQudmRtLmRldi9nZXRCaWJsZS9sb2FkZXIjc2NyaXB0dXJlLXJlZmVyZW5jZS1mb3JtYXR0aW5nKSBjb252ZW50aW9ucy4NCi0gVGhlcmUgaXMgYWxzbyBbY3VzdG9taXphdGlvbiBvcHRpb25dKGh0dHBzOi8vZ2l0LnZkbS5kZXYvZ2V0QmlibGUvbG9hZGVyI3V0aWxpemluZy1kYXRhLWF0dHJpYnV0ZXMpIGF2YWlsYWJsZS4NCi0gRm9yIG1vcmUgZGV0YWlscyBnb3QgdG8gdGhlIFtCaWJsZWtpdCBkb2N1bWVudGF0aW9uXShodHRwczovL2dldGJpYmxlLm5ldC9sb2FkZXIpIHBhZ2UuDQoNCj4gU3VwcG9ydCBjYW4gYmUgZm91bmQgYXQgb3VyIFtjb21tdW5pdHkgc3VwcG9ydCBhcmVhXShodHRwczovL2dpdC52ZG0uZGV2L2dldEJpYmxlL3N1cHBvcnQpLg0KDQojIEJ1aWxkIERldGFpbHMNCg0KKyAqQ29tcGFueSo6IFsjIyNDT01QQU5ZTkFNRSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkF1dGhvcio6IFsjIyNBVVRIT1IjIyNdKG1haWx0bzojIyNBVVRIT1JFTUFJTCMjIykNCisgKk5hbWUqOiBbZ2V0QmlibGUgTG9hZGVyXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqRmlyc3QgQnVpbGQqOiAjIyNDUkVBVElPTkRBVEUjIyMNCisgKkxhc3QgQnVpbGQqOiAjIyNCVUlMRERBVEUjIyMNCisgKlZlcnNpb24qOiBbW1twbHVnaW4udmVyc2lvbl1dXQ0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQo+IFRoaXMgKipwbHVnaW4qKiB3YXMgYnVpbGQgd2l0aCBhIEpvb21sYSBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy5qb29tbGFjb21wb25lbnRidWlsZGVyLmNvbSkuDQo+IERldmVsb3BlZCBieSBbTGxld2VsbHluIHZhbiBkZXIgTWVyd2VdKG1haWx0bzpqb29tbGFAdmRtLmlvKQ==', '', '', '', 'GetBible Loader', '', 1, '', '', 1, '2023-07-26 05:24:37', '2024-08-06 20:58:25', 40, '', 2),
(28, 1, '', '', '', 1, '', '', '', '', '', '', '', 1, 1, 'This plugin is used to load PreUpVer on your website. So it adds https://cdn.jsdelivr.net/gh/Llewellynvdm/PreUpVer@1.0.0/dist/js/preupver.min.js to the header of your website. See: https://git.vdm.dev/Llewellyn/PreUpVer for more details.', '{}', 'dd6580c4-6bbb-4d13-a868-0b38fbb6a66e', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEh0bWxcSFRNTEhlbHBlcjsNCg==', 8, '{\"method_selection0\":{\"method\":\"122\"}}', 'CS8qKg0KCSAqIEFwcGxpY2F0aW9uIG9iamVjdA0KCSAqDQoJICogQHZhciAgICBDTVNBcHBsaWNhdGlvbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhcHA7DQoNCgkvKioNCgkgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYmVmb3JlIHRoZSBoZWFkIGlzIGNvbXBpbGVkIGFuZCBhbGxvd3MgbWFuaXB1bGF0aW9uIG9mIHRoZSBoZWFkIGRhdGEuDQoJICogSW4gdGhpcyBjYXNlLCBpdCdzIHVzZWQgdG8gYWRkIGEgSmF2YVNjcmlwdCBmaWxlIHRvIHRoZSBmcm9udCBlbmQgb2YgdGhlIEpvb21sYSBzaXRlLg0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMy4wLjANCgkgKiBAdGhyb3dzICBFeGNlcHRpb24gb24gZXJyb3IuDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQmVmb3JlQ29tcGlsZUhlYWQoKQ0KCXsNCgkJLy8gQ2hlY2sgaWYgd2UgYXJlIGluIHRoZSBzaXRlIGFwcGxpY2F0aW9uDQoJCWlmICgkdGhpcy0+YXBwLT5pc0NsaWVudCgnc2l0ZScpKSB7DQoJCQlIVE1MSGVscGVyOjpfKCdzY3JpcHQnLCAnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL0xsZXdlbGx5bnZkbS9QcmVVcFZlckAxLjAuMC9kaXN0L2pzL3ByZXVwdmVyLm1pbi5qcycsIFsndmVyc2lvbicgPT4gJ2F1dG8nXSk7DQoJCX0NCgl9', 'PreUpVerLoader', '', '', '', 'CQkJJGp2ZXJzaW9uID0gbmV3IEpWZXJzaW9uKCk7DQoJCQlpZiAoISRqdmVyc2lvbi0+aXNDb21wYXRpYmxlKCczLjEwLjAnKSkgew0KCQkJCSRhcHAtPmVucXVldWVNZXNzYWdlKCdQbGVhc2UgdXBncmFkZSB0byBhdCBsZWFzdCBKb29tbGEhIDMuMTAgYmVmb3JlIGNvbnRpbnVpbmchJywgJ2Vycm9yJyk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0K', '', '', '', '1.0.0', '{\"property_selection0\":{\"property\":\"25\"}}', 'IyBQcmVVcFZlciBMb2FkZXIgKFtbW3BsdWdpbi52ZXJzaW9uXV1dKQ0KDQojIyBJbnRyb2R1Y3Rpb24NCg0KUHJlVXBWZXIgaXMgYSB2ZXJzYXRpbGUgSmF2YVNjcmlwdCBsaWJyYXJ5IGRlc2lnbmVkIHRvIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlcnMgb2YgbGlicmFyeSBzY3JpcHRzIGluIHlvdXIgZG9jdW1lbnRhdGlvbi4gSXQgaWRlbnRpZmllcyBzcGVjaWZpYyBgPHByZT5gIHRhZ3Mgb24geW91ciB3ZWJwYWdlIGFuZCB1cGRhdGVzIHRoZW0gd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gdGFnIGZldGNoZWQgZnJvbSBhIHNwZWNpZmllZCByZXBvc2l0b3J5LCBlbnN1cmluZyB5b3VyIGRvY3VtZW50YXRpb24gYWx3YXlzIGRpc3BsYXlzIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uDQoNCiMjIEhvdyBJdCBXb3Jrcw0KDQpQcmVVcFZlciBvcGVyYXRlcyBieSBzZWFyY2hpbmcgZm9yIGA8cHJlPmAgdGFncyB3aXRoIGEgZGVzaWduYXRlZCBjbGFzcyAoYHByZXVwdmVyYCkgYW5kIHVzaW5nIHRoZWlyIGRhdGEgYXR0cmlidXRlcyB0byBwZXJmb3JtIHZlcnNpb24gdXBkYXRlcy4gSXQgc2ltcGxpZmllcyB0aGUgcHJvY2VzcyBvZiBrZWVwaW5nIHlvdXIgbGlicmFyeSByZWZlcmVuY2VzIHVwLXRvLWRhdGUgaW4gZG9jdW1lbnRhdGlvbi4NCg0KIyMjIEF1dG9tYXRpYyBEZXRlY3Rpb24gYW5kIFVwZGF0aW5nDQoNCldoZW4gdGhlIHdlYnBhZ2UgbG9hZHMsIFByZVVwVmVyIGZpbmRzIGFsbCBgPHByZT5gIHRhZ3MgbWFya2VkIHdpdGggdGhlIGBwcmV1cHZlcmAgY2xhc3MuIEl0IHRoZW4gZXh0cmFjdHMgbmVjZXNzYXJ5IGRldGFpbHMgZnJvbSB0aGVpciBkYXRhIGF0dHJpYnV0ZXMgYW5kIHVwZGF0ZXMgZWFjaCB0YWcgd2l0aCB0aGUgbGF0ZXN0IGxpYnJhcnkgdmVyc2lvbi4NCg0KIyMjIFVzYWdlDQoNCjEuICoqTWFya2luZyBgPHByZT5gIFRhZ3M6KioNCg0KICAgQWRkIHRoZSBgY2xhc3M9InByZXVwdmVyImAgdG8gYDxwcmU+YCB0YWdzIGluIHlvdXIgSFRNTCBhbmQgZGVmaW5lIHRoZSByZXF1aXJlZCBkYXRhIGF0dHJpYnV0ZXMgZm9yIGF1dG9tYXRpYyB1cGRhdGluZzoNCg0KICAgYGBgaHRtbA0KICAgPHByZSBpZD0idW5pcXVlLWlkIiBjbGFzcz0icHJldXB2ZXIiDQogICAgICAgIGRhdGEtYXBpLXVybD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy91c2VybmFtZS9saWJyYXJ5L3RhZ3MiDQogICAgICAgIGRhdGEtZGVzY3JpcHRpb249IkRlc2NyaXB0aW9uIG9mIHRoZSBsaWJyYXJ5IHNjcmlwdCINCiAgICAgICAgZGF0YS11cmw9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC91c2VybmFtZS9saWJyYXJ5QCR7dmVyc2lvbn0vZGlzdC9saWJyYXJ5Lm1pbi5qcyI+DQogICA8L3ByZT4NCiAgIGBgYA0KDQogICBSZXBsYWNlIGB1bmlxdWUtaWRgLCBgdXNlcm5hbWVgLCBgbGlicmFyeWAsIGFuZCBvdGhlciBwbGFjZWhvbGRlcnMgd2l0aCB5b3VyIHNwZWNpZmljIGRldGFpbHMuDQoNCjIuICoqQXR0cmlidXRlcyBFeHBsYWluZWQ6KioNCg0KICAgLSBgaWRgOiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgYDxwcmU+YCB0YWcuDQogICAtIGBkYXRhLWFwaS11cmxgOiBUaGUgQVBJIFVSTCB0byBmZXRjaCB0aGUgbGF0ZXN0IGxpYnJhcnkgdmVyc2lvbi4NCiAgIC0gYGRhdGEtZGVzY3JpcHRpb25gOiBBIGJyaWVmIGRlc2NyaXB0aW9uIG9mIHRoZSBsaWJyYXJ5IHNjcmlwdC4NCiAgIC0gYGRhdGEtdXJsYDogVGhlIFVSTCBvZiB0aGUgc2NyaXB0LCB3aGVyZSBgJHt2ZXJzaW9ufWAgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBsYXRlc3QgdmVyc2lvbiBudW1iZXIuDQoNCiMjIyBFeGFtcGxlDQoNCkNoZWNrIG91dCB0aGUgW3Rlc3RzXShodHRwczovL2dpdC52ZG0uZGV2L0xsZXdlbGx5bi9QcmVVcFZlci9zcmMvYnJhbmNoL21hc3Rlci90ZXN0cy8pIGZvbGRlciBmb3IgdGhlIGV4YW1wbGVzIHdlIHVzZSB0byB0ZXN0IGlmIHRoaXMgbGlicmFyeSB3b3JrcyBhcyBleHBlY3RlZC4NCg0KIyBCdWlsZCBEZXRhaWxzDQoNCisgKkF1dGhvcio6IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8pDQorICpOYW1lKjogW1ByZVVwVmVyIExvYWRlcl0oaHR0cHM6Ly9naXQudmRtLmRldi9MbGV3ZWxseW4vUHJlVXBWZXIpDQorICpGaXJzdCBCdWlsZCo6ICMjI0NSRUFUSU9OREFURSMjIw0KKyAqTGFzdCBCdWlsZCo6ICMjI0JVSUxEREFURSMjIw0KKyAqVmVyc2lvbio6IFtbW3BsdWdpbi52ZXJzaW9uXV1dDQorICpDb3B5cmlnaHQqOiAjIyNDT1BZUklHSFQjIyMNCisgKkxpY2Vuc2UqOiAjIyNMSUNFTlNFIyMjDQoNCj4gVGhpcyAqKnBsdWdpbioqIHdhcyBidWlsZCB3aXRoIGEgSm9vbWxhIFtBdXRvbWF0ZWQgQ29tcG9uZW50IEJ1aWxkZXJdKGh0dHBzOi8vd3d3Lmpvb21sYWNvbXBvbmVudGJ1aWxkZXIuY29tKS4NCj4gRGV2ZWxvcGVkIGJ5IFtMbGV3ZWxseW4gdmFuIGRlciBNZXJ3ZV0obWFpbHRvOmpvb21sYUB2ZG0uaW8p', '', '', '', 'PreUpVer Loader', '', 1, '', '', 1, '2023-11-28 09:01:02', '2024-08-06 20:58:28', 6, '', 2),
(29, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component dashboard class custom headers.', '{\"fields0\":{\"file\":\"component_dashboard\",\"fields_name\":\"params.component_dashboard_headers\",\"fieldset\":\"component_dashboard_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"3010\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"3014\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"3006\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"3011\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"3015\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"3007\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"3012\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"3016\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"3008\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"3013\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"3017\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"3009\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'e682b390-810c-4c47-b5b8-8ebd3621aecf', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStjb21wb25lbnRfZGFzaGJvYXJkXQ==', '[[[Component]]] Component Dashboard Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Dashboard Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:01', '2024-08-11 11:40:45', 6, '', 2),
(30, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the power autoloader plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Autoloader\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2977\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', 'c5be15b5-cf71-47ed-89fc-6ee2150084aa', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{\"method_selection0\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwb3dlciBhdXRvbG9hZGVyIHBsdWdpbiBsb2FkZWQNCgkJaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5hZGRfcG93ZXIgJiYgJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSBwbHVnaW4gSUQgaWYgc2V0DQoJCQlpZiAoKCRpZCA9IChpbnQpICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpICE9PSAwKQ0KCQkJew0KCQkJCS8vIGxvYWQgdGhlIHBvd2VyIGF1dG9sb2FkZXIgcGx1Z2luDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRpZCk7DQoJCQkJLy8gbm93IHNldCB0aGUgcGx1Z2luIHBvd2VycyBwbGFjZWhvbGRlcg0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+c2V0KCdQTFVHSU5fUE9XRVJfQVVUT0xPQURFUicsICcnKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQlGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdZb3UgZG8gbm90IGhhdmUgYSBnbG9iYWwgcG93ZXIgcGx1Z2luIHNldHVwLCBzbyB0aGUgcG93ZXJzIHBsdWdpbiBhdXRvbG9hZGVyIGNvdWxkIG5vdCBiZSBhZGRlZC4nKSwgJ1dhcm5pbmcnKTsNCgkJCX0NCgkJfQ0KCX0NCltDVVNUT01DT0RFPWNvbXBvbmVudEFjdGl2ZV0=', '[[[Component]]] Powers Autoloader Compiler', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Powers Autoloader Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:15', '2024-08-11 11:40:34', 7, '', 3),
(31, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set component class custom headers.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.joomla_component_headers\",\"fieldset\":\"joomla_component_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2871\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2872\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2974\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2873\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2874\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2975\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2878\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2877\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2973\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2875\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2876\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2972\",\"custom_value\":\"\"}}}}', '5a37b156-fec3-4b56-b748-69f4ecff5ca1', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStqb29tbGFfY29tcG9uZW50XQ==', '[[[Component]]] Component Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Component Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:18', '2024-08-11 11:40:03', 8, '', 2),
(32, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom admin class custom headers.', '{\"fields0\":{\"file\":\"custom_admin_view\",\"fields_name\":\"params.custom_admin_view_headers\",\"fieldset\":\"custom_admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '69c4c213-5ef7-4ebf-b51f-c723edb1643b', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStjdXN0b21fYWRtaW5fdmlld10=', '[[[Component]]] Custom Admin Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Custom Admin Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:22', '2024-08-11 11:39:55', 7, '', 2),
(33, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set site class custom headers.', '{\"fields0\":{\"file\":\"site_view\",\"fields_name\":\"params.site_view_headers\",\"fieldset\":\"site_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '1628a6a8-926c-4d91-a1da-cc9e096514fc', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7DQo=', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStzaXRlX3ZpZXdd', '[[[Component]]] Site Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Site Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:32', '2024-08-11 11:39:44', 5, '', 2),
(34, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set admin class custom headers.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.admin_view_headers\",\"fieldset\":\"admin_view_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2849\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2846\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2969\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2983\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2985\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2968\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2886\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2884\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2995\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2850\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2845\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2967\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2844\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2847\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2966\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2984\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2986\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2965\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2885\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2883\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2996\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2851\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2848\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2964\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2895\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2896\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2970\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2987\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2988\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2952\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2897\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2898\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2999\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"3088\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"3089\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"3090\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"3091\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"3092\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"3093\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', 'b14309ee-f0e0-4250-ac14-d8e2f635cbad', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZSthZG1pbl92aWV3XQ==', '[[[Component]]] Admin Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Admin Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:34', '2024-08-11 11:39:35', 5, '', 2),
(35, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the custom headers for your classes during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your code where you would like to set Custom Headers.', '{}', '3584933e-d2a1-48a4-a92d-119ae8d32135', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEdsb2JhbCBzd2l0Y2ggdG8gc2VlIGlmIGEgZmlsZSBoYXMgY3VzdG9tIGhlYWRlcnMuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsb2FkSGVhZGVycyA9IGZhbHNlOw0KDQoJLyoqDQoJICogVGhlIGFjdGl2ZSBoZWFkZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCAkYWN0aXZlSGVhZGVycyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIGNvbXBpbGVyIHBsYWNlaG9sZGVycyB2YWx1ZXMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkICRwbGFjZWhvbGRlcnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIHBvd2VycyB0byBpbmNsdWRlIGluIHByb2plY3QNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC42DQoJICovDQoJcHJvdGVjdGVkICRsaW5rZWRQb3dlcnMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogVGhlIFRhcmdldHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC44DQoJICovDQoJcHJvdGVjdGVkICR0YXJnZXRzID0gYXJyYXkoDQoJCSdhZG1pbl92aWV3X2hlYWRlcnMnICAgICAgICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3JywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX3NpbmdsZScNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2FkbWluX3ZpZXdfaHRtbCcgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX2FkbWluX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfc2luZ2xlJw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ2FkbWluLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9zaW5nbGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfYWRtaW5fdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5fdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSksDQoJCQkJJ2FkZF9hZG1pbl92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi52aWV3cy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICduYW1lX2xpc3QnDQoJCQkJKSwNCgkJCQknYWRkX2ltcG9ydF9jdXN0b21fY29udHJvbGxlcicgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnaW1wb3J0X2N1c3RvbV9jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdpbXBvcnQuY3VzdG9tLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ25hbWVfbGlzdCcNCgkJCQkpLA0KCQkJCSdhZGRfaW1wb3J0X2N1c3RvbV9tb2RlbCcgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnaW1wb3J0X2N1c3RvbV9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnaW1wb3J0LmN1c3RvbS5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnbmFtZV9saXN0Jw0KCQkJCSkNCgkJCSksDQoJCSdzaXRlX3ZpZXdfaGVhZGVycycgICAgICAgICAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX3NpdGVfdmlld19tb2RlbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlldycgICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19odG1sJyAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdfY29udHJvbGxlcicgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19tb2RlbCcgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzJyAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfaHRtbCcgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3NfY29udHJvbGxlcicgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5zaXRlLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdjdXN0b21fYWRtaW5fdmlld19oZWFkZXJzJyAgID0+DQoJCQlhcnJheSgNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5odG1sJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXcuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3NfY29udHJvbGxlcicsDQoJCQkJCSdjb250ZXh0JyA9PiAnY3VzdG9tLmFkbWluLnZpZXdzLmNvbnRyb2xsZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2FqYXhfbW9kZWwnICAgICAgICAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdhamF4X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhamF4LmFkbWluLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhamF4Jw0KCQkJCSkNCgkJCSksDQoJCSdkeW5hbWljX2dldF9oZWFkZXJzJyAgICAgICAgICAgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfc2l0ZV92aWV3X21vZGVsJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3JyAgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXcnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3X2h0bWwnICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdfaHRtbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld19jb250cm9sbGVyJyAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3X2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX3ZpZXdzX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfdmlld3NfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX3NpdGVfdmlld3MnICAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnc2l0ZV92aWV3cycsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19odG1sJyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV92aWV3c19jb250cm9sbGVyJyA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX3ZpZXdzX2NvbnRyb2xsZXInLA0KCQkJCQknY29udGV4dCcgPT4gJ3NpdGUudmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfbW9kZWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXcnICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3JywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdfaHRtbCcgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3X2NvbnRyb2xsZXInICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlldy5jb250cm9sbGVyJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdjb2RlJw0KCQkJCSksDQoJCQkJJ2FkZF9jdXN0b21fYWRtaW5fdmlld3NfbW9kZWwnICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnY3VzdG9tX2FkbWluX3ZpZXdzX21vZGVsJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2NvZGUnDQoJCQkJKSwNCgkJCQknYWRkX2N1c3RvbV9hZG1pbl92aWV3cycgICAgICAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdjdXN0b21fYWRtaW5fdmlld3MnLA0KCQkJCQknY29udGV4dCcgPT4gJ2N1c3RvbS5hZG1pbi52aWV3cycsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2h0bWwnICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19odG1sJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuaHRtbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfY3VzdG9tX2FkbWluX3ZpZXdzX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2N1c3RvbV9hZG1pbl92aWV3c19jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdjdXN0b20uYWRtaW4udmlld3MuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnY29kZScNCgkJCQkpLA0KCQkJCSdhZGRfYWpheF9tb2RlbCcgICAgICAgICAgICAgICAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FqYXhfbW9kZWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2FqYXguYWRtaW4ubW9kZWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2FqYXgnDQoJCQkJKQ0KCQkJKSwNCgkJJ2NvbXBvbmVudF9kYXNoYm9hcmRfaGVhZGVycycgPT4NCgkJCWFycmF5KA0KCQkJCSdhZGRfZGFzaGJvYXJkX21vZGVsJyAgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLm1vZGVsJywNCgkJCQkJJ3ZpZXcnICAgID0+ICdkYXNoYm9hcmQnDQoJCQkJKSwNCgkJCQknYWRkX2Rhc2hib2FyZF92aWV3JyAgICAgICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdkYXNoYm9hcmRfdmlldycsDQoJCQkJCSdjb250ZXh0JyA9PiAnZGFzaGJvYXJkLnZpZXcnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX3ZpZXdfaHRtbCcgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF92aWV3X2h0bWwnLA0KCQkJCQknY29udGV4dCcgPT4gJ2Rhc2hib2FyZC52aWV3Lmh0bWwnLA0KCQkJCQkndmlldycgICAgPT4gJ2Rhc2hib2FyZCcNCgkJCQkpLA0KCQkJCSdhZGRfZGFzaGJvYXJkX2NvbnRyb2xsZXInID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2Rhc2hib2FyZF9jb250cm9sbGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdkYXNoYm9hcmQuY29udHJvbGxlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnZGFzaGJvYXJkJw0KCQkJCSksDQoJCQkJJ2FkZF9hamF4X21vZGVsJyAgICAgICAgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWpheF9tb2RlbCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWpheC5hZG1pbi5tb2RlbCcsDQoJCQkJCSd2aWV3JyAgICA9PiAnYWpheCcNCgkJCQkpDQoJCQkpLA0KCQknam9vbWxhX2NvbXBvbmVudF9oZWFkZXJzJyAgICA9Pg0KCQkJYXJyYXkoDQoJCQkJJ2FkZF9hZG1pbl9jb21wb25lbnQnID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ2FkbWluX2NvbXBvbmVudCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnYWRtaW4uY29tcG9uZW50JywNCgkJCQkJJ3ZpZXcnICAgID0+ICdhZG1pbicNCgkJCQkpLA0KCQkJCSdhZGRfc2l0ZV9jb21wb25lbnQnICA9PiBhcnJheSgNCgkJCQkJJ2ZpZWxkJyAgID0+ICdzaXRlX2NvbXBvbmVudCcsDQoJCQkJCSdjb250ZXh0JyA9PiAnc2l0ZS5jb21wb25lbnQnLA0KCQkJCQkndmlldycgICAgPT4gJ3NpdGUnDQoJCQkJKSwNCgkJCQknYWRkX2FkbWluX2hlbHBlcicgICAgPT4gYXJyYXkoDQoJCQkJCSdmaWVsZCcgICA9PiAnYWRtaW5faGVscGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdhZG1pbi5oZWxwZXInLA0KCQkJCQkndmlldycgICAgPT4gJ2FkbWluJw0KCQkJCSksDQoJCQkJJ2FkZF9zaXRlX2hlbHBlcicgICAgID0+IGFycmF5KA0KCQkJCQknZmllbGQnICAgPT4gJ3NpdGVfaGVscGVyJywNCgkJCQkJJ2NvbnRleHQnID0+ICdzaXRlLmhlbHBlcicsDQoJCQkJCSd2aWV3JyAgICA9PiAnc2l0ZScNCgkJCQkpDQoJCQkpDQoJKTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBjaGVjayB0aGF0IHRoZSBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIEFkbWluIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ2FkbWluX3ZpZXdfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIEN1c3RvbSBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuMg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbEN1c3RvbVZpZXdEYXRhKCYkdmlldywgJiRpZCwgJiR0YWJsZSkNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkdmlldy0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgU2l0ZSBWaWV3cw0KCQkJJHRoaXMtPnNldEhlYWRlcnMoJHZpZXctPnBhcmFtcywgJHZpZXcsICdzaXRlX3ZpZXdfaGVhZGVycycpOw0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgQ3VzdG9tIEFkbWluIFZpZXdzDQoJCQkkdGhpcy0+c2V0SGVhZGVycygkdmlldy0+cGFyYW1zLCAkdmlldywgJ2N1c3RvbV9hZG1pbl92aWV3X2hlYWRlcnMnKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBEeW5hbWljIEdldCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjEwDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZU1vZGVsRHluYW1pY0dldERhdGEoJiRkeW5hbWljR2V0LCAmJGlkLCAmJGNvZGUsICYkYXJlYSkNCgl7DQoJCS8vIGNoZWNrIHRoYXQgdGhlIHBhcmFtcyBhcmUgc2V0DQoJCWlmIChpc3NldCgkZHluYW1pY0dldC0+cGFyYW1zKSkNCgkJew0KCQkJLy8gYWRkIHRoZSBoZWFkZXJzIGZvciB0aGUgU2l0ZSBWaWV3cw0KCQkJJHRoaXMtPnNldER5bmFtaWNIZWFkZXJzKCRkeW5hbWljR2V0LT5wYXJhbXMsICRjb2RlLCAnZHluYW1pY19nZXRfaGVhZGVycycpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjQNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxDb21wb25lbnREYXRhKCYkY29tcG9uZW50KQ0KCXsNCgkJLy8gY2hlY2sgdGhhdCB0aGUgcGFyYW1zIGFyZSBzZXQNCgkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIEpvb21sYSBDb21wb25lbnQNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCRjb21wb25lbnQtPnBhcmFtcywgJGNvbXBvbmVudCwgJ2pvb21sYV9jb21wb25lbnRfaGVhZGVycycpOw0KCQl9DQoJCS8vIGNoZWNrIHRoYXQgdGhlIGRhc2hib2FyZCBwYXJhbXMgYXJlIHNldA0KCQlpZiAoaXNzZXQoJGNvbXBvbmVudC0+ZGFzaGJvYXJkX3BhcmFtcykpDQoJCXsNCgkJCS8vIGFkZCB0aGUgaGVhZGVycyBmb3IgdGhlIENvbXBvbmVudCBEYXNoYm9hcmQNCgkJCSR0aGlzLT5zZXRIZWFkZXJzKCRjb21wb25lbnQtPmRhc2hib2FyZF9wYXJhbXMsICRjb21wb25lbnQsICdjb21wb25lbnRfZGFzaGJvYXJkX2hlYWRlcnMnKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIHNldCBDbGFzcyBIZWFkZXJdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX3NldENsYXNzSGVhZGVyKCYkZXZlbnRfY29udGV4dCwgJiR2aWV3X25hbWUsICYkaGVhZGVycykNCgl7DQoJCWlmICgkdGhpcy0+bG9hZEhlYWRlcnMgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV0pDQoJCQkmJiBpc3NldCgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF0pDQoJCQkmJiBpc19hcnJheSgkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZXZlbnRfY29udGV4dF0pKQ0KCQl7DQoJCQkvLyB3b3JrIHdpdGggdGhlIGhlYWRlciB2YWx1ZXMgYXMga2V5cw0KCQkJJF9oZWFkZXJzID0gYXJyYXlfZmxpcCgkaGVhZGVycyk7DQoNCgkJCS8vIG5ldyBoZWFkZXJzDQoJCQkkbmV3ID0gJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGV2ZW50X2NvbnRleHRdOw0KDQoJCQkvLyBub3cgYWRkIHRoZSBuZXcgaGVhZGVycw0KCQkJZm9yZWFjaCAoJG5ldyBhcyAkbiA9PiAkaGVhZGVyKQ0KCQkJew0KCQkJCS8vIGlmIGFuIGVtcHR5IGxpbmUgaXMgZm91bmQganVzdCBza2lwIGl0IA0KCQkJCS8vIHdlIGNoZWNrIGlmIHRoaXMgaGVhZGVyIGlzIGFscmVhZHkgc2V0DQoJCQkJaWYgKGVtcHR5KCRoZWFkZXIpIHx8IGlzc2V0KCRfaGVhZGVyc1skaGVhZGVyXSkpDQoJCQkJew0KCQkJCQljb250aW51ZTsNCgkJCQl9DQoJCQkJJGhlYWRlcnNbXSA9ICRoZWFkZXI7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlR2V0Q29tcG9uZW50RGF0YSgpDQoJew0KCQkvLyBnZXQgcGxhY2Vob2xkZXJzIGZyb20gdGhlIGNvbXBpbGVyDQoJCSR0aGlzLT5wbGFjZWhvbGRlcnMgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21wb25lbnQuUGxhY2Vob2xkZXInKS0+Z2V0KCk7DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXRDb21wb25lbnREYXRhKCkNCgl7DQoJCS8vIGFkZCB0aGUgcG93ZXJzIHRvIHRoZSBjb21wb25lbnQNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5saW5rZWRQb3dlcnMsIHRydWUpKQ0KCQl7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdQb3dlcicpLT5sb2FkKCR0aGlzLT5saW5rZWRQb3dlcnMpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogc2V0IHRoZSBoZWFkZXJzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjAuOA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRIZWFkZXJzKCYkcGFyYW1zLCAmJG9iaiwgJGtleSkNCgl7DQoJCS8vIGFkZCB0aGUgaGVhZGVycw0KCQkkcGFyYW1zID0gKFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCRwYXJhbXMpKSA/IGpzb25fZGVjb2RlKCRwYXJhbXMsIHRydWUpIDogJHBhcmFtczsNCgkJLy8gbWFrZSBzdXJlIHdlIGhhdmUgdGhlIGtleXMgdmFsdWVzIGluIHRoZSBwYXJhbXMgYXJlYQ0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykgJiYgaXNzZXQoJHBhcmFtc1ska2V5XSkNCgkJCSYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJGtleV0pKQ0KCQl7DQoJCQlmb3JlYWNoICgkdGhpcy0+dGFyZ2V0c1ska2V5XSBhcyAkdGFyZ2V0ID0+ICRldmVudCkNCgkJCXsNCgkJCQlpZiAoaXNzZXQoJHBhcmFtc1ska2V5XVskdGFyZ2V0XSkNCgkJCQkJJiYgJHBhcmFtc1ska2V5XVskdGFyZ2V0XSA9PSAxKQ0KCQkJCXsNCgkJCQkJLy8gZ2V0IHRoZSBoZWFkZXIgc3RyaW5nIGlmIHNldA0KCQkJCQkkdGhpcy0+Z2V0SGVhZGVycygNCgkJCQkJCSRwYXJhbXNbJGtleV0sDQoJCQkJCQkkZXZlbnQsDQoJCQkJCQkkdGhpcy0+Z2V0Vmlld05hbWUoDQoJCQkJCQkJJG9iaiwNCgkJCQkJCQkkZXZlbnRbJ3ZpZXcnXQ0KCQkJCQkJKQ0KCQkJCQkpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIHNldCB0aGUgZHluYW1pYyBnZXQgaGVhZGVycw0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjEwDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNldER5bmFtaWNIZWFkZXJzKCRwYXJhbXMsICRjb2RlLCAka2V5KQ0KCXsNCgkJLy8gYWRkIHRoZSBoZWFkZXJzDQoJCSRwYXJhbXMgPSAoU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHBhcmFtcykpID8ganNvbl9kZWNvZGUoJHBhcmFtcywgdHJ1ZSkgOiAkcGFyYW1zOw0KCQkvLyBtYWtlIHN1cmUgd2UgaGF2ZSB0aGUga2V5cyB2YWx1ZXMgaW4gdGhlIHBhcmFtcyBhcmVhDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zKSAmJiBpc3NldCgkcGFyYW1zWyRrZXldKQ0KCQkJJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHBhcmFtc1ska2V5XSkpDQoJCXsNCgkJCWZvcmVhY2ggKCR0aGlzLT50YXJnZXRzWyRrZXldIGFzICR0YXJnZXQgPT4gJGV2ZW50KQ0KCQkJew0KCQkJCWlmIChpc3NldCgkcGFyYW1zWyRrZXldWyR0YXJnZXRdKQ0KCQkJCQkmJiAkcGFyYW1zWyRrZXldWyR0YXJnZXRdID09IDEpDQoJCQkJew0KCQkJCQkvLyBnZXQgdGhlIGhlYWRlciBzdHJpbmcgaWYgc2V0DQoJCQkJCSR0aGlzLT5nZXRIZWFkZXJzKA0KCQkJCQkJJHBhcmFtc1ska2V5XSwNCgkJCQkJCSRldmVudCwNCgkJCQkJCSRjb2RlDQoJCQkJCSk7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBoZWFkZXJzDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGVhZGVycygmJHBhcmFtcywgJiRnZXQsICR2aWV3X25hbWUpDQoJew0KCQkvLyB3ZSBmaXJzdCBjaGVjayBpZiB0aGUgdmFsdWUgaXMgc2V0DQoJCWlmIChpc3NldCgkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSB8fCBpc3NldCgkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0pKQ0KCQl7DQoJCQkvLyBzdGFydCBsaXR0bGUgaGVhZGVycyBidWNrZXQNCgkJCSRoZWFkZXJzID0gW107DQoNCgkJCS8vIGxvYWQgdGhlIGhlYWRlcnMgaWYgcG93ZXINCgkJCWlmIChpc3NldCgkcGFyYW1zWydwb3dlcl8nIC4gJGdldFsnZmllbGQnXV0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwYXJhbXNbJ3Bvd2VyXycgLiAkZ2V0WydmaWVsZCddXSwgdHJ1ZSkNCgkJCQkmJiAoJHBvd2VycyA9ICR0aGlzLT5nZXRQb3dlcnMoJHBhcmFtc1sncG93ZXJfJyAuICRnZXRbJ2ZpZWxkJ11dKSkgIT09IG51bGwpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHBvd2VycyBhcyAkcG93ZXIpDQoJCQkJew0KCQkJCQkkcG93ZXIgPSB0cmltKCRwb3dlcik7DQoJCQkJCSRoZWFkZXJzWyRwb3dlcl0gPSAkcG93ZXI7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBsb2FkIHRoZSBoZWFkZXJzIGlmIHRleHQNCgkJCWlmIChpc3NldCgkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSAmJiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcGFyYW1zWyRnZXRbJ2ZpZWxkJ11dKSkNCgkJCXsNCgkJCQlpZiAoKCRfaGVhZGVycyA9IGV4cGxvZGUoUEhQX0VPTCwgJHBhcmFtc1skZ2V0WydmaWVsZCddXSkpKQ0KCQkJCXsNCgkJCQkJZm9yZWFjaCAoJF9oZWFkZXJzIGFzICRoZWFkZXIpDQoJCQkJCXsNCgkJCQkJCSRoZWFkZXIgPSB0cmltKCRoZWFkZXIpOw0KCQkJCQkJaWYgKGVtcHR5KCRoZWFkZXIpKQ0KCQkJCQkJew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQkJJGhlYWRlcnNbJGhlYWRlcl0gPSAkaGVhZGVyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBjaGVjayBpZiB3ZSBmb3VuZCBzb21lIGhlYWRlciB2YWx1ZXMNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkaGVhZGVycywgdHJ1ZSkpDQoJCQl7DQoJCQkJLy8gYWN0aXZhdGUgdGhlIGxvYWQgb2YgdGhlIGhlYWRlcnMNCgkJCQkkdGhpcy0+bG9hZEhlYWRlcnMgPSB0cnVlOw0KCQkJCS8vIGNoZWNrIGlmIHRoaXMgYWN0aXZlIGhlYWRlciBpcyBhbHJlYWR5IHNldA0KCQkJCWlmICghaXNzZXQoJHRoaXMtPmFjdGl2ZUhlYWRlcnNbJHZpZXdfbmFtZV1bJGdldFsnY29udGV4dCddXSkpDQoJCQkJew0KCQkJCQkvLyBzdGFydCB0aGUgYWN0aXZlIGhlYWRlcg0KCQkJCQkkdGhpcy0+YWN0aXZlSGVhZGVyc1skdmlld19uYW1lXVskZ2V0Wydjb250ZXh0J11dID0gW107DQoJCQkJfQ0KCQkJCS8vIGxvYWQgdGhlIGZvdW5kIGhlYWRlcnMgYW5kIGF2b2lkIGFkZGluZyB0aGUgc2FtZSBoZWFkZXIgdHdpY2UNCgkJCQlmb3JlYWNoICgkaGVhZGVycyBhcyAkaGVhZGVyKQ0KCQkJCXsNCgkJCQkJJGhlYWRlciA9IHRyaW0oJGhlYWRlcik7DQoJCQkJCSR0aGlzLT5hY3RpdmVIZWFkZXJzWyR2aWV3X25hbWVdWyRnZXRbJ2NvbnRleHQnXV1bJGhlYWRlcl0gPSAkaGVhZGVyOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgdmlldyBuYW1lDQoJICoNCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMC44DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdOYW1lKCYkdmlldywgJiRnZXQpDQoJew0KCQlpZiAoJGdldCA9PT0gJ3NpdGUnIHx8ICRnZXQgPT09ICdhZG1pbicgfHwgJGdldCA9PT0gJ2FqYXgnIHx8ICRnZXQgPT09ICdkYXNoYm9hcmQnKQ0KCQl7DQoJCQkvLyBzdGF0aWMga2V5IG5hbWUNCgkJCXJldHVybiAkZ2V0Ow0KCQl9DQoJCWVsc2VpZiAoaXNzZXQoJHZpZXctPnskZ2V0fSkpDQoJCXsNCgkJCXJldHVybiBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKA0KCQkJCSR2aWV3LT57JGdldH0NCgkJCSk7DQoJCX0NCgkJcmV0dXJuICdfZXJyb3InOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgcG93ZXJzIGhlYWRlciB1c2Ugc3RyaW5ncw0KCSAqDQoJICogQHJldHVybiAgYXJyYXl8bnVsbA0KCSAqDQoJICogQHNpbmNlICAgMS4wLjYNCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0UG93ZXJzKCRyb3dzKTogP2FycmF5DQoJew0KCQkvLyBsb2FkIHRoZSBhY3RpdmUgcG93ZXJzDQoJCSRwb3dlcnMgPSBhcnJheV9maWx0ZXIoDQoJCQkvLyBnZXQgdGhlIHBvd2VyIG5hbWVzcGFjZQ0KCQkJYXJyYXlfbWFwKGZ1bmN0aW9uICgkcm93KSB7DQoJCQkJaWYgKCgkcG93ZXIgPSBTdXBlcl9fXzljNTEzYmFmX2IyNzlfNDNmZF9hZTI5X2E1ODVjOGNiYzRmMF9fX1Bvd2VyOjppdGVtKCRyb3dbJ3Bvd2VyJ10sICdwb3dlcicsIFsnYS5ndWlkJywgJ2EubmFtZXNwYWNlJ10pKSAhPT0gbnVsbCkNCgkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCX0NCgkJCQllbHNlaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1N1cGVycG93ZXInKS0+bG9hZCgkcm93Wydwb3dlciddLCAgWydyZW1vdGUnXSkpDQoJCQkJew0KCQkJCQlpZiAoKCRwb3dlciA9IFN1cGVyX19fOWM1MTNiYWZfYjI3OV80M2ZkX2FlMjlfYTU4NWM4Y2JjNGYwX19fUG93ZXI6Oml0ZW0oJHJvd1sncG93ZXInXSwgJ3Bvd2VyJywgWydhLmd1aWQnLCAnYS5uYW1lc3BhY2UnXSkpICE9PSBudWxsKQ0KCQkJCQl7DQoJCQkJCQkkcG93ZXItPmJ1aWxkID0gKGludCkgJHJvd1snYnVpbGQnXTsNCgkJCQkJCSRwb3dlci0+YXMgPSAoc3RyaW5nKSAkcm93WydhcyddOw0KDQoJCQkJCQlyZXR1cm4gJHBvd2VyOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0sICRyb3dzKSwNCgkJCS8vIGNoZWNrIHRoYXQgd2UgaGF2ZSB2YWxpZCBwb3dlcnMNCgkJCWZ1bmN0aW9uICgkcm93KSB7DQoJCQkJcmV0dXJuIGlzX29iamVjdCgkcm93KSAmJiBpc3NldCgkcm93LT5ndWlkKTsNCgkJCX0NCgkJKTsNCgkJLy8gYWRkIHRvIGFjdGl2ZSBwb3dlcnMNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRwb3dlcnMpKQ0KCQl7DQoJCQkvLyBjb252ZXJ0IHRoZSBkb3RzIHRvIG5hbWVzcGFjZQ0KCQkJcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoJHBvd2VyKSB7DQoJCQkJLy8gYWRkIHRvIGNvbXBpbGVyICh0byBidWlsZCkNCgkJCQlpZiAoJHBvd2VyLT5idWlsZCAhPSA2KQ0KCQkJCXsNCgkJCQkJLy8gc2VjdXJlIHRoYXQgYWx3YXlzIHdpbGwgcmVtYWluIGFsd2F5cyBldmVuIGlmIG9ubHkgc2V0IHRoYXQgd2F5IG9uY2UNCgkJCQkJaWYgKGVtcHR5KCR0aGlzLT5saW5rZWRQb3dlcnNbJHBvd2VyLT5ndWlkXSkgfHwgJHBvd2VyLT5idWlsZCA9PSAxKQ0KCQkJCQl7DQoJCQkJCQkkdGhpcy0+bGlua2VkUG93ZXJzWyRwb3dlci0+Z3VpZF0gPSAkcG93ZXItPmJ1aWxkOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCS8vIGJ1aWxkIHRoZSBuYW1lc3BhY2UNCgkJCQkkbmFtZXNwYWNlID0gU3VwZXJfX19jZThjZjgzNF82YmFjXzQ0ZmJfOTQxY184NjFmN2UwNDZjYzBfX19Qb3dlcjo6c2FmZSgNCgkJCQkJc3RyX3JlcGxhY2UoDQoJCQkJCQlhcnJheV9rZXlzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJYXJyYXlfdmFsdWVzKCR0aGlzLT5wbGFjZWhvbGRlcnMpLA0KCQkJCQkJc3RyX3JlcGxhY2UoJy4nLCAnXFwnLCAkcG93ZXItPm5hbWVzcGFjZSkNCgkJCQkJKQ0KCQkJCSk7DQoJCQkJLy8gY2hlY2sgaWYgaXQgaGFzIGFuIEFTIG9wdGlvbg0KCQkJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkcG93ZXItPmFzKSAmJiAkcG93ZXItPmFzICE9PSAnZGVmYXVsdCcpDQoJCQkJew0KCQkJCQlyZXR1cm4gJ3VzZSAnIC4gJG5hbWVzcGFjZSAuICcgYXMgJyAuICRwb3dlci0+YXMgLiAnOyc7DQoJCQkJfQ0KCQkJCXJldHVybiAndXNlICcgLiAkbmFtZXNwYWNlIC4gJzsnOw0KCQkJfSwgJHBvd2Vycyk7DQoJCX0NCg0KCQlyZXR1cm4gbnVsbDsNCgl9', '[[[Component]]] Headers Compiler', '', '', '', '', '', '', '', '4.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Headers Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:36', '2024-08-11 11:39:24', 6, '', 3),
(36, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set the ordring for your component views during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to set your admin views where you would like to use Field Ordering.', '{}', 'abf99084-bcfe-45b2-9b7a-c8621defc69c', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxSZWdpc3RyeVxSZWdpc3RyeTs=', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"}}', 'CS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxWaWV3RGF0YSgmJHZpZXcpDQoJew0KCQkvLyBhZGQgdGhlIHByaXZhY3kNCgkJJHZpZXctPnBhcmFtcyA9IChpc3NldCgkdmlldy0+cGFyYW1zKSAmJiBTdXBlcl9fXzRiMjI1YzUxX2QyOTNfNDhlNF9iM2Y2XzUxMzZjZjVjM2YxOF9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+cGFyYW1zLCB0cnVlKSA6ICR2aWV3LT5wYXJhbXM7DQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+cGFyYW1zKSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ10pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSkpDQoJCXsNCgkJCWlmICgkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9hZG1pbl9vcmRlcmluZyddID09IDENCgkJCQl8fCAkdmlldy0+cGFyYW1zWydmaWVsZG9yZGVyaW5nJ11bJ2FkZF9saW5rZWRfb3JkZXJpbmcnXSA9PSAxKQ0KCQkJew0KCQkJCS8vIHNldHVwIHRoZSB2aWV3IGtleSBuYW1lDQoJCQkJJG5hbWVfbGlzdCAgID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBsb2FkIHRoZSBhZG1pbiB2aWV3IGRldGFpbHMNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLlZpZXdzLkRlZmF1bHQuT3JkZXJpbmcnKS0+c2V0KCRuYW1lX2xpc3QsICR2aWV3LT5wYXJhbXNbJ2ZpZWxkb3JkZXJpbmcnXSk7DQoJCQl9DQoJCX0NCgl9', '[[[Component]]] Field Ordering Compiler', '', '', '', '', '', '', '', '3.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Compiler J5', '', 1, '', '', 1, '2024-03-10 15:54:48', '2024-08-11 11:38:25', 5, '', 3),
(37, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set custom ordering to fields in the JCB list views.', '{\"fields0\":{\"file\":\"admin_view\",\"fields_name\":\"params.fieldordering\",\"fieldset\":\"fieldordering\",\"label\":\"Field Ordering\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2751\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2753\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2749\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2754\",\"custom_value\":\"\"}}}}', 'd0e386d6-02ea-4fd9-a67e-ca369bac88f6', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCg==', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3VyLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBmb3JtLg0KCSAqDQoJICogQHBhcmFtICAgSkZvcm0gICAgICRmb3JtICBUaGUgZm9ybQ0KCSAqIEBwYXJhbSAgIHN0ZENsYXNzICAkZGF0YSAgVGhlIGRhdGENCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlRm9ybShGb3JtICRmb3JtLCAkZGF0YSkNCgl7DQoJCSRjb250ZXh0ID0gJGZvcm0tPmdldE5hbWUoKTsNCg0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKHN0cnBvcygkY29udGV4dCwgJ2NvbV9bW1tjb21wb25lbnRdXV0uYWRtaW5fdmlldycpID09PSAwKQ0KCQl7DQoJCQkvLyBBZGQgdGhlIGZvcm1zIHBhdGgNCgkJCUZvcm06OmFkZEZvcm1QYXRoKF9fRElSX18gLiAnLy4uLy4uL2Zvcm1zJyk7DQoJCQkvLyBhZGQgdGhlIGFkbWluIHZpZXcgcGFyYW1zIGZvciBwcml2YWN5IGludGVncmF0aW9uDQoJCQkkZm9ybS0+bG9hZEZpbGUoJ2FkbWluX3ZpZXcnKTsNCgkJfQ0KDQoJCXJldHVybiB0cnVlOw0KCX0=', '[[[Component]]] Field Ordering Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Field Ordering Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:52', '2024-08-11 11:38:11', 5, '', 2),
(38, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the language packaging and extending options, so you can set all the required details for the integration.', '{\"fields0\":{\"file\":\"joomla_component\",\"fields_name\":\"params.language_options\",\"fieldset\":\"language_options\",\"label\":\"Language Options\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2740\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2746\",\"custom_value\":\"1\"},\"fields3\":{\"field\":\"2745\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2742\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2741\",\"custom_value\":\"\"}}}}', 'c0a2a497-bd72-4524-8c83-713108b4b3ce', 'dXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXEZvcm1cRm9ybTsNCg==', 3, '{\"method_selection0\":{\"method\":\"113\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3VyLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFJ1bnMgb24gY29udGVudCBwcmVwYXJhdGlvbiBvZiBmb3JtLg0KCSAqDQoJICogQHBhcmFtICAgRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgXHN0ZENsYXNzICAkZGF0YSAgVGhlIGRhdGENCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRQcmVwYXJlRm9ybShGb3JtICRmb3JtLCAkZGF0YSkNCgl7DQoJCSRjb250ZXh0ID0gJGZvcm0tPmdldE5hbWUoKTsNCg0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKHN0cnBvcygkY29udGV4dCwgJ2NvbV9bW1tjb21wb25lbnRdXV0uam9vbWxhX2NvbXBvbmVudCcpID09PSAwKQ0KCQl7DQoJCQkvLyBBZGQgdGhlIGZvcm1zIHBhdGgNCgkJCUZvcm06OmFkZEZvcm1QYXRoKF9fRElSX18gLiAnLy4uLy4uL2Zvcm1zJyk7DQoJCQkvLyBhZGQgdGhlIGFkbWluIHZpZXcgcGFyYW1zIGZvciBwcml2YWN5IGludGVncmF0aW9uDQoJCQkkZm9ybS0+bG9hZEZpbGUoJ2pvb21sYV9jb21wb25lbnQnKTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQo=', '[[[Component]]] Language Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Tabs J5', '', 1, '', '', 1, '2024-03-10 15:54:57', '2024-08-11 11:37:49', 5, '', 2),
(39, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to add packaging (bundling of extentions) to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', 'c1e7d932-3fc5-45bc-ba13-28889af29f56', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{}', '', '[[[Component]]] Extention Packaging', '', '', '', '', '', '', '', '2.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'REUSE', '', 1, '', '', 1, '2024-03-10 15:55:00', '2024-03-10 21:20:27', 2, '', 2),
(40, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to add language packaging to JCB. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{}', '0b8a7133-b2ff-4b7b-a5c5-0bbf039f0544', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw0KdXNlIEpvb21sYVxDTVNcRmlsZXN5c3RlbVxGb2xkZXI7DQp1c2UgSm9vbWxhXERhdGFiYXNlXERhdGFiYXNlQXdhcmVUcmFpdDs=', 11, '{\"method_selection0\":{\"method\":\"88\"},\"method_selection1\":{\"method\":\"55\"}}', 'CXVzZSBEYXRhYmFzZUF3YXJlVHJhaXQ7DQoNCgkvKioNCgkgKiBBZmZlY3RzIGNvbnN0cnVjdG9yIGJlaGF2aW91ci4gSWYgdHJ1ZSwgbGFuZ3VhZ2UgZmlsZXMgd2lsbCBiZSBsb2FkZWQgYXV0b21hdGljYWxseS4NCgkgKg0KCSAqIEB2YXIgICAgYm9vbGVhbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRhdXRvbG9hZExhbmd1YWdlID0gdHJ1ZTsNCg0KCS8qKg0KCSAqIFRoZSBwZXJjZW50YWdlIGJlZm9yZSBhIGxhbmd1YWdlIGNhbiBiZSBhZGRlZA0KCSAqIA0KCSAqIEB2YXIgICAgIGludA0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHBlcmNlbnRhZ2VMYW5ndWFnZUFkZDsNCg0KCS8qKg0KCSAqIFRoZSBwZXJjZW50YWdlIGJlZm9yZSBhIGxhbmd1YWdlIGNhbiBiZSBhZGRlZA0KCSAqIA0KCSAqIEB2YXIgICAgIGludA0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUgPSAyMDA7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2VzIG5hbWVzDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRsYW5ndWFnZU5hbWVzID0gW107DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2UgYnVpbGRpbmcgdHJhY2tlcg0KCSAqIA0KCSAqIEB2YXIgICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VUcmFja2VyID0gW107DQoNCgkvKioNCgkgKiBUaGUgc2hvdWxkIHRoZSBzaXRlIGZvbGRlciBiZSByZW1vdmVkDQoJICogDQoJICogQHZhciAgICAgYm9vbA0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHJlbW92ZVNpdGVGb2xkZXI7DQoNCgkvKioNCgkgKiBUaGUgc2hvdWxkIHRoZSBzaXRlIGZvbGRlciBiZSByZW1vdmVkDQoJICogDQoJICogQHZhciAgICAgYm9vbA0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJHJlbW92ZVNpdGVFZGl0Rm9sZGVyOw0KDQoJLyoqDQoJICogVGhlIGNvbXBvbmVudCBwYXRoDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkY29tcG9uZW50UGF0aDsNCg0KCS8qKg0KCSAqIFRoZSBjb21waWxlciBwYXRoDQoJICogDQoJICogQHZhciAgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAkY29tcGlsZXJQYXRoOw0KDQoJLyoqDQoJICogVGhlIHRlbXBvcmFsIHBhdGgNCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICR0ZW1wUGF0aDsNCg0KCS8qKg0KCSAqIFRoZSBqb29tbGEgdmVyc2lvbg0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGpvb21sYVZlcnNpb247DQoNCgkvKioNCgkgKiBUaGUgY29tcG9uZW50IHZlcnNpb24NCgkgKiANCgkgKiBAdmFyICAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRjb21wb25lbnRfdmVyc2lvbjsNCg0KCS8qKg0KCSAqIFRoZSBjb21wb25lbnQgbmFtZQ0KCSAqIA0KCSAqIEB2YXIgICAgIHN0cmluZw0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGNvbXBvbmVudENvZGVOYW1lOw0KDQoJLyoqDQoJICogVGhlIGZpbGUgY29udGVudCBzdGF0aWMgdmFsdWVzDQoJICogDQoJICogQHZhciAgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICRmaWxlQ29udGVudFN0YXRpYzsNCg0KCS8qDQoJICogVGhlIGxpbmUgbnVtYmVycyBTd2l0Y2gNCgkgKiANCgkgKiBAdmFyICAgICAgYm9vbGVhbg0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgJGRlYnVnTGluZW5yID0gZmFsc2U7DQoNCgkvKioNCgkgKiBUaGUgQWN0aXZlIENvbXBvbmVudHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYWN0aXZlQ29tcG9uZW50cyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIEFjdGl2ZSBDb21wb25lbnRzIE5hbWVzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFjdGl2ZUNvbXBvbmVudHNOYW1lcyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIExhbmd1YWdlcw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRsYW5ndWFnZXMgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBMYW5ndWFnZSBidWlsZCBkZXRhaWxzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGJ1aWxkRGV0YWlscyA9IFtdOw0KDQoJLyoqDQoJICogVGhlIEV4Y2x1ZGVkIExhbmd1YWdlcw0KCSAqDQoJICogQHZhciAgICBhcnJheQ0KCSAqIEBzaW5jZSAgMS4wLjANCgkgKi8NCglwcm90ZWN0ZWQgICRleGNsdWRlZExhbmcgPSBbXTsNCg0KCS8qKg0KCSAqIFRoZSBBY3RpdmUgTGFuZ3VhZ2UNCgkgKg0KCSAqIEB2YXIgICAgc3RyaW5nDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGxhbmdUYWc7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlTW9kZWxDb21wb25lbnREYXRhKCYkY29tcG9uZW50KQ0KCXsNCgkJLy8gYWRkIHRoZSBwcml2YWN5DQoJCSRjb21wb25lbnQtPnBhcmFtcyA9IChpc3NldCgkY29tcG9uZW50LT5wYXJhbXMpICYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCRjb21wb25lbnQtPnBhcmFtcykpID8ganNvbl9kZWNvZGUoJGNvbXBvbmVudC0+cGFyYW1zLCB0cnVlKSA6ICRjb21wb25lbnQtPnBhcmFtczsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRjb21wb25lbnQtPnBhcmFtcykgJiYgaXNzZXQoJGNvbXBvbmVudC0+cGFyYW1zWydsYW5ndWFnZV9vcHRpb25zJ10pICYmDQoJCQlpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnYWN0aXZhdGUnXSkgJiYgJGNvbXBvbmVudC0+cGFyYW1zWydsYW5ndWFnZV9vcHRpb25zJ11bJ2FjdGl2YXRlJ10gPT0gMSkNCgkJew0KCQkJLy8gbG9hZCB0aGUgYWRtaW4gY29tcG9uZW50IGRldGFpbHMNCgkJCSR0aGlzLT5hY3RpdmVDb21wb25lbnRzWyRjb21wb25lbnQtPmlkXSA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfY29udGV4dDsNCgkJCSR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGNvbXBvbmVudC0+aWRdID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkY29tcG9uZW50LT5uYW1lX2NvZGUpOw0KCQkJJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNSZWFsTmFtZXNbJGNvbXBvbmVudC0+aWRdID0gJGNvbXBvbmVudC0+bmFtZTsNCgkJCS8vIGFkZCBleGNsdWRlZCBsaXN0IG9mIGxhbmd1YWdlcw0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPnBhcmFtc1snbGFuZ3VhZ2Vfb3B0aW9ucyddWydsYW5ndWFnZXMnXSkpDQoJCQl7DQoJCQkJJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skY29tcG9uZW50LT5pZF0gPSAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsnbGFuZ3VhZ2VzJ107DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHRoaXMtPmV4Y2x1ZGVkTGFuZ1skY29tcG9uZW50LT5pZF0gPSBhcnJheSgpOw0KCQkJfQ0KCQkJLy8gbm93IHNldCB0aGUgY29tcG9uZW50IGFkZCBsYW5ndWFnZXMgaWYgd2Ugc2hvdWxkIHVzZSBsb2NhbCAoMikNCgkJCWlmIChpc3NldCgkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsndXNlX3BlcmNlbnRhZ2VsYW5ndWFnZWFkZCddKSAmJiAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsndXNlX3BlcmNlbnRhZ2VsYW5ndWFnZWFkZCddID09IDIpDQoJCQl7DQoJCQkJJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUgPSAkY29tcG9uZW50LT5wYXJhbXNbJ2xhbmd1YWdlX29wdGlvbnMnXVsncGVyY2VudGFnZWxhbmd1YWdlYWRkJ107DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcG9uZW50X2lkOw0KCQkvLyBjaGVjayBpZiB0aGVyZSBpcyBhY3RpdmUNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5hY3RpdmVDb21wb25lbnRzKQ0KCQkJJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkgJiYgJHRoaXMtPnBlcmNlbnRhZ2VMYW5ndWFnZUFkZE92ZXJpZGUgIT0gMjAwKQ0KCQl7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+c2V0KCdwZXJjZW50YWdlX2xhbmd1YWdlX2FkZCcsICR0aGlzLT5wZXJjZW50YWdlTGFuZ3VhZ2VBZGRPdmVyaWRlKTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBTZXQgTGFuZyBGaWxlIERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQmVmb3JlU2V0TGFuZ0ZpbGVEYXRhKCkNCgl7DQoJCS8vIGxldHMgbWFwIHNvbWUgYXJyYXlzIHRvIHRoZSBwbHVnaW4gZm9yIGxhdGVyIHVzZQ0KCQkkdGhpcy0+Y29tcGlsZXJQYXRoID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBpbGVyX3BhdGg7DQoJCSR0aGlzLT50ZW1wUGF0aCA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT50bXBfcGF0aDsNCgkJJHRoaXMtPmxhbmdUYWcgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+bGFuZ190YWc7DQoJCSR0aGlzLT5kZWJ1Z0xpbmVuciA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5nZXQoJ2RlYnVnX2xpbmVfbnInLCBmYWxzZSk7DQoJCSR0aGlzLT5jb21wb25lbnRfdmVyc2lvbiA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5nZXQoJ2NvbXBvbmVudF92ZXJzaW9uJywgJzEuMC4wJyk7DQoJCSR0aGlzLT5qb29tbGFWZXJzaW9uID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmpvb21sYV92ZXJzaW9uOw0KCQkkdGhpcy0+cGVyY2VudGFnZUxhbmd1YWdlQWRkID0gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnBlcmNlbnRhZ2VfbGFuZ3VhZ2VfYWRkOw0KCQkkdGhpcy0+cmVtb3ZlU2l0ZUZvbGRlciA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5yZW1vdmVfc2l0ZV9mb2xkZXI7DQoJCSR0aGlzLT5yZW1vdmVTaXRlRWRpdEZvbGRlciA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5yZW1vdmVfc2l0ZV9lZGl0X2ZvbGRlcjsNCgkJJHRoaXMtPmNvbXBvbmVudFBhdGggPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdVdGlsaXRpZXMuUGF0aHMnKS0+Y29tcG9uZW50X3BhdGg7DQoJCSR0aGlzLT5jb21wb25lbnRDb2RlTmFtZSA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5jb21wb25lbnRfY29kZV9uYW1lOw0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBCdWlsZCBQbHVnaW4gTGFuZyBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVCdWlsZFBsdWdpbkxhbmdGaWxlcygmJHBsdWdpbikNCgl7DQoJCS8vIGdldCBjb21wb25lbnQgaWQNCgkJJGlkID0gKGludCkgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIHNldCBmaWxlIG5hbWUNCgkJCSRmaWxlX25hbWUgPSAncGxnXycgLiBzdHJ0b2xvd2VyKCRwbHVnaW4tPmdyb3VwKSAuICdfJyAuIHN0cnRvbG93ZXIoJHBsdWdpbi0+Y29kZV9uYW1lKTsNCgkJCS8vIGV4dHJ1ZGUgdGhlIGxhbmd1YWdlcyB0aGF0IHNob3VsZCBub3QgcmVtYWluIGluIHRoZSBwbHVnaW4NCgkJCSR0aGlzLT5leHRydWRlTGFuZ3VhZ2VzKCRpZCwgJ3BsdWdpbnMnLCBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+bGFuZ190YWcsICRmaWxlX25hbWUsICdhZG1pbicpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIEJ1aWxkIE1vZHVsZSBMYW5nIEZpbGVzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZUJ1aWxkTW9kdWxlTGFuZ0ZpbGVzKCYkbW9kdWxlKQ0KCXsNCgkJLy8gZ2V0IGNvbXBvbmVudCBpZA0KCQkkaWQgPSAoaW50KSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Y29tcG9uZW50X2lkOw0KCQkvLyBjaGVjayBpZiB0aGVyZSBpcyBhY3RpdmUNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5hY3RpdmVDb21wb25lbnRzKSAmJiBpc3NldCgkdGhpcy0+YWN0aXZlQ29tcG9uZW50c1skaWRdKSkNCgkJew0KCQkJLy8gZXh0cnVkZSB0aGUgbGFuZ3VhZ2VzIHRoYXQgc2hvdWxkIG5vdCByZW1haW4gaW4gdGhlIG1vZHVsZQ0KCQkJJHRoaXMtPmV4dHJ1ZGVMYW5ndWFnZXMoJGlkLCAnbW9kdWxlcycsIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3RhZywgJG1vZHVsZS0+ZmlsZV9uYW1lLCAkbW9kdWxlLT50YXJnZXRfY2xpZW50KTsNCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEJlZm9yZSBCdWlsZCBBbGwgTGFuZyBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVCdWlsZEFsbExhbmdGaWxlcygkdGFyZ2V0QXJlYSkNCgl7DQoJCS8vIGdldCBjb21wb25lbnQgaWQNCgkJJGlkID0gKGludCkgU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPmNvbXBvbmVudF9pZDsNCgkJLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWN0aXZlDQoJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+YWN0aXZlQ29tcG9uZW50cykgJiYgaXNzZXQoJHRoaXMtPmFjdGl2ZUNvbXBvbmVudHNbJGlkXSkpDQoJCXsNCgkJCS8vIHNldCBmaWxlIG5hbWUNCgkJCSRmaWxlX25hbWUgPSAnY29tXycgLiAkdGhpcy0+YWN0aXZlQ29tcG9uZW50c05hbWVzWyRpZF07DQoJCQkvLyBleHRydWRlIHRoZSBsYW5ndWFnZXMgdGhhdCBzaG91bGQgbm90IHJlbWFpbiBpbiB0aGUgbW9kdWxlDQoJCQkkdGhpcy0+ZXh0cnVkZUxhbmd1YWdlcygkaWQsICR0YXJnZXRBcmVhLCBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+bGFuZ190YWcsICRmaWxlX25hbWUpOw0KCQl9DQoJCS8vIGJ1aWxkIHRoZSBsYW5ndWFnZSBwYWNrYWdlcw0KCQkkdGhpcy0+YnVpbGRMYW5ndWFnZXMoJGlkLCBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+bGFuZ190YWcpOw0KCX0NCg0KCS8qKg0KCSAqIEV4dHJ1ZGVyIG9mIHRoZSBsYW5ndWFnZXMNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBleHRydWRlTGFuZ3VhZ2VzKCYkaWQsICR0YXJnZXRBcmVhLCAkbGFuZ1RhZywgJiRmaWxlX25hbWUsICR0YXJnZXRfY2xpZW50ID0gJ2JvdGgnKQ0KCXsNCgkJJG1haW5MYW5nTG9hZGVyID0gW107DQoJCS8vIGNoZWNrIGlmIHRoaXMgaWQgd2FzIHNldCBiZWZvcmUNCgkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0pKQ0KCQl7DQoJCQkkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0gPSBbXTsNCgkJCSR0aGlzLT5idWlsZERldGFpbHNbJGlkXSA9IFtdOw0KCQl9DQoJCS8vIGNoZWNrIGlmIHRoaXMgZmlsZSBuYW1lIHdhcyBzZXQgYmVmb3JlDQoJCWlmICghaXNzZXQoJHRoaXMtPmxhbmd1YWdlc1skaWRdWyRmaWxlX25hbWVdKSkNCgkJew0KCQkJJHRoaXMtPmxhbmd1YWdlc1skaWRdWyRmaWxlX25hbWVdID0gW107DQoJCX0NCgkJLy8gc2V0IGFsbCB0aGUgZXh0cmEgbGFuZ3VhZ2VzIG5vdCBleGNsdWRlZA0KCQlmb3JlYWNoIChDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5MYW5ndWFnZXMnKS0+Z2V0KCR0YXJnZXRBcmVhKSBhcyAka2V5ID0+ICRsYW5ndWFnZSkNCgkJew0KCQkJaWYgKCRrZXkgIT09ICRsYW5nVGFnICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRsYW5ndWFnZSkgJiYgKCFpc3NldCgkdGhpcy0+ZXhjbHVkZWRMYW5nWyRpZF0pIHx8ICFpbl9hcnJheSgka2V5LCAkdGhpcy0+ZXhjbHVkZWRMYW5nWyRpZF0pKSkNCgkJCXsNCgkJCQkvLyBhZGQgdG8gb3VyIGJ1Y2tldA0KCQkJCSR0aGlzLT5sYW5ndWFnZXNbJGlkXVskZmlsZV9uYW1lXVska2V5XSA9ICRsYW5ndWFnZTsNCgkJCQkvLyByZW1vdmUgZnJvbSB0aGUgSkNCIGJ1aWxkDQoJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuTGFuZ3VhZ2VzJyktPnJlbW92ZSgieyR0YXJnZXRBcmVhfS57JGtleX0iKTsNCgkJCX0NCgkJCS8vIGNvdW50IHRoZSBhcmVhIHN0cmluZ3MNCgkJCWlmICgkbGFuZ1RhZyA9PT0gJGtleSkNCgkJCXsNCgkJCQlmb3JlYWNoICgkbGFuZ3VhZ2UgYXMgJGFyZWEgPT4gJGxhbmd1YWdlU3RyaW5ncykNCgkJCQl7DQoJCQkJCSRtYWluTGFuZ0xvYWRlclskYXJlYV0gPSBjb3VudCgkbGFuZ3VhZ2VTdHJpbmdzKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gc3RvcmUgZGV0YWlscyBmb3IgYnVpbGQNCgkJJHRoaXMtPmJ1aWxkRGV0YWlsc1skaWRdWyRmaWxlX25hbWVdID0gWyRsYW5nVGFnID0+ICRtYWluTGFuZ0xvYWRlciwgJ3RhcmdldF9jbGllbnQnID0+ICR0YXJnZXRfY2xpZW50XTsNCgl9DQoNCgkvKioNCgkgKiBTdGFydCB0aGUgYnVpbGRpbmcgb2YgdGhlIGxhbmd1YWdlcyBwYWNrYWdlcw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gYnVpbGRMYW5ndWFnZXMoJiRpZCwgJGxhbmdUYWcpDQoJew0KCQlpZiAoaXNzZXQoJHRoaXMtPmxhbmd1YWdlc1skaWRdKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0pKQ0KCQl7DQoJCQkvLyByZXN0IHhtbCBhcnJheQ0KCQkJJGxhbmdYTUwgPSBbXTsNCgkJCSRsYW5nTmFtZXMgPSBbXTsNCgkJCSRsYW5nUGFja2FnZXMgPSBbXTsNCgkJCSRsYW5nWklQTmFtZXMgPSBbXTsNCgkJCSRsYW5nWE1MTmFtZXMgPSBbXTsNCgkJCSR2ZXJzaW9uTmFtZSA9ICR0aGlzLT5hY3RpdmVDb21wb25lbnRzTmFtZXNbJGlkXSAuICdfdicgLiBzdHJfcmVwbGFjZSgnLicsICdfJywgJHRoaXMtPmNvbXBvbmVudF92ZXJzaW9uIC4gJ19fSicgLiAkdGhpcy0+am9vbWxhVmVyc2lvbik7DQoJCQlmb3JlYWNoICgkdGhpcy0+bGFuZ3VhZ2VzWyRpZF0gYXMgJGZpbGVfbmFtZSA9PiAkbGFuZ3VhZ2VzKQ0KCQkJew0KCQkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGFuZ3VhZ2VzKSAmJiBpc3NldCgkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV1bJGxhbmdUYWddKSkNCgkJCQl7DQoJCQkJCS8vIGdldCB0aGUgbWFpbiBsYW5nIGxvYWRlcg0KCQkJCQkkbWFpbkxhbmdMb2FkZXIgPSAkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV1bJGxhbmdUYWddOw0KCQkJCQkvLyBnZXQgdGhlIHRhcmdldCBjbGllbnQNCgkJCQkJJHRhcmdldF9jbGllbnQgPSAkdGhpcy0+YnVpbGREZXRhaWxzWyRpZF1bJGZpbGVfbmFtZV1bJ3RhcmdldF9jbGllbnQnXTsNCgkJCQkJZm9yZWFjaCAoJGxhbmd1YWdlcyBhcyAkdGFnID0+ICRhcmVhcykNCgkJCQkJew0KCQkJCQkJLy8gdHJpbSB0aGUgdGFnDQoJCQkJCQkkdGFnID0gdHJpbSgkdGFnKTsNCgkJCQkJCS8vIGdldCBsYW5ndWFnZSBuYW1lDQoJCQkJCQkkbGFuZ05hbWUgPSAkdGhpcy0+Z2V0TGFuZ3VhZ2VOYW1lKCR0YWcpOw0KCQkJCQkJJGxhbmdDb2RlTmFtZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJGxhbmdOYW1lLCAnRicpOw0KCQkJCQkJLy8gc2V0IHRoZSBmaWxlIGZvbGRlciBuYW1lDQoJCQkJCQkkbGFuZ0ZvbGRlckZpbGVOYW1lID0gJGxhbmdDb2RlTmFtZSAuICdfJyAuICR2ZXJzaW9uTmFtZTsNCgkJCQkJCS8vIHNldCB0aGUgbWFpbiBmb2xkZXIgcGF0aA0KCQkJCQkJJG1haW5fcGF0aCA9ICR0aGlzLT5jb21waWxlclBhdGggLiAnLycgLiAkbGFuZ0ZvbGRlckZpbGVOYW1lIC4gJy8nOw0KCQkJCQkJLy8gc2V0IHRoZSBsYW5ndWFnZSBuYW1lIGZvciBsYXRlcg0KCQkJCQkJJGxhbmdOYW1lc1skbWFpbl9wYXRoXSA9ICRsYW5nTmFtZTsNCgkJCQkJCS8vIHNldCB0aGUgbGFuZyB6aXAgbmFtZSBmb3IgbGF0ZXINCgkJCQkJCSRsYW5nWklQTmFtZXNbJG1haW5fcGF0aF0gPSAkbGFuZ0ZvbGRlckZpbGVOYW1lOw0KCQkJCQkJLy8gc2V0IHRoZSBsYW5nIHhtbCBuYW1lIGZvciBsYXRlcg0KCQkJCQkJJGxhbmdYTUxOYW1lc1skbWFpbl9wYXRoXSA9ICRsYW5nQ29kZU5hbWUgLiAnXycgLiAkdGhpcy0+YWN0aXZlQ29tcG9uZW50c05hbWVzWyRpZF0gOw0KCQkJCQkJLy8gd2UgbXVzdCBjaGVjayBpZiBvbGQgZm9sZGVyIGlzIGZvdW5kIGFuZCByZW1vdmUgaXQNCgkJCQkJCWlmICghaXNzZXQoJHRoaXMtPmxhbmd1YWdlVHJhY2tlclskbWFpbl9wYXRoXSkgJiYgRm9sZGVyOjpleGlzdHMoJG1haW5fcGF0aCkpDQoJCQkJCQl7DQoJCQkJCQkJLy8gcmVtb3ZlIHRoZSBtYWluIGZvbGRlcg0KCQkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Gb2xkZXInKS0+cmVtb3ZlKCRtYWluX3BhdGgpOw0KCQkJCQkJCS8vIGRvIG5vdCByZW1vdmUgaXQgYWdhaW4NCgkJCQkJCQkkdGhpcy0+bGFuZ3VhZ2VUcmFja2VyWyRtYWluX3BhdGhdID0gdHJ1ZTsNCgkJCQkJCX0NCgkJCQkJCS8vIGNoZWNrIGlmIGV4aXN0IGFuZCBjcmVhdGUgaWYgbm90DQoJCQkJCQlpZiAoIUZvbGRlcjo6ZXhpc3RzKCRtYWluX3BhdGgpKQ0KCQkJCQkJew0KCQkJCQkJCUZvbGRlcjo6Y3JlYXRlKCRtYWluX3BhdGgpOw0KCQkJCQkJCS8vIGNvdW50IHRoZSBmb2xkZXIgY3JlYXRlZA0KCQkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Db3VudGVyJyktPmZvbGRlcisrOw0KCQkJCQkJfQ0KCQkJCQkJZm9yZWFjaCAoJGFyZWFzIGFzICRhcmVhID0+ICRsYW5ndWFnZVN0cmluZ3MpDQoJCQkJCQl7DQoJCQkJCQkJLy8gZ2V0IHRoZSBmaWxlIG5hbWUNCgkJCQkJCQkkZmlsZU5hbWUgPSAkdGhpcy0+Z2V0TGFuZ3VhZ2VGaWxlTmFtZSgkZmlsZV9uYW1lLCAkdGFnLCAkYXJlYSk7DQoJCQkJCQkJLy8gY2hlY2sgaWYgbGFuZ3VhZ2Ugc2hvdWxkIGJlIGFkZGVkDQoJCQkJCQkJaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0xhbmd1YWdlLlRyYW5zbGF0aW9uJyktPmNoZWNrKCR0YWcsICRsYW5ndWFnZVN0cmluZ3MsICRtYWluTGFuZ0xvYWRlclskYXJlYV0sICRmaWxlTmFtZSkgJiYgKCRhY3Rpb25zID0gJHRoaXMtPmdldExhbmdBY3Rpb25zKCRmaWxlX25hbWUsICR0YWcsICRhcmVhLCAkdGFyZ2V0X2NsaWVudCkpICE9PSBmYWxzZSkNCgkJCQkJCQl7DQoJCQkJCQkJCS8vIHNldCB0aGUgbGFuZ3VhZ2UgZGF0YQ0KCQkJCQkJCQkkbGFuZyA9IGFycmF5X21hcCgNCgkJCQkJCQkJCWZ1bmN0aW9uICgkbGFuZ3N0cmluZywgJHBsYWNlaG9sZGVyKSB7DQoJCQkJCQkJCQkJcmV0dXJuICRwbGFjZWhvbGRlciAuICc9IicgLiAkbGFuZ3N0cmluZyAuICciJzsNCgkJCQkJCQkJCX0sIGFycmF5X3ZhbHVlcygkbGFuZ3VhZ2VTdHJpbmdzKSwNCgkJCQkJCQkJCWFycmF5X2tleXMoJGxhbmd1YWdlU3RyaW5ncykNCgkJCQkJCQkJKTsNCgkJCQkJCQkJLy8gc2V0IHRoZSBsaW5lIGNvdW50ZXINCgkJCQkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+bGluZSArPSBjb3VudCgNCgkJCQkJCQkJCShhcnJheSkgJGxhbmcNCgkJCQkJCQkJKTsNCgkJCQkJCQkJLy8gY2hlY2sgdGhhdCB0aGUgbWFpbiBmb2xkZXIgZXhpc3QNCgkJCQkJCQkJZm9yZWFjaCAoJGFjdGlvbnMgYXMgJGFjdCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJJGNsaWVudF9wYXRoID0gJG1haW5fcGF0aCAuICRhY3RbJ3RhcmdldF9jbGllbnQnXSAuICcvJzsNCgkJCQkJCQkJCS8vIGNoZWNrIGlmIGV4aXN0IGFuZCBjcmVhdGUgaWYgbm90DQoJCQkJCQkJCQlpZiAoIUZvbGRlcjo6ZXhpc3RzKCRjbGllbnRfcGF0aCkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJRm9sZGVyOjpjcmVhdGUoJGNsaWVudF9wYXRoKTsNCgkJCQkJCQkJCQkvLyBjb3VudCB0aGUgZm9sZGVyIGNyZWF0ZWQNCgkJCQkJCQkJCQkkdGhpcy0+Zm9sZGVyQ291bnQrKzsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCS8vIHdyaXRlIHRoZSBsYW5ndWFnZSBkYXRhIHRvIGEgZmlsZQ0KCQkJCQkJCQkJU3VwZXJfX19hMjIzYjMxZV9lYTFkXzRjZGZfOTJhZV81ZjliZWNmZmFmZjBfX19Qb3dlcjo6d3JpdGUoDQoJCQkJCQkJCQkJJGNsaWVudF9wYXRoIC4gJGFjdFsnZmlsZV9uYW1lJ10sIGltcGxvZGUoUEhQX0VPTCwgJGxhbmcpDQoJCQkJCQkJCQkpOw0KCQkJCQkJCQkJLy8gY291bnQgdGhlIGZpbGUgY3JlYXRlZA0KCQkJCQkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnVXRpbGl0aWVzLkNvdW50ZXInKS0+bGluZSsrOw0KCQkJCQkJCQkJLy8gYnVpbGQgeG1sIHN0cmluZ3MNCgkJCQkJCQkJCWlmICghaXNzZXQoJGxhbmdYTUxbJG1haW5fcGF0aF0pKQ0KCQkJCQkJCQkJew0KCQkJCQkJCQkJCSRsYW5nWE1MWyRtYWluX3BhdGhdID0gYXJyYXkoKTsNCgkJCQkJCQkJCQkkbGFuZ1BhY2thZ2VzWyRtYWluX3BhdGhdID0gYXJyYXkoKTsNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWlmICghaXNzZXQoJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSkpDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJJGxhbmdYTUxbJG1haW5fcGF0aF1bJGFjdFsndGFyZ2V0X2NsaWVudCddXSA9IGFycmF5KCk7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCQkvLyBzZXQgdGhlIHBhY2thZ2UgdGFyZ2V0cw0KCQkJCQkJCQkJJGxhbmdQYWNrYWdlc1skbWFpbl9wYXRoXVskYWN0Wyd0YXJnZXRfY2xpZW50J11dID0gJGFjdFsndGFyZ2V0J107DQoJCQkJCQkJCQkkbGFuZ1hNTFskbWFpbl9wYXRoXVskYWN0Wyd0YXJnZXRfY2xpZW50J11dW10gPSAkYWN0WydmaWxlX25hbWUnXTsNCgkJCQkJCQkJfQ0KCQkJCQkJCQkvLyBjbGVhciBtZW1vcnkNCgkJCQkJCQkJdW5zZXQoJGxhbmcpOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gbG9hZCB0aGUgbGFuZyB4bWwNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkbGFuZ1hNTCkpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGxhbmdYTUwgYXMgJG1haW5fcGF0aCA9PiAkdGFyZ2V0X2NsaWVudHMpDQoJCQkJew0KCQkJCQkvLyBnZXQgdGhlIFhNTA0KCQkJCQkkeG1sID0gc3RyX3JlcGxhY2UoDQoJCQkJCQkJYXJyYXlfa2V5cyhTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbnRlbnQuT25lJyktPmFsbEFjdGl2ZSgpKSwNCgkJCQkJCQlhcnJheV92YWx1ZXMoU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hbGxBY3RpdmUoKSksDQoJCQkJCQkJJHRoaXMtPmdldExhbmd1YWdlWE1MKCR0YXJnZXRfY2xpZW50cywgJGxhbmdQYWNrYWdlc1skbWFpbl9wYXRoXSwgJGxhbmdOYW1lc1skbWFpbl9wYXRoXSkNCgkJCQkJCSk7DQoJCQkJCS8vIGdldCB0aGUgWE1MIEZpbGUgTmFtZQ0KCQkJCQkkeG1sRmlsZU5hbWUgPSAkbGFuZ1hNTE5hbWVzWyRtYWluX3BhdGhdIC4gJy54bWwnOw0KCQkJCQkvLyB3cml0ZSB0aGUgbGFuZ3VhZ2UgZGF0YSB0byBhIGZpbGUNCgkJCQkJU3VwZXJfX19hMjIzYjMxZV9lYTFkXzRjZGZfOTJhZV81ZjliZWNmZmFmZjBfX19Qb3dlcjo6d3JpdGUoDQoJCQkJCQkkbWFpbl9wYXRoIC4gJHhtbEZpbGVOYW1lLCAkeG1sDQoJCQkJCSk7DQoJCQkJCS8vIHNldCB0aGUgemlwIGZ1bGwgcGF0aA0KCQkJCQkkemlwUGF0aCA9ICR0aGlzLT50ZW1wUGF0aCAuICcvJyAuICRsYW5nWklQTmFtZXNbJG1haW5fcGF0aF0gLiAnLnppcCc7DQoJCQkJCS8vIG5vdyB6aXAgdGhlIHBhY2thZ2UNCgkJCQkJaWYgKFN1cGVyX19fYTIyM2IzMWVfZWExZF80Y2RmXzkyYWVfNWY5YmVjZmZhZmYwX19fUG93ZXI6OnppcCgNCgkJCQkJCSRtYWluX3BhdGgsICR6aXBQYXRoDQoJCQkJCSkpDQoJCQkJCXsNCgkJCQkJCS8vIG5vdyByZW1vdmUgdGhlIHBhY2thZ2UNCgkJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ1V0aWxpdGllcy5Gb2xkZXInKS0+cmVtb3ZlKCRtYWluX3BhdGgpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSB4bWwNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VYTUwoJiR0YXJnZXRfY2xpZW50cywgJiR0YXJnZXRzLCAmJGxhbmd1YWdlKQ0KCXsNCgkJJHhtbCA9ICc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuICc8ZXh0ZW5zaW9uIHR5cGU9ImZpbGUiIHZlcnNpb249IjMuMiIgbWV0aG9kPSJ1cGdyYWRlIj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxuYW1lPicgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnQ29tcG9uZW50JykgLiAnIC0gJyAuICRsYW5ndWFnZSAuICcgTGFuZ3VhZ2UgUGFjazwvbmFtZT4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxjcmVhdGlvbkRhdGU+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdCVUlMRERBVEUnKSAuICc8L2NyZWF0aW9uRGF0ZT4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxhdXRob3I+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdBVVRIT1InKSAuICc8L2F1dGhvcj4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxhdXRob3JFbWFpbD4nIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ0FVVEhPUkVNQUlMJykgLiAnPC9hdXRob3JFbWFpbD4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzxhdXRob3JVcmw+JyAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol9oKCdBVVRIT1JXRUJTSVRFJykgLiAnPC9hdXRob3JVcmw+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8Y29weXJpZ2h0PicgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnQ09QWVJJR0hUJykgLiAnPC9jb3B5cmlnaHQ+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8bGljZW5zZT4nIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ0xJQ0VOU0UnKSAuICc8L2xpY2Vuc2U+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8dmVyc2lvbj4nIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6X2goJ0FDVFVBTFZFUlNJT04nKSAuICc8L3ZlcnNpb24+JzsNCgkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICc8ZGVzY3JpcHRpb24+JyAuICRsYW5ndWFnZSAuICcgTGFuZ3VhZ2UgUGFjayAtICcgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfaCgnU0hPUlRfREVTQ1JJUFRJT04nKSAuICc8L2Rlc2NyaXB0aW9uPic7DQoJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAnPGZpbGVzZXQ+JzsNCgkJZm9yZWFjaCAoJHRhcmdldF9jbGllbnRzIGFzICR0YXJnZXRfY2xpZW50ID0+ICRmaWxlcykNCgkJew0KCQkJJHhtbCAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICc8ZmlsZXMgZm9sZGVyPSInIC4gJHRhcmdldF9jbGllbnQgLiAnIiB0YXJnZXQ9IicgLiAkdGFyZ2V0c1skdGFyZ2V0X2NsaWVudF0gLiAnIj4nOw0KCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKQ0KCQkJew0KCQkJCSR4bWwgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAnPGZpbGVuYW1lPicgLiAkZmlsZSAuICc8L2ZpbGVuYW1lPic7DQoJCQl9DQoJCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gJzwvZmlsZXM+JzsNCgkJfQ0KCQkkeG1sIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gJzwvZmlsZXNldD4nOw0KCQkkeG1sIC49IFBIUF9FT0wgLiAnPC9leHRlbnNpb24+JzsNCg0KCQlyZXR1cm4gJHhtbDsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGxhbmd1YWdlIG5hbWUNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VOYW1lKCYkdGFnKQ0KCXsNCgkJaWYgKCFpc3NldCgkdGhpcy0+bGFuZ3VhZ2VOYW1lc1skdGFnXSkpDQoJCXsNCgkJCWlmICgoJG5hbWUgPSBTdXBlcl9fX2RiODdjMzM5XzViYjZfNDI5MV9hN2VmXzJjNDhlYTFiMDZiY19fX1Bvd2VyOjp2YXIoJ2xhbmd1YWdlJywgJHRhZywgJ2xhbmd0YWcnLCAnbmFtZScpKSAhPT0gZmFsc2UpDQoJCQl7DQoJCQkJJHRoaXMtPmxhbmd1YWdlTmFtZXNbJHRhZ10gPSAkbmFtZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+bGFuZ3VhZ2VOYW1lc1skdGFnXSA9ICR0YWc7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICR0aGlzLT5sYW5ndWFnZU5hbWVzWyR0YWddOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgbGFuZ3VhZ2UgYWN0aW9ucw0KCSAqIA0KCSAqIEByZXR1cm4gIGFycmF5DQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhbmdBY3Rpb25zKCYkZmlsZV9uYW1lLCAmJHRhZywgJiRhcmVhLCAmJHRhcmdldF9jbGllbnQpDQoJew0KCQkvLyBjb21wb25lbnQgZXh0ZW50aW9uIHR5cGUNCgkJaWYgKHN0cnBvcygkZmlsZV9uYW1lLCAnY29tXycpICE9PSBmYWxzZSkNCgkJew0KCQkJJHRhcmdldF9jbGllbnQgPSAnYWRtaW4nOw0KCQkJJHRhcmdldCA9ICdhZG1pbmlzdHJhdG9yL2xhbmd1YWdlLyc7DQoJCQlpZiAoc3RycG9zKCRhcmVhLCAnc2l0ZScpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdGFyZ2V0X2NsaWVudCA9ICdzaXRlJzsNCgkJCQkkdGFyZ2V0ID0gJ2xhbmd1YWdlLyc7DQoJCQl9DQoJCQlyZXR1cm4gYXJyYXkoDQoJCQkJYXJyYXkoDQoJCQkJCSd0YXJnZXRfY2xpZW50JyA9PiAkdGFyZ2V0X2NsaWVudCwNCgkJCQkJJ3RhcmdldCcgPT4gJHRhcmdldCAuICR0YWcsDQoJCQkJCSdmaWxlX25hbWUnID0+ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhKQ0KCQkJCSkNCgkJCSk7DQoJCX0NCgkJZWxzZWlmICgnYWRtaW4nID09PSAkdGFyZ2V0X2NsaWVudCkNCgkJew0KCQkJJHRhcmdldCA9ICdhZG1pbmlzdHJhdG9yL2xhbmd1YWdlLyc7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkkdGFyZ2V0ID0gJ2xhbmd1YWdlLyc7DQoJCX0NCgkJLy8gbW9kdWxlL3BsdWdpbiBleHRlbnNpb24gdHlwZSAoVE9ETyB3ZSByZXR1cm4gYm90aCBmb3Igbm93KQ0KCQlyZXR1cm4gYXJyYXkoDQoJCQlhcnJheSgNCgkJCQkndGFyZ2V0X2NsaWVudCcgPT4gJHRhcmdldF9jbGllbnQsDQoJCQkJJ3RhcmdldCcgPT4gJHRhcmdldCAuICR0YWcsDQoJCQkJJ2ZpbGVfbmFtZScgPT4gJHRoaXMtPmdldExhbmd1YWdlRmlsZU5hbWUoJGZpbGVfbmFtZSwgJHRhZywgJGFyZWEpDQoJCQkpLA0KCQkJYXJyYXkoDQoJCQkJJ3RhcmdldF9jbGllbnQnID0+ICR0YXJnZXRfY2xpZW50LA0KCQkJCSd0YXJnZXQnID0+ICR0YXJnZXQgLiAkdGFnLA0KCQkJCSdmaWxlX25hbWUnID0+ICR0aGlzLT5nZXRMYW5ndWFnZUZpbGVOYW1lKCRmaWxlX25hbWUsICR0YWcsICRhcmVhLCAnLnN5cycpDQoJCQkpDQoJCSk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBsYW5ndWFnZSBmaWxlIG5hbWUNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFuZ3VhZ2VGaWxlTmFtZSgmJGZpbGVfbmFtZSwgJiR0YWcsICYkYXJlYSwgJHR5cGUgPSAnJykNCgl7DQoJCS8vIGNvbXBvbmVudCBleHRlbnNpb24gdHlwZQ0KCQlpZiAoc3RycG9zKCRmaWxlX25hbWUsICdjb21fJykgIT09IGZhbHNlKQ0KCQl7DQoJCQlpZiAoc3RycG9zKCRhcmVhLCAnc3lzJykgIT09IGZhbHNlKQ0KCQkJew0KCQkJCSR0eXBlID0gJy5zeXMnOw0KCQkJfQ0KCQl9DQoJCS8vIGZpbGUgbmFtZQ0KCQlyZXR1cm4gJHRhZyAuICcuJyAuICRmaWxlX25hbWUgLiAkdHlwZSAuICcuaW5pJzsNCgl9DQoNCgkvKioNCgkgKiBjaGVjayBpZiBhIHRyYW5zbGF0aW9uIHNob3VsZCBiZSBhZGRlZA0KCSAqIA0KCSAqIEByZXR1cm4gIGJvb2wNCgkgKiBAZGVwcmVjYXRlZCAzLjQgVXNlIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0xhbmd1YWdlLlRyYW5zbGF0aW9uJyktPmNoZWNrKC4uLik7DQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHNob3VsZExhbmd1YWdlQmVBZGRlZCgmJHRhZywgJiRsYW5ndWFnZVN0cmluZ3MsICYkdG90YWwsICYkZmlsZV9uYW1lKQ0KCXsNCgkJLy8gb25seSBsb2cgbWVzc2FnZXMgZm9yIG5vbmUgJHRoaXMtPmxhbmdUYWcgdHJhbnNsYXRpb25zDQoJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0xhbmd1YWdlLlRyYW5zbGF0aW9uJyktPmNoZWNrKA0KCQkJJHRhZywgJGxhbmd1YWdlU3RyaW5ncywgJHRvdGFsLCAkZmlsZV9uYW1lDQoJCSk7DQoJfQ==', '[[[Component]]] Language Packaging', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection2\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Language Packaging J5', '', 1, '', '', 1, '2024-03-10 15:55:07', '2024-08-12 07:56:43', 6, '', 2),
(41, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to improve your action log integration with Joomla for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"activate\",\"label\":\"Component Activation\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"}}}}', '3d324afb-3de8-40cb-868d-7b59ad50aeda', 'IyMjUE9XRVJfQVVUT0xPQURFUiMjIw0KDQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxGYWN0b3J5IGFzIENGYWN0b3J5Ow0KdXNlIFZETVxKb29tbGFcQ29tcG9uZW50YnVpbGRlclxDb21waWxlclxVdGlsaXRpZXNcUGxhY2VmaXg7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xJbmRlbnQ7DQp1c2UgVkRNXEpvb21sYVxDb21wb25lbnRidWlsZGVyXENvbXBpbGVyXFV0aWxpdGllc1xMaW5lOw==', 11, '{\"method_selection0\":{\"method\":\"59\"},\"method_selection1\":{\"method\":\"120\"},\"method_selection2\":{\"method\":\"79\"},\"method_selection3\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogVGhlIFNjcmlwdHMNCgkgKiANCgkgKiBAdmFyICAgYXJyYXkNCgkgKi8NCglwcm90ZWN0ZWQgJHNjcmlwdHNBcnJheSA9IFsnUE9TVElOU1RBTExTQ1JJUFQnID0+IFtdLCAnUE9TVFVQREFURVNDUklQVCcgPT4gW10sICdVTklOU1RBTExTQ1JJUFQnID0+IFtdXTsNCg0KCS8qKg0KCSAqIEV2ZW50IFRyaWdnZXJlZCBpbiB0aGUgY29tcGlsZXIgW29uIEFmdGVyIEdldCBDb21wb25lbnQgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25BZnRlckdldENvbXBvbmVudERhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+bGFuZ3VhZ2VBcnJheSkpDQoJCXsNCgkJCWZvcmVhY2goJHRoaXMtPmxhbmd1YWdlQXJyYXkgYXMgJGtleSA9PiAkc3RyaW5nKQ0KCQkJew0KCQkJCUNGYWN0b3J5OjpfKCdMYW5ndWFnZScpLT5zZXQoJ2FkbWluJywgJGtleSwgJHN0cmluZyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBCdWlsZCBGaWxlcyBDb250ZW50XQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyQnVpbGRGaWxlc0NvbnRlbnQoKQ0KCXsNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJJGZ1bmN0aW9uX25hbWUgPSAnZ2V0TWFpbkozJzsNCgkJCWlmIChDRmFjdG9yeTo6XygnQ29uZmlnJyktPmdldCgnam9vbWxhX3ZlcnNpb24nLCAzKSAhPSAzKQ0KCQkJew0KCQkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldE1haW5KNCc7DQoJCQl9DQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MgdG8gdGhlICBjb21wb25lbnQNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkvLyBhZGQgdGhlIGNvbXBvbmVudCBtYWluIHRhcmdldCBzY3JpcHQNCgkJCQlDRmFjdG9yeTo6XygnQ29tcGlsZXIuQnVpbGRlci5Db250ZW50Lk9uZScpLT5hZGQoJHRhcmdldCwgJHRoaXMtPnskZnVuY3Rpb25fbmFtZSAuICR0YXJnZXR9KCkpOw0KCQkJCS8vIGFkZCB0aGUgY29tcG9uZW50IHZpZXdzIHRhcmdldCBzY3JpcHRzDQoJCQkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRidWNrZXQpKQ0KCQkJCXsNCgkJCQkJQ0ZhY3Rvcnk6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCR0YXJnZXQsIGltcGxvZGUoJycsICRidWNrZXQpKTsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBNb2RlbCBWaWV3IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgYmV0dGVyIGludGVncmF0aW9uIHdpdGggYWN0aW9uIGxvZw0KCQlpZiAoJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmZpZWxkcykpDQoJCXsNCgkJCWZvcmVhY2ggKCR2aWV3LT5maWVsZHMgYXMgJGZpZWxkKQ0KCQkJew0KCQkJCWlmIChpc3NldCgkZmllbGRbJ3RpdGxlJ10pICYmICRmaWVsZFsndGl0bGUnXSA9PSAxKQ0KCQkJCXsNCgkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGlmIG5vdCBmb3VuZCB0cnkgYWdhaW4NCgkJCWlmICghaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJHZpZXctPmZpZWxkcyBhcyAkZmllbGQpDQoJCQkJew0KCQkJCQlpZiAoaXNzZXQoJGZpZWxkWydsaXN0J10pICYmICRmaWVsZFsnbGlzdCddID09IDEgJiYNCgkJCQkJCWlzc2V0KCRmaWVsZFsnb3JkZXJfbGlzdCddKSAmJiAkZmllbGRbJ29yZGVyX2xpc3QnXSA9PSAxICYmDQoJCQkJCQlpc3NldCgkZmllbGRbJ2xpbmsnXSkgJiYgJGZpZWxkWydsaW5rJ10gPT0gMSkNCgkJCQkJew0KCQkJCQkJJHRpdGxlX2hvbGRlciA9ICRmaWVsZFsnYmFzZV9uYW1lJ107DQoJCQkJCQlicmVhazsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gaWYgZm91bmQgdXBkYXRlIHBsYWNlaG9sZGVyDQoJCQlpZiAoaXNzZXQoJHRpdGxlX2hvbGRlcikpDQoJCQl7DQoJCQkJLy8gc2V0IG1haW4gdGl0bGUNCgkJCQlDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+c2V0KCc8PDxNQUlOX1RJVExFPj4+JywgJHRpdGxlX2hvbGRlciwgZmFsc2UpOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIGZhbGwgYmFjayBvbiBJRA0KCQkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5zZXQoJzw8PE1BSU5fVElUTEU+Pj4nLCAnaWQnLCBmYWxzZSk7DQoJCQl9DQoNCgkJCSRmdW5jdGlvbl9uYW1lID0gJ2dldFZpZXdKMyc7DQoJCQlpZiAoQ0ZhY3Rvcnk6Ol8oJ0NvbmZpZycpLT5nZXQoJ2pvb21sYV92ZXJzaW9uJywgMykgIT0gMykNCgkJCXsNCgkJCQkkZnVuY3Rpb25fbmFtZSA9ICdnZXRWaWV3SjQnOw0KCQkJfQ0KDQoJCQkvLyBub3cgbG9hZCB0aGUgc2NyaXB0IHN0cmluZ3MNCgkJCWZvcmVhY2ggKCR0aGlzLT5zY3JpcHRzQXJyYXkgYXMgJHRhcmdldCA9PiAmJGJ1Y2tldCkNCgkJCXsNCgkJCQkkYnVja2V0W10gPSAkdGhpcy0+eyRmdW5jdGlvbl9uYW1lIC4gJHRhcmdldH0oKTsNCgkJCX0NCg0KCQkJLy8ganVzdCByZW1vdmUgaXQgYWdhaW4NCgkJCUNGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5yZW1vdmUoJzw8PE1BSU5fVElUTEU+Pj4nKTsNCg0KCQkJLy8gc2V0IGxhbmd1YWdlIHN0cmluZw0KCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPmdldF8oIkxBTkdfUFJFRklYIikgLiAnX1RZUEVfJyAuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT5nZXRfKCJWSUVXIildID0gJHZpZXctPm5hbWVfc2luZ2xlOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFBvc3QgSW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVElOU1RBTExTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCBkYiBpZiBub3Qgc2V0IGFscmVhZHkuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmICghaXNzZXQoXCRkYikpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCRkYiA9IEZhY3Rvcnk6OmdldERibygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ3JlYXRlIHRoZSAiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIiBhY3Rpb24gbG9ncyBleHRlbnNpb25zIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gbmV3IFxzdGRDbGFzcygpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMtPmV4dGVuc2lvbiA9ICdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9ncyBleHRlbnNpb25zIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKM1BPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgdGhlIG9iamVjdCBpbnRvIHRoZSBhY3Rpb24gbG9nIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgTWFpbiBQb3N0IFVwZGF0ZSBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozUE9TVFVQREFURVNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgU2V0IGRiIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiaWYgKCFpc3NldChcJGRiKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIn0iOw0KDQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgdGhlICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIic7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmICIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiIGFjdGlvbiBsb2cgZXh0ZW5zaW9uIGlzIGFscmVhZHkgaW4gYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyBEQi4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeSA9IFwkZGItPmdldFF1ZXJ5KHRydWUpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5zZWxlY3QoXCRkYi0+cXVvdGVOYW1lKGFycmF5KCdpZCcpKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX19hY3Rpb25fbG9nc19leHRlbnNpb25zJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2V4dGVuc2lvbicpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucy0+ZXh0ZW5zaW9uKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUgaWYgbm90IGZvdW5kLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIVwkZGItPmdldE51bVJvd3MoKSkiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAieyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnNfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnLCBcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjNQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSB0aGUgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIG9iamVjdC4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcgPSBuZXcgXHN0ZENsYXNzKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT5pZCA9IG51bGw7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX3RpdGxlID0gJyIgLiBQbGFjZWZpeDo6XygiVklFVyIpIC4gIic7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzID0gJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZy0+aWRfaG9sZGVyID0gJ2lkJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRpdGxlX2hvbGRlciA9ICc8PDxNQUlOX1RJVExFPj4+JzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRhYmxlX25hbWUgPSAnI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJzsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPnRleHRfcHJlZml4ID0gJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuICBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIGFjdGlvbiBsb2cgY29uZmlnIGlzIGFscmVhZHkgaW4gYWN0aW9uX2xvZ19jb25maWcgREIuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRxdWVyeS0+c2VsZWN0KFwkZGItPnF1b3RlTmFtZShhcnJheSgnaWQnKSkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHF1ZXJ5LT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgndHlwZV9hbGlhcycpIC4gJyBMSUtFICcuIFwkZGItPnF1b3RlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLT50eXBlX2FsaWFzKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJGRiLT5leGVjdXRlKCk7IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFNldCB0aGUgb2JqZWN0IGludG8gdGhlIGNvbnRlbnQgdHlwZXMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gImlmIChcJGRiLT5nZXROdW1Sb3dzKCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWctPmlkID0gXCRkYi0+bG9hZFJlc3VsdCgpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19VcGRhdGVkID0gXCRkYi0+dXBkYXRlT2JqZWN0KCcjX19hY3Rpb25fbG9nX2NvbmZpZycsIFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnLCAnaWQnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJlbHNlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWdfSW5zZXJ0ZWQgPSBcJGRiLT5pbnNlcnRPYmplY3QoJyNfX2FjdGlvbl9sb2dfY29uZmlnJywgXCQiIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICJfYWN0aW9uX2xvZ19jb25maWcpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbkozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiIGZyb20gdGhlIGFjdGlvbl9sb2dzX2V4dGVuc2lvbnMgdGFibGUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCQiIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIl9hY3Rpb25fbG9nc19leHRlbnNpb25zID0gYXJyYXkoIFwkZGItPnF1b3RlTmFtZSgnZXh0ZW5zaW9uJykgLiAnID0gJyAuIFwkZGItPnF1b3RlKCdjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICInKSApOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDcmVhdGUgYSBuZXcgcXVlcnkgb2JqZWN0LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPmRlbGV0ZShcJGRiLT5xdW90ZU5hbWUoJyNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnMnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfYWN0aW9uX2xvZ3NfZXh0ZW5zaW9ucyk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpOyI7DQoNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIkNvbXBvbmVudCIpIC4gIiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiX3JlbW92ZWRfZG9uZSA9IFwkZGItPmV4ZWN1dGUoKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKFwkIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfcmVtb3ZlZF9kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmUgIiAuIFBsYWNlZml4OjpfKCJDb21wb25lbnQiKSAuICIgYWRkIHF1ZXVlZCBzdWNjZXNzIG1lc3NhZ2UuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkYXBwLT5lbnF1ZXVlTWVzc2FnZShUZSIgLiAieHQ6Ol8oJ1RoZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIgZXh0ZW5zaW9uIHdhcyByZW1vdmVkIGZyb20gdGhlIDxiPiNfX2FjdGlvbl9sb2dzX2V4dGVuc2lvbnM8L2I+IHRhYmxlJykpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Vmlld0ozVU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgZGIgaWYgbm90IHNldCBhbHJlYWR5LiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJpZiAoIWlzc2V0KFwkZGIpKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAifSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBTZXQgYXBwIGlmIG5vdCBzZXQgYWxyZWFkeS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiaWYgKCFpc3NldChcJGFwcCkpIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gInsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOyI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ9IjsNCg0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgUmVtb3ZlICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBmcm9tIHRoZSBhY3Rpb25fbG9nX2NvbmZpZyB0YWJsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZyA9IGFycmF5KCBcJGRiLT5xdW90ZU5hbWUoJ3R5cGVfYWxpYXMnKSAuICcgPSAnLiBcJGRiLT5xdW90ZSgnY29tXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpICk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENyZWF0ZSBhIG5ldyBxdWVyeSBvYmplY3QuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRxdWVyeS0+ZGVsZXRlKFwkZGItPnF1b3RlTmFtZSgnI19fYWN0aW9uX2xvZ19jb25maWcnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnKTsiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4ZWN1dGUgdGhlIHF1ZXJ5IHRvIHJlbW92ZSBjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiX2FjdGlvbl9sb2dfY29uZmlnX2RvbmUgPSBcJGRiLT5leGVjdXRlKCk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gImlmIChcJCIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIl9hY3Rpb25fbG9nX2NvbmZpZ19kb25lKSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICJ7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIElmIHN1Y2Nlc3NmdWxseSByZW1vdmVkICIgLiBQbGFjZWZpeDo6XygiQ29tcG9uZW50IikgLiAiICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiBhZGQgcXVldWVkIHN1Y2Nlc3MgbWVzc2FnZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCRhcHAtPmVucXVldWVNZXNzYWdlKFRlIiAuICJ4dDo6XygnVGhlIGNvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICIgdHlwZSBhbGlhcyB3YXMgcmVtb3ZlZCBmcm9tIHRoZSA8Yj4jX19hY3Rpb25fbG9nX2NvbmZpZzwvYj4gdGFibGUnKSk7IjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIn0iOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBJbnN0YWxsIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRNYWluSjRQT1NUSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIEFkZCBjb21wb25lbnQgdG8gdGhlIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIlwkdGhpcy0+c2V0QWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBQb3N0IEluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFBPU1RJTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkICIgLiBQbGFjZWZpeDo6XygiVmlldyIpIC4gIiB0byB0aGUgYWN0aW9uIGxvZ3MgY29uZmlnIHRhYmxlLiI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICJcJHRoaXMtPnNldEFjdGlvbkxvZ0NvbmZpZygiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZVRpdGxlIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIiciIC4gUGxhY2VmaXg6Ol8oIlZJRVciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0eXBlQWxpYXMiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2NvbV8iIC4gUGxhY2VmaXg6Ol8oImNvbXBvbmVudCIpIC4gIi4iIC4gUGxhY2VmaXg6Ol8oInZpZXciKSAuICInLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBpZEhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInaWQnLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0aXRsZUhvbGRlciI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInPDw8TUFJTl9USVRMRT4+PicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRhYmxlTmFtZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInI19fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICJfIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGV4dFByZWZpeCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJMQU5HX1BSRUZJWCIpIC4gIiciOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiKTsiOw0KDQoJCXJldHVybiBDRmFjdG9yeTo6XygnUGxhY2Vob2xkZXInKS0+dXBkYXRlXygkc2NyaXB0KTsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIE1haW4gUG9zdCBVcGRhdGUgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldE1haW5KNFBPU1RVUERBVEVTQ1JJUFQoKQ0KCXsNCgkJJHNjcmlwdCA9IFBIUF9FT0wgLiBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykNCgkJCS4gIiBBZGQvVXBkYXRlIGNvbXBvbmVudCBpbiB0aGUgYWN0aW9uIGxvZ3MgZXh0ZW5zaW9ucyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dzRXh0ZW5zaW9ucygpOyI7DQoNCgkJcmV0dXJuICRzY3JpcHQ7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBWaWV3IFBvc3QgVXBkYXRlIFNjcmlwdA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZw0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRWaWV3SjRQT1NUVVBEQVRFU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygzKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgQWRkL1VwZGF0ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgaW4gdGhlIGFjdGlvbiBsb2dzIGNvbmZpZyB0YWJsZS4iOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMykgLiAiXCR0aGlzLT5zZXRBY3Rpb25Mb2dDb25maWcoIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHR5cGVUaXRsZSI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICInIiAuIFBsYWNlZml4OjpfKCJWSUVXIikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdHlwZUFsaWFzIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIidjb21fIiAuIFBsYWNlZml4OjpfKCJjb21wb25lbnQiKSAuICIuIiAuIFBsYWNlZml4OjpfKCJ2aWV3IikgLiAiJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgaWRIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJ2lkJywiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGl0bGVIb2xkZXIiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJzw8PE1BSU5fVElUTEU+Pj4nLCI7DQoJCSRzY3JpcHQgLj0gUEhQX0VPTCAuIEluZGVudDo6Xyg0KSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiB0YWJsZU5hbWUiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyNfXyIgLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiXyIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicsIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDQpIC4gIi8vIiAuIExpbmU6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHRleHRQcmVmaXgiOw0KCQkkc2NyaXB0IC49IFBIUF9FT0wgLiBJbmRlbnQ6Ol8oNCkgLiAiJyIgLiBQbGFjZWZpeDo6XygiTEFOR19QUkVGSVgiKSAuICInIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDMpIC4gIik7IjsNCg0KCQlyZXR1cm4gQ0ZhY3Rvcnk6Ol8oJ1BsYWNlaG9sZGVyJyktPnVwZGF0ZV8oJHNjcmlwdCk7DQoJfQ0KDQoJLyoqDQoJICogZ2V0IHRoZSBNYWluIFVuaW5zdGFsbCBTY3JpcHQNCgkgKiANCgkgKiBAcmV0dXJuICBzdHJpbmcNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TWFpbko0VU5JTlNUQUxMU0NSSVBUKCkNCgl7DQoJCSRzY3JpcHQgPSBQSFBfRU9MIC4gUEhQX0VPTCAuIEluZGVudDo6XygyKSAuICIvLyIgLiBMaW5lOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pDQoJCQkuICIgUmVtb3ZlIGNvbXBvbmVudCBmcm9tIGFjdGlvbiBsb2dzIGV4dGVuc2lvbnMgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nc0V4dGVuc2lvbnMoKTsiOw0KDQoJCXJldHVybiAkc2NyaXB0Ow0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgVmlldyBVbmluc3RhbGwgU2NyaXB0DQoJICogDQoJICogQHJldHVybiAgc3RyaW5nDQoJICogDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFZpZXdKNFVOSU5TVEFMTFNDUklQVCgpDQoJew0KCQkkc2NyaXB0ID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBJbmRlbnQ6Ol8oMikgLiAiLy8iIC4gTGluZTo6XyhfX0xpbmVfXywgX19DbGFzc19fKQ0KCQkJLiAiIFJlbW92ZSAiIC4gUGxhY2VmaXg6Ol8oIlZpZXciKSAuICIgZnJvbSBhY3Rpb24gbG9ncyBjb25maWcgdGFibGUuIjsNCgkJJHNjcmlwdCAuPSBQSFBfRU9MIC4gSW5kZW50OjpfKDIpIC4gIlwkdGhpcy0+cmVtb3ZlQWN0aW9uTG9nQ29uZmlnKCdjb21fIg0KCQkJLiBQbGFjZWZpeDo6XygiY29tcG9uZW50IikgLiAiLiIgLiBQbGFjZWZpeDo6XygidmlldyIpIC4gIicpOyI7DQoNCgkJcmV0dXJuIENGYWN0b3J5OjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCRzY3JpcHQpOw0KCX0NCg0KW0NVU1RPTUNPREU9Y29tcG9uZW50QWN0aXZlXQ==', '[[[Component]]] ActionLog Compiler', '', '', '', '', '', '', '', '4.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB ActionLog Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:10', '2024-08-11 11:35:39', 6, '', 3),
(42, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to tweak the export options for your components during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\nAlso be sure to activate the component/s that should be targeted with this added export feature under the Component Activation tab.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Settings\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2679\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2680\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2681\",\"custom_value\":\"\"}}}}', '3b8434ed-2727-4c74-85c2-e439b6a7b637', 'dXNlIEpvb21sYVxDTVNcQXBwbGljYXRpb25cQ01TQXBwbGljYXRpb247DQp1c2UgSm9vbWxhXENNU1xQbHVnaW5cQ01TUGx1Z2luOw==', 11, '{\"method_selection0\":{\"method\":\"92\"},\"method_selection1\":{\"method\":\"56\"},\"method_selection2\":{\"method\":\"121\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoNCgkgKiBUaGUgRXhwb3J0IFRleHQgT25seSBzd2l0Y2gNCgkgKiANCgkgKiBAdmFyICAgICAgaW50DQoJICovDQoJcHJvdGVjdGVkICRleHBvcnRUZXh0T25seSA9IDA7DQoNCgkvKg0KCSAqIFRoZSBTdHJpY3QgRmllbGQgRXhwb3J0IFBlcm1pc3Npb25zIHN3aXRjaA0KCSAqIA0KCSAqIEB2YXIgICAgICBib29sDQoJICovDQoJcHJvdGVjdGVkICRzdHJpY3RGaWVsZEV4cG9ydFBlcm1pc3Npb25zID0gZmFsc2U7DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgR2V0IENvbXBvbmVudCBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkFmdGVyR2V0Q29tcG9uZW50RGF0YSgpDQoJew0KCQlpZiAoJHRoaXMtPmV4cG9ydFRleHRPbmx5ICYmICR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gYWN0aXZhdGUgZXhwb3J0IHRleHQgb25seQ0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgnZXhwb3J0X3RleHRfb25seScsIChpbnQpICR0aGlzLT5leHBvcnRUZXh0T25seSk7DQoNCgkJCS8vIGFjdGl2YXRlIHN0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZCBpZiBzZXQgaW4gcGx1Z2luIChkZWZhdWx0IHRydWUpDQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+c2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCAoYm9vbCkgJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQWZ0ZXIgTW9kZWwgQ29tcG9uZW50IERhdGFdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJNb2RlbENvbXBvbmVudERhdGEoJiRjb21wb25lbnQpDQoJew0KCQkvLyBjaGVjayBpZiB3ZSBoYXZlIGV4cG9ydCBmb3IgYW55IHZpZXcNCgkJaWYgKCR0aGlzLT5jb21wb25lbnRBY3RpdmUoKSkNCgkJew0KCQkJLy8gc2V0IHRoZSBleHBvcnQvaW1wb3J0IG9wdGlvbg0KCQkJaWYgKGlzc2V0KCRjb21wb25lbnQtPmFkbWluX3ZpZXdzKSAmJiBTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkY29tcG9uZW50LT5hZG1pbl92aWV3cykpDQoJCQl7DQoJCQkJZm9yZWFjaCAoJGNvbXBvbmVudC0+YWRtaW5fdmlld3MgYXMgJHZpZXcpDQoJCQkJew0KCQkJCQlpZiAoISR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAoaXNzZXQoJHZpZXdbJ3BvcnQnXSkgJiYgJHZpZXdbJ3BvcnQnXSB8fCAxID09ICR2aWV3WydzZXR0aW5ncyddLT5hZGRfY3VzdG9tX2ltcG9ydCkpDQoJCQkJCXsNCgkJCQkJCSR0aGlzLT5leHBvcnRUZXh0T25seSA9IDE7DQoJCQkJCQkkdGhpcy0+c3RyaWN0RmllbGRFeHBvcnRQZXJtaXNzaW9ucyA9IChib29sKSAkdGhpcy0+cGFyYW1zLT5nZXQoJ3N0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZCcsIDEpOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFNldCBMYW5nIEZpbGUgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVTZXRMYW5nRmlsZURhdGEoKQ0KCXsNCgkJaWYgKCR0aGlzLT5leHBvcnRUZXh0T25seSAmJiAkdGhpcy0+Y29tcG9uZW50QWN0aXZlKCkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmxhbmd1YWdlQXJyYXkpKQ0KCQl7DQoJCQlmb3JlYWNoKCR0aGlzLT5sYW5ndWFnZUFycmF5IGFzICRrZXkgPT4gJHN0cmluZykNCgkJCXsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdMYW5ndWFnZScpLT5zZXQoJ2FkbWluc3lzJywgJGtleSwgJHN0cmluZyk7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgU2V0IENvbmZpZyBGaWVsZCBzZXRzXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZVNldENvbmZpZ0ZpZWxkc2V0cygmJHRpbWVyKQ0KCXsNCgkJLy8gb25seSBhZGQgZmllbGRzIGFmdGVyIHNlY29uZCB0aW1lDQoJCWlmICgkdGhpcy0+ZXhwb3J0VGV4dE9ubHkgJiYgJHRoaXMtPmNvbXBvbmVudEFjdGl2ZSgpICYmICR0aW1lciA9PSAyKQ0KCQl7DQoJCQkvLyBtYWluIGxhbmcgcHJlZml4DQoJCQkkbGFuZyA9IFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5sYW5nX3ByZWZpeCAuICdfQ09ORklHJzsNCgkJCS8vIHN0YXJ0IGJ1aWxkaW5nIGZpZWxkIHNldCBmb3IgY29uZmlnDQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIjxmaWVsZHNldCIpOw0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICduYW1lPSJleHBvcnRfdGV4dF9vbmx5X2NvbmZpZyInKTsNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAnbGFiZWw9IicgLiAkbGFuZyAuICdfRVhQT1JUX1RFWFRfT05MWV9UQUJfTEFCRUwiJyk7DQoJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gJ2Rlc2NyaXB0aW9uPSInIC4gJGxhbmcgLiAnX0VYUE9SVF9URVhUX09OTFlfVEFCX0RFU0NSSVBUSU9OIj4nKTsNCgkJCS8vIHNldHVwIGxhbmcNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9MQUJFTCddID0gIkV4cG9ydCBPcHRpb25zIjsNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX1RBQl9ERVNDUklQVElPTiddID0gIkhlcmUgYXJlIHNvbWUgZXh0cmEgb3B0aW9uIHRvIGFkanVzdCB0aGUgZXhwb3J0IGJlaGF2aW91ciBvZiBhZG1pbiB2aWV3cy4iOw0KCQkJLy8gYWRkIGN1c3RvbSBFeHBvcnQgT3B0aW9ucw0KCQkJaWYgKGlzc2V0KCRjb25maWdGaWVsZFNldHNDdXN0b21GaWVsZFsnRXhwb3J0IE9wdGlvbnMnXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGNvbmZpZ0ZpZWxkU2V0c0N1c3RvbUZpZWxkWydFeHBvcnQgT3B0aW9ucyddKSkNCgkJCXsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBpbXBsb2RlKCIiLCAkY29uZmlnRmllbGRTZXRzQ3VzdG9tRmllbGRbJ0V4cG9ydCBPcHRpb25zJ10pKTsNCgkJCQl1bnNldCgkY29uZmlnRmllbGRTZXRzQ3VzdG9tRmllbGRbJ0V4cG9ydCBPcHRpb25zJ10pOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19FWFBPUlRfVEVYVF9PTkxZX0xBQkVMJ10gPSAiRXhwb3J0IFRleHQgT25seSI7DQoJCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmcgLiAnX0VYUE9SVF9URVhUX09OTFlfREVTQ1JJUFRJT04nXSA9ICJUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBleHBvcnQgb2Ygc3RyaW5nL3RleHQgaW5zdGVhZCBvZiBsaW5rZWQgSURzIGluIGFsbCBhZG1pbiB2aWV3cyB0aGF0IGhhdmUgYW4gZXhwb3J0IG9wdGlvbi4iOw0KDQoJCQkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmcgLiAnX0FDVElWQVRFJ10gPSAiQWN0aXZhdGUiOw0KCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19ERUFDVElWQVRFJ10gPSAiRGVhY3RpdmF0ZSI7DQoNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8IS0tIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIEV4cG9ydCBUZXh0IE9ubHkgRmllbGQuIFR5cGU6IFJhZGlvLiAoam9vbWxhKSAtLT4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIjxmaWVsZCIpOw0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAidHlwZT1cInJhZGlvXCIiKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIm5hbWU9XCJleHBvcnRfdGV4dF9vbmx5XCIiKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImxhYmVsPVwiIiAuICRsYW5nIC4gIl9FWFBPUlRfVEVYVF9PTkxZX0xBQkVMXCIiKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImRlc2NyaXB0aW9uPVwiIiAuICRsYW5nIC4gIl9FWFBPUlRfVEVYVF9PTkxZX0RFU0NSSVBUSU9OXCIiKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImNsYXNzPVwiYnRuLWdyb3VwIGJ0bi1ncm91cC15ZXNub1wiIik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJkZWZhdWx0PVwiMFwiPiIpOw0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiPCEtLSIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBPcHRpb24gU2V0LiAtLT4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIxXCI+Iik7DQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICRsYW5nIC4gIl9BQ1RJVkFURTwvb3B0aW9uPiIpOw0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiPG9wdGlvbiB2YWx1ZT1cIjBcIj4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gJGxhbmcgLiAiX0RFQUNUSVZBVEU8L29wdGlvbj4iKTsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIjwvZmllbGQ+Iik7DQoNCgkJCQkvLyBhZGQgIHN0cmljdCBGaWVsZCBFeHBvcnQgUGVybWlzc2lvbnMgZmllbGQNCgkJCQlpZiAoJHRoaXMtPnN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpDQoJCQkJew0KCQkJCQkkdGhpcy0+bGFuZ3VhZ2VBcnJheVskbGFuZyAuICdfU1RSSUNUX1BFUk1JU1NJT05fUEVSX0ZJRUxEX0xBQkVMJ10gPSAiVXNlIFN0cmljdCBQZXJtaXNzaW9uIHBlci9maWVsZCI7DQoJCQkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nIC4gJ19TVFJJQ1RfUEVSTUlTU0lPTl9QRVJfRklFTERfREVTQ1JJUFRJT04nXSA9ICJVc2Ugc3RyaWN0IHBlcm1pc3Npb25zIHBlci9maWVsZCBpbiB0aGUgZXhwb3J0IG1ldGhvZHMgd2hlcmUgdGhlcmUgYXJlIGZpZWxkcyBwZXJtaXNzaW9ucyBpbiBhIHZpZXcuIjsNCg0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICI8IS0tIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFN0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZCBGaWVsZC4gVHlwZTogUmFkaW8uIChqb29tbGEpIC0tPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIjxmaWVsZCIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInR5cGU9XCJyYWRpb1wiIik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAibmFtZT1cInN0cmljdF9wZXJtaXNzaW9uX3Blcl9maWVsZFwiIik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAibGFiZWw9XCIiIC4gJGxhbmcgLiAiX1NUUklDVF9QRVJNSVNTSU9OX1BFUl9GSUVMRF9MQUJFTFwiIik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZGVzY3JpcHRpb249XCIiIC4gJGxhbmcgLiAiX1NUUklDVF9QRVJNSVNTSU9OX1BFUl9GSUVMRF9ERVNDUklQVElPTlwiIik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiY2xhc3M9XCJidG4tZ3JvdXAgYnRuLWdyb3VwLXllc25vXCIiKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJkZWZhdWx0PVwiMVwiPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjwhLS0iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgT3B0aW9uIFNldC4gLS0+Iik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiPG9wdGlvbiB2YWx1ZT1cIjFcIj4iKTsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICRsYW5nIC4gIl9BQ1RJVkFURTwvb3B0aW9uPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIjxvcHRpb24gdmFsdWU9XCIwXCI+Iik7DQoJCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29uZmlnLkZpZWxkc2V0cycpLT5hZGQoJ2NvbXBvbmVudCcsIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAkbGFuZyAuICJfREVBQ1RJVkFURTwvb3B0aW9uPiIpOw0KCQkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbmZpZy5GaWVsZHNldHMnKS0+YWRkKCdjb21wb25lbnQnLCBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIjwvZmllbGQ+Iik7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gY2xvc2UgdGhhdCBmaWVsZHNldA0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQnVpbGRlci5Db25maWcuRmllbGRzZXRzJyktPmFkZCgnY29tcG9uZW50JywgU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICI8L2ZpZWxkc2V0PiIpOw0KCQl9DQoJfQ0KDQpbQ1VTVE9NQ09ERT1jb21wb25lbnRBY3RpdmVd', '[[[Component]]] Export Compiler', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Export Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:12', '2024-08-11 11:35:48', 11, '', 2),
(43, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to build the privacy plugin for your component during compilation. To activate it you must first enable it here. Then open your JCB component global options, and under the Global tab, select this plugin in the Activate Compiler Plugins field.\r\n\r\nAlso be sure to link your admin views to the privacy suite of Joomla via our other Content - [[[Component]]] Privacy Tabs plugin.', '{}', 'd13975a2-47d2-451d-bdd8-c44024eef1b8', 'dXNlIEpvb21sYVxDTVNcRmFjdG9yeTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xBcHBsaWNhdGlvblxDTVNBcHBsaWNhdGlvbjsNCnVzZSBKb29tbGFcQ01TXFBsdWdpblxDTVNQbHVnaW47DQp1c2UgSm9vbWxhXFJlZ2lzdHJ5XFJlZ2lzdHJ5Ow==', 11, '{\"method_selection0\":{\"method\":\"58\"},\"method_selection1\":{\"method\":\"117\"},\"method_selection2\":{\"method\":\"70\"},\"method_selection3\":{\"method\":\"119\"},\"method_selection4\":{\"method\":\"120\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkYXV0b2xvYWRMYW5ndWFnZSA9IHRydWU7DQoNCgkvKioNCgkgKiBUaGUgbGFuZ3VhZ2Ugc3RyaW5nIGJ1aWxkZXINCgkgKiANCgkgKiBAdmFyICAgICBhcnJheQ0KCSAqLw0KCXByb3RlY3RlZCAkbGFuZ3VhZ2VBcnJheSA9IFtdOw0KDQoJLyoqDQoJICogR2xvYmFsIHN3aXRjaCB0byBzZWUgaWYgY29tcG9uZW50IGhhdmUgbmVlZCBvZiBwcml2YWN5IHBsdWdpbiB0byBiZSBsb2FkZWQuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkbG9hZFByaXZhY3kgPSBmYWxzZTsNCg0KCS8qKg0KCSAqIFRoZSBWaWV3cyBMaW5rZWQgdG8gSm9vbWxhIFVzZXJzDQoJICoNCgkgKiBAdmFyICAgIGFycmF5DQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGFjdGl2ZVZpZXdzID0gW107DQoNCgkvKioNCgkgKiBUaGUgVmlld3MgcGVybWlzc2lvbiBmaWVsZHMNCgkgKg0KCSAqIEB2YXIgICAgYXJyYXkNCgkgKiBAc2luY2UgIDEuMC4wDQoJICovDQoJcHJvdGVjdGVkICAkcGVybWlzc2lvbkZpZWxkcyA9IFtdOw0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIE1vZGVsIFZpZXcgRGF0YV0NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVNb2RlbFZpZXdEYXRhKCYkdmlldykNCgl7DQoJCS8vIGFkZCB0aGUgcHJpdmFjeQ0KCQkkdmlldy0+cGFyYW1zID0gKGlzc2V0KCR2aWV3LT5wYXJhbXMpICYmIFN1cGVyX19fNGIyMjVjNTFfZDI5M180OGU0X2IzZjZfNTEzNmNmNWMzZjE4X19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpKSA/IGpzb25fZGVjb2RlKCR2aWV3LT5wYXJhbXMsIHRydWUpIDogJHZpZXctPnBhcmFtczsNCgkJaWYgKFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR2aWV3LT5wYXJhbXMpICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddKSAmJiANCgkJCWlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYWN0aXZhdGUnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhY3RpdmF0ZSddID09IDEpDQoJCXsNCgkJCS8vIGFjdGl2YXRlIHRoZSBsb2FkIG9mIHRoZSBwcml2YWN5IHBsdWdpbg0KCQkJJHRoaXMtPmxvYWRQcml2YWN5ID0gdHJ1ZTsNCgkJCS8vIGxvYWQgdGhlIGFkbWluIHZpZXcgZGV0YWlscw0KCQkJJHRoaXMtPmFjdGl2ZVZpZXdzWyR2aWV3LT5pZF0gPSAkdmlldzsNCgkJCS8vIGFkZCBwZXJtaXNzaW9ucw0KCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0gKGlzc2V0KCR2aWV3LT5hZGRwZXJtaXNzaW9ucykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHZpZXctPmFkZHBlcm1pc3Npb25zKSkgPyBqc29uX2RlY29kZSgkdmlldy0+YWRkcGVybWlzc2lvbnMsIHRydWUpIDogbnVsbDsNCgkJCWlmIChTdXBlcl9fXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjaygkdmlldy0+YWRkcGVybWlzc2lvbnMpKQ0KCQkJew0KCQkJCSR2aWV3LT5hZGRwZXJtaXNzaW9ucyA9IGFycmF5X3ZhbHVlcygkdmlldy0+YWRkcGVybWlzc2lvbnMpOw0KCQkJCS8vIGFkZCB0aGUgbmV3IHBlcm1pc3Npb25zDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zW10gPSBbDQoJCQkJCSdhY3Rpb24nID0+ICd2aWV3LnByaXZhY3kuZGVsZXRlJywNCgkJCQkJJ2ltcGxlbWVudGF0aW9uJyA9PiAzLA0KCQkJCQkndGl0bGUnID0+ICR2aWV3LT5uYW1lX2xpc3QgLiAnIFByaXZhY3kgRGVsZXRlJywNCgkJCQkJJ2Rlc2NyaXB0aW9uJyA9PiAnIEFsbG93cyB0aGUgdXNlcnMgaW4gdGhpcyBncm91cCB0byByZW1vdmUgdGhlaXIgcGVyc29uYWwgZGF0YSBpbiAnIC4gJHZpZXctPm5hbWVfbGlzdCAuICcgdmlhIHRoZSBKb29tbGEgcHJpdmFjeSBzdWl0ZS4nDQoJCQkJXTsNCgkJCQkkdmlldy0+YWRkcGVybWlzc2lvbnNbXSA9IFsNCgkJCQkJJ2FjdGlvbicgPT4gJ3ZpZXcucHJpdmFjeS5hY2Nlc3MnLA0KCQkJCQknaW1wbGVtZW50YXRpb24nID0+IDMsDQoJCQkJCSd0aXRsZScgPT4gJHZpZXctPm5hbWVfbGlzdCAuICcgUHJpdmFjeSBBY2Nlc3MnLA0KCQkJCQknZGVzY3JpcHRpb24nID0+ICcgQWxsb3dzIHRoZSB1c2VycyBpbiB0aGlzIGdyb3VwIHRvIGFjY2VzcyB0aGVpciBwZXJzb25hbCBkYXRhIGluICcgLiAkdmlldy0+bmFtZV9saXN0IC4gJyB2aWEgdGhlIEpvb21sYSBwcml2YWN5IHN1aXRlLicNCgkJCQldOw0KCQkJCS8vIGNvbnZlcnQgYmFjayB0byBqc29uDQoJCQkJJHZpZXctPmFkZHBlcm1pc3Npb25zID0ganNvbl9lbmNvZGUoJHZpZXctPmFkZHBlcm1pc3Npb25zLCBKU09OX0ZPUkNFX09CSkVDVCk7DQoJCQl9DQoJCQkvLyBhZGQgcGxhY2Vob2xkZXJzIHRvIHZpZXcgaWYgbm90IGFscmVhZHkgc2V0DQoJCQlpZiAoIWlzc2V0KCR0aGlzLT5hY3RpdmVWaWV3c1skdmlldy0+aWRdLT5wbGFjZWhvbGRlcnMpKQ0KCQkJew0KCQkJCSR0aGlzLT5hY3RpdmVWaWV3c1skdmlldy0+aWRdLT5wbGFjZWhvbGRlcnMgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdQbGFjZWhvbGRlcicpLT5hY3RpdmU7DQoJCQl9DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBBZnRlciBHZXRdDQoJICoNCgkgKiBAcmV0dXJuICB2b2lkDQoJICoNCgkgKiBAc2luY2UgICAxLjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gamNiX2NlX29uQWZ0ZXJHZXQoKQ0KCXsNCgkJLy8gY2hlY2sgaWYgdGhpcyBjb21wb25lbnQgbmVlZHMgYSBwcml2YWN5IHBsdWdpbiBsb2FkZWQNCgkJaWYgKCR0aGlzLT5sb2FkUHJpdmFjeSkNCgkJew0KCQkJJHBsdWdpbiA9IEpvb21sYV9fXzc5MzQ2NjViX2U0MzJfNGVjNl9iMzhkXzI3YmYzMjczMGViOV9fX1Bvd2VyOjpnZXRQbHVnaW4oJ2NvbnRlbnQnLCAnW1tbY29tcG9uZW50XV1dcHJpdmFjeXRhYnMnKTsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMganNvbg0KCQkJaWYgKGlzc2V0KCRwbHVnaW4tPnBhcmFtcykgJiYgU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJHBsdWdpbi0+cGFyYW1zKSkNCgkJCXsNCgkJCQkvLyBDb252ZXJ0IHRoZSBwYXJhbXMgZmllbGQgdG8gYW4gYXJyYXkuDQoJCQkJJHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5Ow0KCQkJCSRyZWdpc3RyeS0+bG9hZFN0cmluZygkcGx1Z2luLT5wYXJhbXMpOw0KCQkJCSRwbHVnaW4tPnBhcmFtcyA9ICRyZWdpc3RyeS0+dG9BcnJheSgpOw0KCQkJfQ0KCQkJLy8gbm93IGdldCB0aGUgcGx1Z2luIElEIGlmIHNldA0KCQkJaWYgKGlzc2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pICYmICRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10gPiAwKQ0KCQkJew0KCQkJCS8vIGlmIGxpbmtlZCBpdCB3aWxsIG9ubHkgbG9hZCBpdCBvbmNlDQoJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnSm9vbWxhcGx1Z2luLkRhdGEnKS0+c2V0KCRwbHVnaW4tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSR0aGlzLT5nZXRBcHBsaWNhdGlvbigpLT5lbnF1ZXVlTWVzc2FnZShUZXh0OjpfKCdZb3UgZG8gbm90IGhhdmUgYSBnbG9iYWwgcHJpdmFjeSBwbHVnaW4gc2V0dXAsIHNvIHRoZSBpbnRlZ3JhdGlvbiB3aXRoIEpvb21sYSBwcml2YWN5IHN1aXRlIGNvdWxkIG5vdCBiZSBidWlsZC4nKSwgJ1dhcm5pbmcnKTsNCgkJCQkkdGhpcy0+bG9hZFByaXZhY3k9IGZhbHNlOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogRXZlbnQgVHJpZ2dlcmVkIGluIHRoZSBjb21waWxlciBbb24gQmVmb3JlIFVwZGF0ZSBGaWxlc10NCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBqY2JfY2Vfb25CZWZvcmVVcGRhdGVGaWxlcygkY29tcGlsZXIpDQoJew0KCQkvLyBjaGVjayBpZiBwcml2YWN5IGlzIHRvIGJlIGxvYWRlZA0KCQlpZiAoJHRoaXMtPmxvYWRQcml2YWN5ICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5hY3RpdmVWaWV3cykpDQoJCXsNCgkJCS8vIGdldCBjb21waWxlciBkZWZhdWx0cw0KCQkJJHN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Z2V0KCdwZXJtaXNzaW9uX3N0cmljdF9wZXJfZmllbGQnLCBmYWxzZSk7DQoJCQkkZXhwb3J0VGV4dE9ubHkgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb25maWcnKS0+Z2V0KCdleHBvcnRfdGV4dF9vbmx5JywgMSk7DQoNCgkJCS8vIGxvYWQgdGhlIGdldFByaXZhY3lFeHBvcnQgZnVuY3Rpb25zDQoJCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJGlkID0+ICYkdmlldykNCgkJCXsNCgkJCQkvLyBzZXQgcGVybWlzc2lvbnMgYmFzZWQgb24gdmlldw0KCQkJCWlmIChpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ3Blcm1pc3Npb25zJ10pKQ0KCQkJCXsNCgkJCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgKGJvb2wpICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsncGVybWlzc2lvbnMnXSk7DQoJCQkJfQ0KDQoJCQkJLy8gYWxsb3cgdGV4dCBvbmx5IGV4cG9ydA0KCQkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5zZXQoJ2V4cG9ydF90ZXh0X29ubHknLCAxKTsNCg0KCQkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJCSR2aWV3TmFtZV9saXN0ID0gU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6c2FmZSgkdmlldy0+bmFtZV9saXN0KTsNCgkJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkJLy8gbG9hZCB0aGUgZnVuY3Rpb24NCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbnRlbnQuTXVsdGknKS0+YWRkKCR2aWV3TmFtZV9saXN0IC4gJ3xNT0RFTEVYUE9SVE1FVEhPRCcsDQoJCQkJCSRjb21waWxlci0+c2V0R2V0SXRlbXNNb2RlbE1ldGhvZCgNCgkJCQkJCSR2aWV3TmFtZV9zaW5nbGUsDQoJCQkJCQkkdmlld05hbWVfbGlzdCwNCgkJCQkJCVsNCgkJCQkJCQknZnVuY3Rpb25OYW1lJyA9PiAnZ2V0UHJpdmFjeUV4cG9ydCcsDQoJCQkJCQkJJ2RvY0Rlc2MnID0+ICdNZXRob2QgdG8gZ2V0IGRhdGEgZHVyaW5nIGFuIGV4cG9ydCByZXF1ZXN0LicsDQoJCQkJCQkJJ3R5cGUnID0+ICdwcml2YWN5Jw0KCQkJCQkJXQ0KCQkJCQkpDQoJCQkJKTsNCgkJCQkvLyBnZXQgdGhlIHBlcm1pc3Npb25zIGJ1aWxkaW5nIHZhbHVlcyBmb3IgbGF0ZXIgaWYgbmVlZGVkDQoJCQkJaWYgKFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbmZpZycpLT5nZXQoJ3Blcm1pc3Npb25fc3RyaWN0X3Blcl9maWVsZCcsIGZhbHNlKSAmJg0KCQkJCQlpc3NldCgkY29tcGlsZXItPnBlcm1pc3Npb25GaWVsZHNbJHZpZXdOYW1lX3NpbmdsZV0pICYmDQoJCQkJCVN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCRjb21waWxlci0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSkpDQoJCQkJew0KCQkJCQkkdGhpcy0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXSA9ICRjb21waWxlci0+cGVybWlzc2lvbkZpZWxkc1skdmlld05hbWVfc2luZ2xlXTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIHNldCBjb21waWxlciBkZWZhdWx0cw0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgncGVybWlzc2lvbl9zdHJpY3RfcGVyX2ZpZWxkJywgJHN0cmljdEZpZWxkRXhwb3J0UGVybWlzc2lvbnMpOw0KCQkJU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29uZmlnJyktPnNldCgnZXhwb3J0X3RleHRfb25seScsICRleHBvcnRUZXh0T25seSk7DQoNCgkJCS8vIGFkZCBoZWxwZXIgY2xhc3Nlcw0KCQkJJGhlbHBlcl9zdHJpbmdzID0gWydDVVNUT01fSEVMUEVSX1NDUklQVCcsICdTSVRFX0NVU1RPTV9IRUxQRVJfU0NSSVBUJywgJ0JPVEhfQ1VTVE9NX0hFTFBFUl9TQ1JJUFQnXTsNCgkJCSRwcml2YWN5X2V2ZW50cyA9IFsNCgkJCQknUHJpdmFjeUNhblJlbW92ZURhdGEnID0+IHRydWUsDQoJCQkJJ1ByaXZhY3lFeHBvcnRSZXF1ZXN0JyA9PiB0cnVlLA0KCQkJCSdQcml2YWN5UmVtb3ZlRGF0YScgPT4gdHJ1ZQ0KCQkJXTsNCg0KCQkJZm9yZWFjaCAoJGhlbHBlcl9zdHJpbmdzIGFzICRoZWxwZXIpDQoJCQl7DQoJCQkJaWYgKCgkaGVscGVyX2NvbnRlbnQgPSBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5CdWlsZGVyLkNvbnRlbnQuT25lJyktPmdldCgkaGVscGVyKSkgIT09IG51bGwgJiYNCgkJCQkJU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJGhlbHBlcl9jb250ZW50KSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRwcml2YWN5X2V2ZW50cyBhcyAkcHJpdmFjeV9ldmVudCA9PiAmJGFkZCkNCgkJCQkJew0KCQkJCQkJLy8gY2hlY2sgaWYgdGhlIGV2ZW4gaXMgb3ZlcndyaXRlbg0KCQkJCQkJaWYgKHN0cnBvcygkaGVscGVyX2NvbnRlbnQsICdwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uJyAuICRwcml2YWN5X2V2ZW50IC4gJygnKSAhPT0gZmFsc2UpDQoJCQkJCQl7DQoJCQkJCQkJJGFkZCA9IGZhbHNlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBhZGQgdGhlIGV2ZW50cyBzdGlsbCBuZWVkZWQNCgkJCVN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkJ1aWxkZXIuQ29udGVudC5PbmUnKS0+YWRkKCdCT1RIX0NVU1RPTV9IRUxQRVJfU0NSSVBUJywNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdQbGFjZWhvbGRlcicpLT51cGRhdGVfKCR0aGlzLT5nZXRIZWxwZXJNZXRob2QoJHByaXZhY3lfZXZlbnRzKSkNCgkJCSk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBFdmVudCBUcmlnZ2VyZWQgaW4gdGhlIGNvbXBpbGVyIFtvbiBCZWZvcmUgU2V0IExhbmcgRmlsZSBEYXRhXQ0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGpjYl9jZV9vbkJlZm9yZVNldExhbmdGaWxlRGF0YSgpDQoJew0KCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPmxhbmd1YWdlQXJyYXkpKQ0KCQl7DQoJCQlmb3JlYWNoKCR0aGlzLT5sYW5ndWFnZUFycmF5IGFzICRrZXkgPT4gJHN0cmluZykNCgkJCXsNCgkJCQlTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdMYW5ndWFnZScpLT5zZXQoJ3NpdGUnLCAka2V5LCAkc3RyaW5nKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8qKg0KCSAqIGdldCB0aGUgSGVscGVyIG1ldGhvZHMgbmVlZGVkIHRvIGludGVncmF0ZSB3aXRoIEpvb21sYSBQcml2YWN5IFN1aXRlDQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJGhlbHBlck1ldGhvZHMgIFRoZSBoZWxwZXIgbWV0aG9kcyBzdHJpbmcNCgkgKg0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRIZWxwZXJNZXRob2QoJiRldmVudHMpDQoJew0KCQkkbWV0aG9kcyA9ICcnOw0KCQlmb3JlYWNoICgkZXZlbnRzIGFzICRldmVudCA9PiAkYWRkKQ0KCQl7DQoJCQkvLyBjaGVjayBpZiB0aGUgZXZlbiBzaG91bGQgYmUgYWRkZWQNCgkJCWlmICgkYWRkKQ0KCQkJew0KCQkJCS8vIGFkZCB0aGUgZXZlbnQNCgkJCQkkdGhpcy0+eydzZXQnLiRldmVudH0oJG1ldGhvZHMpOw0KCQkJfQ0KCQl9DQoJCS8vIG9ubHkgYWRkIGhlYWRlciBpZiB0aGVyZSB3YXMgZXZlbnRzIGFkZGVkDQoJCWlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkbWV0aG9kcykpDQoJCXsNCgkJCSRtZXRob2RzID0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIDw8PD09PSBQcml2YWN5IGludGVncmF0aW9uIHdpdGggSm9vbWxhIFByaXZhY3kgc3VpdGUgPT09Pj4+IiAuIFBIUF9FT0wgLiAkbWV0aG9kczsNCgkJfQ0KDQoJCXJldHVybiAkbWV0aG9kczsNCgl9DQoNCgkvKioNCgkgKiBTZXQgUHJpdmFjeSBDYW4gUmVtb3ZlIERhdGENCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkbWV0aG9kcyAgVGhlIG1ldGhvZHMgc3RyaW5nDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRQcml2YWN5Q2FuUmVtb3ZlRGF0YSgmJG1ldGhvZHMpDQoJew0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBQZXJmb3JtcyB2YWxpZGF0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdmUgaW5mb3JtYXRpb24gcmVxdWVzdCBjYW4gYmUgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5UGx1Z2luICBcJHBsdWdpbiAgVGhlIHBsdWdpbiBiZWluZyBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5UmVtb3ZhbFN0YXR1cyAgXCRzdGF0dXMgIFRoZSBzdGF0dXMgYmVpbmcgc2V0IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgXCRyZXF1ZXN0ICBUaGUgcmVxdWVzdCByZWNvcmQgYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgSm9vbWxhX18iLiJfZWZmZGFmNmRfMjI3NV80MjVkXzlmNTJfZDQ5NTJlNTY0ZDM0X19fUG93ZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5UmVtb3ZhbFN0YXR1cyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25Qcml2YWN5Q2FuUmVtb3ZlRGF0YSgmXCRwbHVnaW4sICZcJHN0YXR1cywgJlwkcmVxdWVzdCwgJlwkdXNlcikiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQnVja2V0IHRvIGdldCBhbGwgcmVhc29ucyB3aHkgcmVtb3ZhbCBub3QgYWxsb3dlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcmVhc29ucyA9IGFycmF5KCk7IjsNCgkJZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZVZpZXdzIGFzICR2aWV3KQ0KCQl7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJLy8gbG9hZCB0aGUgY2FuRG8gZnJvbSBnZXRBY3Rpb25zIGhlbHBlciBtZXRob2QNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIENoZWNrIGlmIHVzZXIgaGFzIHBlcm1pc3Npb24gdG8gZGVsZXRlICIgLiAkdmlldy0+bmFtZV9saXN0Ow0KCQkJLy8gc2V0IHRoZSBpZiBzdGF0ZW1lbnQgYmFzZWQgb24gdGhlIHBlcm1pc3Npb24gYnVpbGRlcg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiaWYgKCFcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oImNvbXBvbmVudCIpIC4gIicpICYmICFcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEFjdGlvbigkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJLy8gc2V0IGxhbmd1YWdlIGtleQ0KCQkJJGxhbmdfa2V5ID0gJHZpZXctPnBsYWNlaG9sZGVyc1tTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJMQU5HX1BSRUZJWCIpXSAuICdfUFJJVkFDWV9DQU5UX1JFTU9WRV8nIC4gJHZpZXctPnBsYWNlaG9sZGVyc1tTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJWSUVXUyIpXTsNCgkJCS8vIHNldCBsYW5ndWFnZSBzdHJpbmcNCgkJCSR0aGlzLT5sYW5ndWFnZUFycmF5WyRsYW5nX2tleV0gPSAiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gcmVtb3ZlL2RlbGV0ZSAiLiAkdmlldy0+bmFtZV9saXN0IC4gIi4iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRyZWFzb25zW10gPSBKb29tbGFfXyIgLiAiX2JhNjMyNmVmX2NiNzlfNDM0OF84MGY0X2FiMDg2MDgyZTNjNV9fX1Bvd2VyOjpfKCciIC4gJGxhbmdfa2V5IC4gIicpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ9IjsNCgkJCS8vIHNldCBsYW5ndWFnZSBrZXkNCgkJCSRsYW5nX2tleSA9ICR2aWV3LT5wbGFjZWhvbGRlcnNbU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiTEFOR19QUkVGSVgiKV0gLiAnX1BSSVZBQ1lfQ0FOVF9SRU1PVkVfQ09OVEFDVF9TVVBQT1JUJzsNCgkJfQ0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiBhbnkgcmVhc29ucyB3ZXJlIGZvdW5kIG5vdCB0byBhbGxvdyByZW1vdmFsIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiaWYgKFN1cGVyX18iIC4gIl8wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soXCRyZWFzb25zKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRzdGF0dXMtPmNhblJlbW92ZSA9IGZhbHNlOyI7DQoJCS8vIHNldCBsYW5ndWFnZSBzdHJpbmcNCgkJJHRoaXMtPmxhbmd1YWdlQXJyYXlbJGxhbmdfa2V5XSA9ICdQbGVhc2UgY29udGFjdCBzdXBwb3J0IGZvciBtb3JlIGRldGFpbHMuJzsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRzdGF0dXMtPnJlYXNvbiA9IGltcGxvZGUoJyAnIC4gUEhQX0VPTCwgXCRyZWFzb25zKSAuICcgJyAuIFBIUF9FT0wgLiBKb29tbGFfXyIgLiAiX2JhNjMyNmVmX2NiNzlfNDM0OF84MGY0X2FiMDg2MDgyZTNjNV9fX1Bvd2VyOjpfKCciIC4gJGxhbmdfa2V5IC4gIicpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJyZXR1cm4gXCRzdGF0dXM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCX0NCg0KCS8qKg0KCSAqIFNldCBQcml2YWN5IEV4cG9ydCBSZXF1ZXN0DQoJICogDQoJICogQHBhcmFtICAgc3RyaW5nICAgJG1ldGhvZHMgIFRoZSBtZXRob2RzIHN0cmluZw0KCSAqIA0KCSAqIEByZXR1cm4gIHZvaWQNCgkgKiANCgkgKi8NCglwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0UHJpdmFjeUV4cG9ydFJlcXVlc3QoJiRtZXRob2RzKQ0KCXsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogUHJvY2Vzc2VzIGFuIGV4cG9ydCByZXF1ZXN0IGZvciBKb29tbGEgY29yZSB1c2VyIGRhdGEiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIFByaXZhY3lQbHVnaW4gIFwkcGx1Z2luICBUaGUgcGx1Z2luIGJlaW5nIHByb2Nlc3NlZCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIERvbWFpbkFycmF5ICBcJGRvbWFpbnMgIFRoZSBhcnJheSBvZiBkb21haW5zIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgUHJpdmFjeVRhYmxlUmVxdWVzdCAgXCRyZXF1ZXN0ICBUaGUgcmVxdWVzdCByZWNvcmQgYmVpbmcgcHJvY2Vzc2VkIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgSm9vbWxhX18iLiJfZWZmZGFmNmRfMjI3NV80MjVkXzlmNTJfZDQ5NTJlNTY0ZDM0X19fUG93ZXIgICAgICAgICAgICAgICAgXCR1c2VyICAgICBUaGUgdXNlciBhY2NvdW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgaWYgYXZhaWxhYmxlIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluW10iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uUHJpdmFjeUV4cG9ydFJlcXVlc3QoJlwkcGx1Z2luLCAmXCRkb21haW5zLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB2aWV3IGxpc3QgbmFtZQ0KCQkJJHZpZXdOYW1lX2xpc3QgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX2xpc3QpOw0KCQkJLy8gc2V0IHZpZXcgc2luZ2xlIG5hbWUNCgkJCSR2aWV3TmFtZV9zaW5nbGUgPSBTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpzYWZlKCR2aWV3LT5uYW1lX3NpbmdsZSk7DQoJCQkvLyBsb2FkIHRoZSBjYW5EbyBmcm9tIGdldEFjdGlvbnMgaGVscGVyIG1ldGhvZA0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2hlY2sgaWYgdXNlciBoYXMgcGVybWlzc2lvbiB0byBhY2Nlc3MgIiAuICR2aWV3LT5uYW1lX2xpc3Q7DQoJCQkvLyBzZXQgdGhlIGlmIHN0YXRlbWVudCBiYXNlZCBvbiB0aGUgcGVybWlzc2lvbiBidWlsZGVyDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJpZiAoXCR1c2VyLT5hdXRob3Jpc2UoJyINCgkJCQkuIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRHbG9iYWwoJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUuYWNjZXNzJykNCgkJCQkuICInLCAnY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKSB8fCBcJHVzZXItPmF1dGhvcmlzZSgnIg0KCQkJCS4gU3VwZXJfX19kOTEwZDhiOF80YzIzXzRmM2VfOGNkYV80MzhmMmQyYmQ3YWNfX19Qb3dlcjo6XygnQ29tcGlsZXIuQ3JlYXRvci5QZXJtaXNzaW9uJyktPmdldEdsb2JhbCgkdmlld05hbWVfc2luZ2xlLCAnY29yZS5wcml2YWN5LmFjY2VzcycpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykpIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0ICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRvbWFpbiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJGRvbWFpbnNbXSA9IHNlbGY6OmNyZWF0ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEb21haW4oXCRwbHVnaW4sIFwkdXNlcik7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQl9DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gInJldHVybiBcJGRvbWFpbnM7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KDQoJCWZvcmVhY2ggKCR0aGlzLT5hY3RpdmVWaWV3cyBhcyAkdmlldykNCgkJew0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIENyZWF0ZSB0aGUgZG9tYWluIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZTsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIEpvb21sYV9fIi4iXzExYWNjZjU0X2ZjYjlfNGJhMF9hNjQ1XzdjODBjZTE0ZTIyNF9fX1Bvd2VyICBcJHVzZXIgIFRoZSBKb29tbGFfXyIuIl8xMWFjY2Y1NF9mY2I5XzRiYTBfYTY0NV83YzgwY2UxNGUyMjRfX19Qb3dlciBvYmplY3QgdG8gcHJvY2VzcyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqLyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEb21haW4oJlwkcGx1Z2luLCAmXCR1c2VyKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGNyZWF0ZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgZG9tYWluIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkZG9tYWluID0gc2VsZjo6Y3JlYXRlRG9tYWluKCciIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInLCAnIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oImNvbXBvbmVudCIpIC4gIl8iIC4gJHZpZXdOYW1lX3NpbmdsZSAuICJfZGF0YScpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgZGF0YWJhc2Ugb2JqZWN0IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkZGIgPSBGYWN0b3J5OjpnZXREYm8oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGFsbCBpdGVtIGlkcyBvZiAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGhhdCBiZWxvbmcgdG8gdGhpcyB1c2VyIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcXVlcnkgPSBcJGRiLT5nZXRRdWVyeSh0cnVlKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICItPnNlbGVjdCgnaWQnKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICItPmZyb20oXCRkYi0+cXVvdGVOYW1lKCcjX18iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygnY29tcG9uZW50JykgLiAnXycgLiAkdmlld05hbWVfc2luZ2xlIC4gIicpKTsiOw0KCQkJLy8gZ2V0IHZpYSBjdXN0b20gc2NyaXB0DQoJCQlpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAzKQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBzdHJfcmVwbGFjZShhcnJheV9rZXlzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCBhcnJheV92YWx1ZXMoJHZpZXctPnBsYWNlaG9sZGVycyksICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnY3VzdG9tX2xpbmsnXSk7DQoJCQl9DQoJCQkvLyBqdXN0IGFub3RoZXIgZmllbGQNCgkJCWVsc2VpZiAoaXNzZXQoJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSkgJiYgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWyd1c2VyX2xpbmsnXSA9PSAyICYmIGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnb3RoZXJfdXNlcl9maWVsZCddKSkNCgkJCXsNCgkJCQkvLyBnZXQgdGhlIGZpZWxkIG5hbWUNCgkJCQlpZiAoKCRmaWVsZF9uYW1lID0gJHRoaXMtPmdldEZpZWxkTmFtZSgkdmlldy0+ZmllbGRzLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpICE9PSBmYWxzZSkNCgkJCQl7DQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnIiAuICRmaWVsZF9uYW1lIC4gIicpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJLy8gZ2l2ZSBhIHdhcm5pbmcgbWVzc2FnZSAoVE9ETykNCg0KCQkJCQkvLyBzdG9wIGFueSBmcm9tIGxvYWRpbmcNCgkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgPT09PSBFUlJPUiA9PT09PSBFUlJPUiA9PT09PT0gKGZpZWxkIG5hbWUgbm90IGZvdW5kKSI7DQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPSAtMic7IC8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIDwtLSB0aGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGFueSB2YWx1ZS4gQ2hlY2sgeW91ciBbb3RoZXIgdXNlciBmaWVsZF0gc2VsZWN0ZWQgaW4gdGhlIGFkbWluIHZpZXcgcHJpdmFjeSB0YWIuIjsNCgkJCQl9DQoJCQl9DQoJCQkvLyBnZXQgYmFzZWQgb24gY3JlYXRlZCBieQ0KCQkJZWxzZQ0KCQkJew0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcXVlcnktPndoZXJlKFwkZGItPnF1b3RlTmFtZSgnY3JlYXRlZF9ieScpIC4gJyA9ICcgLiBcJGRiLT5xdW90ZShcJHVzZXItPmlkKSk7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBhbGwgaXRlbXMgZm9yIHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgZG9tYWluIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkcGtzID0gXCRkYi0+c2V0UXVlcnkoXCRxdWVyeSktPmxvYWRDb2x1bW4oKTsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IHRoZSAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgbW9kZWwiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiXCRtb2RlbCA9IHNlbGY6OmdldE1vZGVsKCciIC4gJHZpZXdOYW1lX2xpc3QgLiAiJywgSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY29tcG9uZW50cy9jb21fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oImNvbXBvbmVudCIpIC4gIicpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBHZXQgYWxsIGl0ZW0gZGV0YWlscyBvZiAiIC4gJHZpZXctPm5hbWVfbGlzdCAuICIgdGhhdCBiZWxvbmcgdG8gdGhpcyB1c2VyIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkaXRlbXMgPSBcJG1vZGVsLT5nZXRQcml2YWN5RXhwb3J0KFwkcGtzLCBcJHVzZXIpOyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBjaGVjayBpZiB3ZSBoYXZlIGl0ZW1zIHNpbmNlIHBlcm1pc3Npb25zIGNvdWxkIGJsb2NrIHRoZSByZXF1ZXN0IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gImlmIChTdXBlcl9fIiAuICJfMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkaXRlbXMpKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIFJlbW92ZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkZWZhdWx0IGNvbHVtbnMiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZm9yZWFjaCAoYXJyYXkoJ3BhcmFtcycsICdhc3NldF9pZCcsICdjaGVja2VkX291dCcsICdjaGVja2VkX291dF90aW1lJywgJ2NyZWF0ZWQnLCAnY3JlYXRlZF9ieScsICdtb2RpZmllZCcsICdtb2RpZmllZF9ieScsICdwdWJsaXNoZWQnLCAnb3JkZXJpbmcnLCAnYWNjZXNzJywgJ3ZlcnNpb24nLCAnaGl0cycpIGFzIFwkY29sdW1uKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIlwkaXRlbXMgPSBBcnJheUhlbHBlcjo6ZHJvcENvbHVtbihcJGl0ZW1zLCBcJGNvbHVtbik7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgbG9hZCB0aGUgaXRlbXMgaW50byB0aGUgZG9tYWluIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJmb3JlYWNoIChcJGl0ZW1zIGFzIFwkaXRlbSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJGRvbWFpbi0+YWRkSXRlbShzZWxmOjpjcmVhdGVJdGVtRnJvbUFycmF5KFwkaXRlbSwgXCRpdGVtWydpZCddKSk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAifSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJyZXR1cm4gXCRkb21haW47IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgkJfQ0KCQkvLyB3ZSBtdXN0IGFkZCB0aGVzZSBoZWxwZXIgbWV0aG9kcw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBDcmVhdGUgYSBuZXcgZG9tYWluIG9iamVjdCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgc3RyaW5nICBcJG5hbWUgICAgICAgICBUaGUgZG9tYWluJ3MgbmFtZSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIHN0cmluZyAgXCRkZXNjcmlwdGlvbiAgVGhlIGRvbWFpbidzIGRlc2NyaXB0aW9uIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0RG9tYWluIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAc2luY2UgICAzLjkuMCI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqLyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRG9tYWluKFwkbmFtZSwgXCRkZXNjcmlwdGlvbiA9ICcnKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRvbWFpbiAgICAgICAgICAgICAgPSBuZXcgUHJpdmFjeUV4cG9ydERvbWFpbjsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRvbWFpbi0+bmFtZSAgICAgICAgPSBcJG5hbWU7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiXCRkb21haW4tPmRlc2NyaXB0aW9uID0gXCRkZXNjcmlwdGlvbjsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJyZXR1cm4gXCRkb21haW47IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIi8qKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIENyZWF0ZSBhbiBpdGVtIG9iamVjdCBmb3IgYW4gYXJyYXkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEBwYXJhbSAgIGFycmF5ICAgICAgICAgXCRkYXRhICAgIFRoZSBhcnJheSBkYXRhIHRvIGNvbnZlcnQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBpbnRlZ2VyfG51bGwgIFwkaXRlbUlkICBUaGUgSUQgb2YgdGhpcyBpdGVtIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcmV0dXJuICBQcml2YWN5RXhwb3J0SXRlbSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHNpbmNlICAgMy45LjAiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUl0ZW1Gcm9tQXJyYXkoYXJyYXkgXCRkYXRhLCBcJGl0ZW1JZCA9IG51bGwpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIlwkaXRlbSA9IG5ldyBQcml2YWN5RXhwb3J0SXRlbTsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGl0ZW0tPmlkID0gXCRpdGVtSWQ7IjsNCg0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiZm9yZWFjaCAoXCRkYXRhIGFzIFwka2V5ID0+IFwkdmFsdWUpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImlmIChpc19vYmplY3QoXCR2YWx1ZSkpIjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAieyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIlwkdmFsdWUgPSAoYXJyYXkpIFwkdmFsdWU7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImlmIChpc19hcnJheShcJHZhbHVlKSkiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiXCR2YWx1ZSA9IHByaW50X3IoXCR2YWx1ZSwgdHJ1ZSk7IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIlwkZmllbGQgICAgICAgID0gbmV3IFByaXZhY3lFeHBvcnRGaWVsZDsiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJGZpZWxkLT5uYW1lICA9IFwka2V5OyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIlwkZmllbGQtPnZhbHVlID0gXCR2YWx1ZTsiOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJGl0ZW0tPmFkZEZpZWxkKFwkZmllbGQpOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KDQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJyZXR1cm4gXCRpdGVtOyI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCgl9DQoNCgkvKioNCgkgKiBnZXQgdGhlIGZpZWxkIG5hbWUNCgkgKiANCgkgKiBAcGFyYW0gICBhcnJheSAgICRmaWVsZHMgIFRoZSBmaWVsZHMgYXJyYXkNCgkgKiBAcGFyYW0gICBpbnQgICAgICAgJGlkICAgICAgIFRoZSBmaWVsZCBpZA0KCSAqIA0KCSAqIEByZXR1cm4gIHN0cmluZyAgICBUaGUgZmllbGQgbmFtZQ0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWVsZE5hbWUoJiRmaWVsZHMsICRpZCkNCgl7DQoJCWZvcmVhY2ggKCRmaWVsZHMgYXMgJGZpZWxkKQ0KCQl7DQoJCQlpZiAoJGZpZWxkWydmaWVsZCddID09ICRpZCkNCgkJCXsNCgkJCQlyZXR1cm4gJGZpZWxkWydiYXNlX25hbWUnXTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogU2V0IFByaXZhY3kgUmVtb3ZlIERhdGENCgkgKiANCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkbWV0aG9kcyAgVGhlIG1ldGhvZHMgc3RyaW5nDQoJICogDQoJICogQHJldHVybiAgdm9pZA0KCSAqIA0KCSAqLw0KCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRQcml2YWN5UmVtb3ZlRGF0YSgmJG1ldGhvZHMpDQoJew0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIvKioiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBSZW1vdmVzIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHJlbW92ZSBpbmZvcm1hdGlvbiByZXF1ZXN0IjsNCgkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBQcml2YWN5VGFibGVSZXF1ZXN0ICBcJHJlcXVlc3QgIFRoZSByZXF1ZXN0IHJlY29yZCBiZWluZyBwcm9jZXNzZWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiBAcGFyYW0gICBKb29tbGFfXyIuIl9lZmZkYWY2ZF8yMjc1XzQyNWRfOWY1Ml9kNDk1MmU1NjRkMzRfX19Qb3dlciAgICAgICAgICAgICAgICBcJHVzZXIgICAgIFRoZSB1c2VyIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCBpZiBhdmFpbGFibGUiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKiI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIHZvaWQiOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICIgKi8iOw0KCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9uUHJpdmFjeVJlbW92ZURhdGEoJlwkcGx1Z2luLCAmXCRyZXF1ZXN0LCAmXCR1c2VyKSI7DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB0aGUgYW5vbnltaXplIHN3aXRjaA0KCQkJJGFub255bWl6ZSA9IGZhbHNlOw0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10gPT0gMSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10sIHRydWUpKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRhbm9ueW1pemUgPSB0cnVlOw0KCQkJfQ0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCgkJCS8vIGxvYWQgdGhlIGNhbkRvIGZyb20gZ2V0QWN0aW9ucyBoZWxwZXIgbWV0aG9kDQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBDaGVjayBpZiB1c2VyIGhhcyBwZXJtaXNzaW9uIHRvIGRlbGV0ICIgLiAkdmlldy0+bmFtZV9saXN0Ow0KCQkJLy8gc2V0IHRoZSBpZiBzdGF0ZW1lbnQgYmFzZWQgb24gdGhlIHBlcm1pc3Npb24gYnVpbGRlcg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiaWYgKFwkdXNlci0+YXV0aG9yaXNlKCciDQoJCQkJLiBTdXBlcl9fX2Q5MTBkOGI4XzRjMjNfNGYzZV84Y2RhXzQzOGYyZDJiZDdhY19fX1Bvd2VyOjpfKCdDb21waWxlci5DcmVhdG9yLlBlcm1pc3Npb24nKS0+Z2V0QWN0aW9uKCR2aWV3TmFtZV9zaW5nbGUsICdjb3JlLmRlbGV0ZScpDQoJCQkJLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykgfHwgXCR1c2VyLT5hdXRob3Jpc2UoJyINCgkJCQkuIFN1cGVyX19fZDkxMGQ4YjhfNGMyM180ZjNlXzhjZGFfNDM4ZjJkMmJkN2FjX19fUG93ZXI6Ol8oJ0NvbXBpbGVyLkNyZWF0b3IuUGVybWlzc2lvbicpLT5nZXRBY3Rpb24oJHZpZXdOYW1lX3NpbmdsZSwgJ2NvcmUucHJpdmFjeS5kZWxldGUnKQ0KCQkJCS4gIicsICdjb21fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oImNvbXBvbmVudCIpIC4gIicpKSI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJ7IjsNCgkJCS8vIGNoZWNrIGlmIHRoaXMgaXMgYSBwbGFpbiBkZWxldGUsIG9yIGl0IGlzIGEgQW5vbnltaXplIA0KCQkJaWYgKCRhbm9ueW1pemUpDQoJCQl7DQoJCQkJLy8gYW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQW5vbnltaXplICIgLiAkdmlldy0+bmFtZV9zaW5nbGUgLiAiIGRhdGEiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInNlbGY6OmFub255bWl6ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEYXRhKFwkcGx1Z2luLCBcJHVzZXIpOyI7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8ganVzdCBkdW1wLCBkZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBSZW1vdmUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAic2VsZjo6cmVtb3ZlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoXCRwbHVnaW4sIFwkdXNlcik7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQl9DQoJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIn0iIC4gUEhQX0VPTDsNCg0KCQlmb3JlYWNoICgkdGhpcy0+YWN0aXZlVmlld3MgYXMgJHZpZXcpDQoJCXsNCgkJCS8vIHNldCB0aGUgYW5vbnltaXplIHN3aXRjaA0KCQkJJGFub255bWl6ZSA9IGZhbHNlOw0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsnYW5vbnltaXplJ10gPT0gMSAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSkgJiYgU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydhbm9ueW1pemVfZmllbGRzJ10sIHRydWUpKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRhbm9ueW1pemUgPSB0cnVlOw0KCQkJfQ0KCQkJLy8gc2V0IHZpZXcgbGlzdCBuYW1lDQoJCQkkdmlld05hbWVfbGlzdCA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfbGlzdCk7DQoJCQkvLyBzZXQgdmlldyBzaW5nbGUgbmFtZQ0KCQkJJHZpZXdOYW1lX3NpbmdsZSA9IFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OnNhZmUoJHZpZXctPm5hbWVfc2luZ2xlKTsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiLyoqIjsNCg0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHBsYWluIGRlbGV0ZSwgb3IgaXQgaXMgYSBBbm9ueW1pemUNCgkJCWlmICgkYW5vbnltaXplKQ0KCQkJew0KCQkJCS8vIEFub255bWl6ZSB0aGUgZGF0YQ0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEFub255bWl6ZSB0aGUgIiAuICR2aWV3LT5uYW1lX3NpbmdsZSAuICIgZGF0YSI7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJLy8gRGVsZXRlIHRoZSByb3dzDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogUmVtb3ZlIHRoZSAiIC4gJHZpZXctPm5hbWVfc2luZ2xlIC4gIiBkYXRhIjsNCgkJCX0NCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICoiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICogQHBhcmFtICAgSm9vbWxhX18iLiJfMTFhY2NmNTRfZmNiOV80YmEwX2E2NDVfN2M4MGNlMTRlMjI0X19fUG93ZXIgIFwkdXNlciAgVGhlIEpvb21sYV9fIi4iXzExYWNjZjU0X2ZjYjlfNGJhMF9hNjQ1XzdjODBjZTE0ZTIyNF9fX1Bvd2VyIG9iamVjdCB0byBwcm9jZXNzIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gIiAqIEByZXR1cm4gIHZvaWQiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAiICovIjsNCg0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHBsYWluIGRlbGV0ZSwgb3IgaXQgaXMgYSBBbm9ueW1pemUgDQoJCQlpZiAoJGFub255bWl6ZSkNCgkJCXsNCgkJCQkvLyBBbm9ueW1pemUgdGhlIGRhdGENCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygxKSAuICJwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGFub255bWl6ZSIgLiB1Y2ZpcnN0KCR2aWV3TmFtZV9saXN0KSAuICJEYXRhKCZcJHBsdWdpbiwgJlwkdXNlcikiOw0KCQkJfQ0KCQkJZWxzZQ0KCQkJew0KCQkJCS8vIERlbGV0ZSB0aGUgcm93cw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlIiAuIHVjZmlyc3QoJHZpZXdOYW1lX2xpc3QpIC4gIkRhdGEoJlwkcGx1Z2luLCAmXCR1c2VyKSI7DQoJCQl9DQoNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDEpIC4gInsiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgZ2V0IGRhdGFiYXNlIG9iamVjdCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7IjsNCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGdldCBhbGwgaXRlbSBpZHMgb2YgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5ID0gXCRkYi0+Z2V0UXVlcnkodHJ1ZSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5zZWxlY3QoJ2lkJykiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLT5mcm9tKFwkZGItPnF1b3RlTmFtZSgnI19fIiAuIFN1cGVyX19fNTAwZjNhN2ZfYzE2ZF80ZGQ0XzgxYjJfMmRmNjc3NmI1Mzg4X19fUG93ZXI6Ol8oJ2NvbXBvbmVudCcpIC4gJ18nIC4gJHZpZXdOYW1lX3NpbmdsZSAuICInKSk7IjsNCgkJCS8vIGdldCB2aWEgY3VzdG9tIHNjcmlwdA0KCQkJaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMykNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gc3RyX3JlcGxhY2UoYXJyYXlfa2V5cygkdmlldy0+cGxhY2Vob2xkZXJzKSwgYXJyYXlfdmFsdWVzKCR2aWV3LT5wbGFjZWhvbGRlcnMpLCAkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2N1c3RvbV9saW5rJ10pOw0KCQkJfQ0KCQkJLy8ganVzdCBhbm90aGVyIGZpZWxkDQoJCQllbHNlaWYgKGlzc2V0KCR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10pICYmICR2aWV3LT5wYXJhbXNbJ3ByaXZhY3knXVsndXNlcl9saW5rJ10gPT0gMiAmJiBpc3NldCgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ290aGVyX3VzZXJfZmllbGQnXSkpDQoJCQl7DQoJCQkJLy8gZ2V0IHRoZSBmaWVsZCBuYW1lDQoJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHZpZXctPnBhcmFtc1sncHJpdmFjeSddWydvdGhlcl91c2VyX2ZpZWxkJ10pKSAhPT0gZmFsc2UpDQoJCQkJew0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJyIgLiAkZmllbGRfbmFtZSAuICInKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQkJfQ0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCS8vIGdpdmUgYSB3YXJuaW5nIG1lc3NhZ2UgKFRPRE8pDQoNCgkJCQkJLy8gc3RvcCBhbnkgZnJvbSBsb2FkaW5nDQoJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiID09PT0gRVJST1IgPT09PT0gRVJST1IgPT09PT09IChmaWVsZCBuYW1lIG5vdCBmb3VuZCkiOw0KCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gLTInOyAvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiA8LS0gdGhpcyB3aWxsIG5ldmVyIHJldHVybiBhbnkgdmFsdWUuIENoZWNrIHlvdXIgW290aGVyIHVzZXIgZmllbGRdIHNlbGVjdGVkIGluIHRoZSBhZG1pbiB2aWV3IHByaXZhY3kgdGFiLiI7DQoJCQkJfQ0KCQkJfQ0KCQkJLy8gZ2V0IGJhc2VkIG9uIGNyZWF0ZWQgYnkNCgkJCWVsc2UNCgkJCXsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHF1ZXJ5LT53aGVyZShcJGRiLT5xdW90ZU5hbWUoJ2NyZWF0ZWRfYnknKSAuICcgPSAnIC4gXCRkYi0+cXVvdGUoXCR1c2VyLT5pZCkpOyI7DQoJCQl9DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgYWxsIGl0ZW1zIGZvciB0aGUgIiAuICR2aWV3LT5uYW1lX2xpc3QgLiAiIHRhYmxlIHRoYXQgYmVsb25nIHRvIHRoaXMgdXNlciI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygyKSAuICJcJHBrcyA9IFwkZGItPnNldFF1ZXJ5KFwkcXVlcnkpLT5sb2FkQ29sdW1uKCk7IjsNCg0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuUEhQX0VPTCAuICBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gImlmIChTdXBlcl9fIiAuICJfMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKFwkcGtzKSkiOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMikgLiAieyI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlld05hbWVfc2luZ2xlIC4gIiBtb2RlbCI7DQoJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJG1vZGVsID0gc2VsZjo6Z2V0TW9kZWwoJyIgLiAkdmlld05hbWVfc2luZ2xlIC4gIicsIEpQQVRIX0FETUlOSVNUUkFUT1IgLiAnL2NvbXBvbmVudHMvY29tXyIgLiBTdXBlcl9fXzUwMGYzYTdmX2MxNmRfNGRkNF84MWIyXzJkZjY3NzZiNTM4OF9fX1Bvd2VyOjpfKCJjb21wb25lbnQiKSAuICInKTsiOw0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIHBsYWluIGRlbGV0ZSwgb3IgaXQgaXMgYSBBbm9ueW1pemUgDQoJCQlpZiAoJGFub255bWl6ZSkNCgkJCXsNCgkJCQkvLyBidWlsZCB0aGUgcHNldWRvYW5vbnltaXNlZCBkYXRhIGFycmF5DQoJCQkJJF9kYXRhX2J1Y2tldCA9IGFycmF5KCk7DQoJCQkJJF9yYW5kb21fYnVja2V0ID0gYXJyYXkoKTsNCgkJCQkkX3Blcm1pc3Npb25fYnVja2V0ID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgkdmlldy0+cGFyYW1zWydwcml2YWN5J11bJ2Fub255bWl6ZV9maWVsZHMnXSBhcyAkcm93KQ0KCQkJCXsNCgkJCQkJaWYgKCgkZmllbGRfbmFtZSA9ICR0aGlzLT5nZXRGaWVsZE5hbWUoJHZpZXctPmZpZWxkcywgJHJvd1snZmllbGQnXSkpICE9PSBmYWxzZSkNCgkJCQkJew0KCQkJCQkJaWYgICgnUkFORE9NJyA9PT0gJHJvd1sndmFsdWUnXSkgDQoJCQkJCQl7DQoJCQkJCQkJJF9yYW5kb21fYnVja2V0WyRmaWVsZF9uYW1lXSA9IDg7IC8vIChUT0RPKSBtYWtlIHRoZSBzaXplIGR5bmFtaWMNCgkJCQkJCX0NCgkJCQkJCSRfZGF0YV9idWNrZXRbXSA9IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIiciIC4gJGZpZWxkX25hbWUgLiAiJyA9PiAnIiAuICRyb3dbJ3ZhbHVlJ10gLiInIjsNCgkJCQkJCSRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkX25hbWVdID0gJGZpZWxkX25hbWU7DQoJCQkJCX0NCgkJCQl9DQoJCQkJLy8gQW5vbnltaXplIHRoZSBkYXRhDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgdGhpcyBpcyB0aGUgcHNldWRvYW5vbnltaXNlZCBkYXRhIGFycmF5IGZvciAiIC4gJHZpZXctPm5hbWVfbGlzdDsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJHBzZXVkb2Fub255bWlzZWREYXRhID0gYXJyYXkoIjsNCgkJCQkkbWV0aG9kcyAuPSBpbXBsb2RlKCcsJywgJF9kYXRhX2J1Y2tldCk7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiKTsiOw0KDQoJCQkJLy8gYWRkIHRoZSBwZXJtaXNzaW9uYWwgcmVtb3ZhbCBvZiB2YWx1ZXMgdGhlIHVzZXIgaGFzIG5vdCByaWdodCB0byB2aWV3IG9yIGFjY2Vzcw0KCQkJCSRoYXNQZXJtaXNzaW9uYWwgPSBmYWxzZTsNCgkJCQlpZiAoaXNzZXQoJHRoaXMtPnBlcm1pc3Npb25GaWVsZHNbJHZpZXdOYW1lX3NpbmdsZV0pICYmIFN1cGVyX19fMGE1OWM2NWNfOWRhZl80YmM5X2JhZjRfZTA2M2ZmOWU2YThhX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdKSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJew0KCQkJCQkJaWYgKCEkaGFzUGVybWlzc2lvbmFsICYmIGlzc2V0KCRfcGVybWlzc2lvbl9idWNrZXRbJGZpZWxkTmFtZV0pKQ0KCQkJCQkJew0KCQkJCQkJCWZvcmVhY2goJHBlcm1pc3Npb25fb3B0aW9ucyBhcyAkcGVybWlzc2lvbl9vcHRpb24gPT4gJGZpZWxkVHlwZSkNCgkJCQkJCQl7DQoJCQkJCQkJCWlmICghJGhhc1Blcm1pc3Npb25hbCkNCgkJCQkJCQkJew0KCQkJCQkJCQkJc3dpdGNoICgkcGVybWlzc2lvbl9vcHRpb24pDQoJCQkJCQkJCQl7DQoJCQkJCQkJCQkJY2FzZSAnYWNjZXNzJzoNCgkJCQkJCQkJCQljYXNlICd2aWV3JzoNCgkJCQkJCQkJCQljYXNlICdlZGl0JzoNCgkJCQkJCQkJCQkJJGhhc1Blcm1pc3Npb25hbCA9IHRydWU7DQoJCQkJCQkJCQkJYnJlYWs7DQoJCQkJCQkJCQl9DQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJLy8gYWRkIHRoZSBub3RlcyBhbmQgZ2V0IHRoZSBnbG9iYWwgc3dpdGNoDQoJCQkJCWlmICgkaGFzUGVybWlzc2lvbmFsKQ0KCQkJCQl7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgR2V0IGdsb2JhbCBwZXJtaXNzaW9uYWwgY29udHJvbCBhY3RpdmF0aW9uLiAoZGVmYXVsdCBpcyBpbmFjdGl2ZSkiOw0KCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCRzdHJpY3RfcGVybWlzc2lvbl9wZXJfZmllbGQgPSBKb29tbGFfXyIgLiAiX2FlYjhlNDYzXzI5MWZfNDQ0NV85YWM0XzM0YjYzN2MxMmRiZF9fX1Bvd2VyOjpnZXRQYXJhbXMoJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJyktPmdldCgnc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkJywgMCk7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImlmKFwkc3RyaWN0X3Blcm1pc3Npb25fcGVyX2ZpZWxkKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHJlbW92ZSBhbGwgZmllbGRzIHRoYXQgaXMgbm90IHBlcm1pdHRlZCB0byBiZSBjaGFuZ2VkIjsNCgkJCQkJCWZvcmVhY2ggKCR0aGlzLT5wZXJtaXNzaW9uRmllbGRzWyR2aWV3TmFtZV9zaW5nbGVdIGFzICRmaWVsZE5hbWUgPT4gJHBlcm1pc3Npb25fb3B0aW9ucykNCgkJCQkJCXsNCgkJCQkJCQlpZiAoaXNzZXQoJF9wZXJtaXNzaW9uX2J1Y2tldFskZmllbGROYW1lXSkpDQoJCQkJCQkJew0KCQkJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJpZiAoIjsNCgkJCQkJCQkJJF9wZXJtaXNzaW9uX2lmID0gYXJyYXkoKTsNCgkJCQkJCQkJZm9yZWFjaCAoJHBlcm1pc3Npb25fb3B0aW9ucyBhcyAkcGVybV9rZXkgPT4gJGZpZWxkX3R5cHJldykNCgkJCQkJCQkJew0KCQkJCQkJCQkJJF9wZXJtaXNzaW9uX2lmW10gPSAiIVwkdXNlci0+YXV0aG9yaXNlKCciIC4gJHZpZXdOYW1lX3NpbmdsZSAuICIuIiAuICRwZXJtX2tleSAuICIuIiAuICRmaWVsZE5hbWUgLiAiJywgJ2NvbV8iIC4gU3VwZXJfX181MDBmM2E3Zl9jMTZkXzRkZDRfODFiMl8yZGY2Nzc2YjUzODhfX19Qb3dlcjo6XygiY29tcG9uZW50IikgLiAiJykiOw0KCQkJCQkJCQl9DQoJCQkJCQkJCSRtZXRob2RzIC49ICBpbXBsb2RlKCcgfHwgJywgJF9wZXJtaXNzaW9uX2lmKTsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gICIpIjsNCgkJCQkJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAieyI7DQoJCQkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDUpIC4gInVuc2V0KFwkcHNldWRvYW5vbnltaXNlZERhdGFbJyIuICRmaWVsZE5hbWUgLiAiJ10pOyI7DQoJCQkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIn0iOw0KCQkJCQkJCX0NCgkJCQkJCX0NCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIn0iOw0KCQkJCQl9DQoJCQkJfQ0KDQoNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0YWJsZSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCg0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIGNoZWNrIHRoYXQgd2Ugc3RpbGwgaGF2ZSBwc2V1ZG9hbm9ueW1pc2VkIGRhdGEgZm9yICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiBzZXQiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gImlmICghU3VwZXJfXyIgLiAiXzBhNTljNjVjXzlkYWZfNGJjOV9iYWY0X2UwNjNmZjllNmE4YV9fX1Bvd2VyOjpjaGVjayhcJHBzZXVkb2Fub255bWlzZWREYXRhKSkiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gIi8vIiAuIFN1cGVyX19fNGU2ZmYxMWRfYmViZl80MmY1XzhmZDdfYjJmODgyODU3MjIyX19fUG93ZXI6Ol8oX19MaW5lX18sIF9fQ2xhc3NfXykgLiAiIHN0aWxsIGFyY2hpdmUgYWxsIGl0ZW1zIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJHRhYmxlLT5wdWJsaXNoKFwkcGtzLCAyKTsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gInJldHVybiBmYWxzZTsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gIn0iOw0KDQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgSXRlcmF0ZSB0aGUgaXRlbXMgdG8gYW5vbmltaXplIGVhY2ggb25lLiI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiZm9yZWFjaCAoXCRwa3MgYXMgXCRpID0+IFwkcGspIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJcJHRhYmxlLT5yZXNldCgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnaWQnXSA9IFwkcGs7IjsNCgkJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJF9yYW5kb21fYnVja2V0KSkNCgkJCQl7DQoJCQkJCWZvcmVhY2ggKCRfcmFuZG9tX2J1Y2tldCBhcyAkZmllbGROYW1lID0+ICRzaXplKQ0KCQkJCQl7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJpZiAoaXNzZXQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YVsnIiAuICRmaWVsZE5hbWUgLiAiJ10pKSI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ7IjsNCgkJCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDUpIC4gIlwkcHNldWRvYW5vbnltaXNlZERhdGFbJyIgLiAkZmllbGROYW1lIC4gIiddID0gc2VsZjo6cmFuZG9ta2V5KCIgLiAoaW50KSAkc2l6ZSAuICIpOyI7DQoJCQkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ9IjsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAiaWYgKFwkdGFibGUtPmJpbmQoXCRwc2V1ZG9hbm9ueW1pc2VkRGF0YSkpIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg0KSAuICJ7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6Xyg1KSAuICJcJHRhYmxlLT5zdG9yZSgpOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBhcmNoaXZlIGFsbCBpdGVtcyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCR0YWJsZS0+cHVibGlzaChcJHBrcywgMik7IjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBEZWxldGUgdGhlIHJvd3MNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBnZXQgdGhlICIgLiAkdmlldy0+bmFtZV9saXN0IC4gIiB0YWJsZSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiXCR0YWJsZSA9IFwkbW9kZWwtPmdldFRhYmxlKCk7IjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICIvLyIgLiBTdXBlcl9fXzRlNmZmMTFkX2JlYmZfNDJmNV84ZmQ3X2IyZjg4Mjg1NzIyMl9fX1Bvd2VyOjpfKF9fTGluZV9fLCBfX0NsYXNzX18pIC4gIiBJdGVyYXRlIHRoZSBpdGVtcyB0byBkZWxldGUgZWFjaCBvbmUuIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJmb3JlYWNoIChcJHBrcyBhcyBcJGkgPT4gXCRwaykiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDMpIC4gInsiOw0KCQkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDQpIC4gImlmIChcJHRhYmxlLT5sb2FkKFwkcGspKSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAieyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNSkgLiAiXCR0YWJsZS0+ZGVsZXRlKFwkcGspOyI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oNCkgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAifSI7DQoJCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMykgLiAiLy8iIC4gU3VwZXJfX180ZTZmZjExZF9iZWJmXzQyZjVfOGZkN19iMmY4ODI4NTcyMjJfX19Qb3dlcjo6XyhfX0xpbmVfXywgX19DbGFzc19fKSAuICIgQ2xlYXIgdGhlIGNvbXBvbmVudCdzIGNhY2hlIjsNCgkJCQkkbWV0aG9kcyAuPSBQSFBfRU9MIC4gU3VwZXJfX19hNjhjMDEwYl9lOTJlXzQ3ZDVfOGE0NF9kMjNjZmRkZWI2YzZfX19Qb3dlcjo6XygzKSAuICJcJG1vZGVsLT5jbGVhbkNhY2hlKCk7IjsNCgkJCX0NCgkJCSRtZXRob2RzIC49IFBIUF9FT0wgLiBTdXBlcl9fX2E2OGMwMTBiX2U5MmVfNDdkNV84YTQ0X2QyM2NmZGRlYjZjNl9fX1Bvd2VyOjpfKDIpIC4gIn0iOw0KCQkJJG1ldGhvZHMgLj0gUEhQX0VPTCAuIFN1cGVyX19fYTY4YzAxMGJfZTkyZV80N2Q1XzhhNDRfZDIzY2ZkZGViNmM2X19fUG93ZXI6Ol8oMSkgLiAifSIgLiBQSFBfRU9MOw0KCQl9DQoJfQ==', '[[[Component]]] Privacy Compiler', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"36\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Compiler J5', '', 1, '', '', 1, '2024-03-10 15:55:15', '2024-08-11 11:35:30', 9, '', 3),
(44, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to link your components to the privacy suite of Joomla by adding a new privacy tab to the JCB admin views, where you can set all the required details for the integration.', '{\"fields0\":{\"plugin\":\"1\",\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"basic\",\"label\":\"Global Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields1\":{\"file\":\"config\",\"fields_name\":\"params\",\"fieldset\":\"plugin\",\"label\":\"Plugin\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2600\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2588\",\"custom_value\":\"\"}}},\"fields2\":{\"file\":\"admin_view\",\"fields_name\":\"params.privacy\",\"fieldset\":\"privacy\",\"label\":\"Privacy\",\"fields_rules_paths\":\"2\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2603\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2604\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2605\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2606\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2607\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2608\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2611\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2612\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2613\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2614\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2615\",\"custom_value\":\"\"}}}}', 'e0da018d-dba8-4ce7-b26c-63630f631a40', 'dXNlIEpvb21sYVxDTVNcQ29tcG9uZW50XENvbXBvbmVudEhlbHBlcjsNCnVzZSBKb29tbGFcQ01TXEFwcGxpY2F0aW9uXENNU0FwcGxpY2F0aW9uOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcUmVnaXN0cnlcUmVnaXN0cnk7DQp1c2UgSm9vbWxhXENNU1xGb3JtXEZvcm07DQp1c2UgSm9vbWxhXENNU1xGYWN0b3J5Ow==', 3, '{\"method_selection0\":{\"method\":\"113\"},\"method_selection1\":{\"method\":\"12\"},\"method_selection2\":{\"method\":\"0\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3IuIElmIHRydWUsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgbG9hZGVkIGF1dG9tYXRpY2FsbHkuDQoJICoNCgkgKiBAdmFyICAgIGJvb2xlYW4NCgkgKiBAc2luY2UgIDEuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogUnVucyBvbiBjb250ZW50IHByZXBhcmF0aW9uIG9mIGZvcm0uDQoJICoNCgkgKiBAcGFyYW0gICBKRm9ybSAgICAgJGZvcm0gIFRoZSBmb3JtDQoJICogQHBhcmFtICAgc3RkQ2xhc3MgICRkYXRhICBUaGUgZGF0YQ0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbg0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uQ29udGVudFByZXBhcmVGb3JtKEZvcm0gJGZvcm0sICRkYXRhKQ0KCXsNCgkJJGNvbnRleHQgPSAkZm9ybS0+Z2V0TmFtZSgpOw0KDQoJCS8vIFdoZW4gdGhpcyBpcyBbW1tjb21wb25lbnRdXV0gYWRtaW4gdmlldw0KCQlpZiAoc3RycG9zKCRjb250ZXh0LCAnY29tX1tbW2NvbXBvbmVudF1dXS5hZG1pbl92aWV3JykgPT09IDApDQoJCXsNCgkJCS8vIEFkZCB0aGUgZm9ybXMgcGF0aA0KCQkJRm9ybTo6YWRkRm9ybVBhdGgoX19ESVJfXyAuICcvLi4vLi4vZm9ybXMnKTsNCgkJCS8vIGFkZCB0aGUgYWRtaW4gdmlldyBwYXJhbXMgZm9yIHByaXZhY3kgaW50ZWdyYXRpb24NCgkJCSRmb3JtLT5sb2FkRmlsZSgnYWRtaW5fdmlldycpOw0KCQkJLy8gaWYgdGhlIGdsb2JhbCBwbHVnaW4gaXMgbm90IHNldCwgYWxsb3cgaXQgdG8gYmUgc2V0IGZyb20gdGhlIGFkbWluIHZpZXcNCgkJCWlmICgoJHBsdWdpbiA9ICR0aGlzLT5wYXJhbXMtPmdldCgncGx1Z2luJywgMCkpID09IDApDQoJCQl7DQoJCQkJJGZvcm0tPmxvYWRGaWxlKCdjb25maWcnKTsNCgkJCQkvLyBtYWtlIHRoZSBwbHVnaW4gZmllbGQgcmVxdWlyZWQgKExBVEVSIHdoZW4gd2UgY2FuIGdpdmUgbW9yZSBpbmZvKQ0KCQkJCS8vJGZvcm0tPnNldEZpZWxkQXR0cmlidXRlKCdwbHVnaW4nLCAncmVxdWlyZWQnLCB0cnVlLCAncGFyYW1zLnByaXZhY3knKTsNCgkJCQkvLyRmb3JtLT5zZXRGaWVsZEF0dHJpYnV0ZSgncGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQkJLy8kZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ25vdGVfc2VsZWN0X3ByaXZhY3lfcGx1Z2luJywgJ3Nob3dvbicsICdhY3RpdmF0ZToxJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCQl9DQoJCQkvLyB1cGRhdGUgYWxsIGVkaXRvcnMgdG8gdXNlIHRoaXMgY29tcG9uZW50cyBnbG9iYWwgZWRpdG9yDQoJCQkkZ2xvYmFsX2VkaXRvciA9IENvbXBvbmVudEhlbHBlcjo6Z2V0UGFyYW1zKCdjb21fW1tbY29tcG9uZW50XV1dJyktPmdldCgnZWRpdG9yJywgJ25vbmUnKTsNCgkJCS8vIHNldCB0aGUgZmllbGQgZWRpdG9yIHZhbHVlICh3aXRoIG5vbmUgYXMgZmFsbGJhY2spDQoJCQkkZm9ybS0+c2V0RmllbGRBdHRyaWJ1dGUoJ2N1c3RvbV9saW5rJywgJ2VkaXRvcicsICRnbG9iYWxfZWRpdG9yIC4gJ3xub25lJywgJ3BhcmFtcy5wcml2YWN5Jyk7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogVGhpcyBpcyBhbiBldmVudCB0aGF0IGlzIGNhbGxlZCByaWdodCBiZWZvcmUgdGhlIGNvbnRlbnQNCgkgKiBpcyBzYXZlZCBpbnRvIHRoZSBkYXRhYmFzZS4NCgkgKg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgJGNvbnRleHQgIFRoZSBjb250ZXh0IG9mIHRoZSBjb250ZW50IHBhc3NlZCB0byB0aGUgcGx1Z2luIChhZGRlZCBpbiAxLjYpLg0KCSAqIEBwYXJhbSAgIG9iamVjdCAgJGFydGljbGUgIEEgSlRhYmxlQ29udGVudCBvYmplY3QuDQoJICogQHBhcmFtICAgYm9vbCAgICAkaXNOZXcgICAgSWYgdGhlIGNvbnRlbnQgaXMganVzdCBhYm91dCB0byBiZSBjcmVhdGVkLg0KCSAqDQoJICogQHJldHVybiAgdm9pZC4NCgkgKg0KCSAqIEBzaW5jZSAgIDEuMA0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiBvbkNvbnRlbnRCZWZvcmVTYXZlKCRjb250ZXh0LCAkaXRlbSwgJGlzTmV3LCAkZGF0YSA9IGFycmF5KCkpDQoJew0KCQkvLyBXaGVuIHRoaXMgaXMgW1tbY29tcG9uZW50XV1dIGFkbWluIHZpZXcNCgkJaWYgKCdjb21fW1tbY29tcG9uZW50XV1dLmFkbWluX3ZpZXcnID09PSAkY29udGV4dCkNCgkJew0KCQkJLy8gY2hlY2sgaWYgdGhpcyBpcyBqc29uDQoJCQlpZiAoU3VwZXJfX180YjIyNWM1MV9kMjkzXzQ4ZTRfYjNmNl81MTM2Y2Y1YzNmMThfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPnBhcmFtcykpDQoJCQl7DQoJCQkJLy8gQ29udmVydCB0aGUgcGFyYW1zIGZpZWxkIHRvIGFuIGFycmF5Lg0KCQkJCSRyZWdpc3RyeSA9IG5ldyBSZWdpc3RyeTsNCgkJCQkkcmVnaXN0cnktPmxvYWRTdHJpbmcoJGl0ZW0tPnBhcmFtcyk7DQoJCQkJJGl0ZW0tPnBhcmFtcyA9ICRyZWdpc3RyeS0+dG9BcnJheSgpOw0KCQkJfQ0KCQkJLy8gY2hlY2sgaWYgdGhlIHBsdWdpbiB3YXMgc2V0DQoJCQlpZiAoaXNzZXQoJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10pICYmICRpdGVtLT5wYXJhbXNbJ3BsdWdpbiddID4gMCkNCgkJCXsNCgkJCQkvLyBmaXJzdCBzZXQgbmV3IHBhcmFtcw0KCQkJCSR0aGlzLT5wYXJhbXMtPnNldCgncGx1Z2luJywgKGludCkgJGl0ZW0tPnBhcmFtc1sncGx1Z2luJ10pOw0KCQkJCS8vIHVwZGF0ZSB0aGUgZ2xvYmFsIHBsdWdpbiBzZXR0aW5ncw0KCQkJCSRleHRlbnNpb25UYWJsZSA9IG5ldyAgSm9vbWxhX19fNWQxMDg4MzJfYzdhYV80YjM5XzhjNDBfYzlhMTE4ZTczMWQ5X19fUG93ZXIoRmFjdG9yeTo6Z2V0RGJvKCkpOw0KCQkJCSRleHRlbnNpb25UYWJsZS0+bG9hZChhcnJheSgnZWxlbWVudCcgPT4gJ1tbW2NvbXBvbmVudF1dXXByaXZhY3l0YWJzJykpOw0KCQkJCS8vIFNhdmUgdGhlIGNoYW5nZQ0KCQkJCSRleHRlbnNpb25UYWJsZS0+c2V0KCdwYXJhbXMnLCAkdGhpcy0+cGFyYW1zLT50b1N0cmluZygpKTsNCgkJCQkkZXh0ZW5zaW9uVGFibGUtPnNhdmUoKGFycmF5KSAkZXh0ZW5zaW9uVGFibGUpOw0KCQkJCS8vIGFuZCByZW1vdmUgdGhlIHZhbHVlIGZyb20gdGhlIHBhcmFtcw0KCQkJCXVuc2V0KCRpdGVtLT5wYXJhbXNbJ3BsdWdpbiddKTsNCgkJCQkvLyBjbGVhciB0aGUgcGx1Z2luIGNhY2hlDQoJCQkJJHRoaXMtPmNsZWFuQ2FjaGUoJ2NvbV9wbHVnaW5zJywgMCk7DQoJCQkJJHRoaXMtPmNsZWFuQ2FjaGUoJ2NvbV9wbHVnaW5zJywgMSk7DQoJCQl9DQoJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGFuIGFycmF5DQoJCQlpZiAoU3VwZXJfX18wYTU5YzY1Y185ZGFmXzRiYzlfYmFmNF9lMDYzZmY5ZTZhOGFfX19Qb3dlcjo6Y2hlY2soJGl0ZW0tPnBhcmFtcykpDQoJCQl7DQoJCQkJLy8gQ29udmVydCB0aGUgcGFyYW1zIGZpZWxkIHRvIGEgc3RyaW5nLg0KCQkJCSRwYXJhbXMgPSBuZXcgUmVnaXN0cnk7DQoJCQkJJHBhcmFtcy0+bG9hZEFycmF5KCRpdGVtLT5wYXJhbXMpOw0KCQkJCSRpdGVtLT5wYXJhbXMgPSAoc3RyaW5nKSAkcGFyYW1zOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJLyoqDQoJICogQ2xlYW4gdGhlIGNhY2hlDQoJICoNCgkgKiBAcGFyYW0gICBzdHJpbmcgICAkZ3JvdXAgICAgICBUaGUgY2FjaGUgZ3JvdXANCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkY2xpZW50X2lkICBUaGUgSUQgb2YgdGhlIGNsaWVudA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMy4wDQoJICovDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGNsZWFuQ2FjaGUoJGdyb3VwID0gbnVsbCwgJGNsaWVudF9pZCA9IDApDQoJew0KCQkkY29uZiA9IEZhY3Rvcnk6OmdldENvbmZpZygpOw0KDQoJCSRvcHRpb25zID0gWw0KCQkJJ2RlZmF1bHRncm91cCcgPT4gJGdyb3VwID86IChpc3NldCgkdGhpcy0+b3B0aW9uKSA/ICR0aGlzLT5vcHRpb24gOiBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpLT5pbnB1dC0+Z2V0KCdvcHRpb24nKSksDQoJCQknY2FjaGViYXNlJyA9PiAkY2xpZW50X2lkID8gSlBBVEhfQURNSU5JU1RSQVRPUiAuICcvY2FjaGUnIDogJGNvbmYtPmdldCgnY2FjaGVfcGF0aCcsIEpQQVRIX1NJVEUgLiAnL2NhY2hlJyksDQoJCQkncmVzdWx0JyA9PiB0cnVlLA0KCQldOw0KDQoJCXRyeQ0KCQl7DQoJCQkvKiogQHZhciBKb29tbGFfX180MTY2NDI1Zl81NTJmXzQ3NjNfYWRjY19jYTQ0M2ZmNGJiZDRfX19Qb3dlciAkY2FjaGUgKi8NCgkJCSRjYWNoZSA9IEpvb21sYV9fX2YzZjRhZGZiX2Y3NDJfNDY1Zl85ZThkXzNkMTYxNWYyYTVkNl9fX1Bvd2VyOjpnZXRJbnN0YW5jZSgnY2FsbGJhY2snLCAkb3B0aW9ucyk7DQoJCQkkY2FjaGUtPmNsZWFuKCk7DQoJCX0NCgkJY2F0Y2ggKEpvb21sYV9fXzM2NTVlNzE3Xzc5ZDBfNGNlZl85MjVmXzYxYTczNDFlYjhiZV9fX1Bvd2VyICRleGNlcHRpb24pDQoJCXsNCgkJCSRvcHRpb25zWydyZXN1bHQnXSA9IGZhbHNlOw0KCQl9DQoNCgkJLy8gVHJpZ2dlciB0aGUgb25Db250ZW50Q2xlYW5DYWNoZSBldmVudC4NCgkJRmFjdG9yeTo6Z2V0QXBwbGljYXRpb24oKS0+dHJpZ2dlckV2ZW50KCdvbkNvbnRlbnRDbGVhbkNhY2hlJywgJG9wdGlvbnMpOw0KCX0=', '[[[Component]]] Privacy Tabs', '', '', '', '', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"9\"},\"property_selection1\":{\"property\":\"7\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Privacy Tabs J5', '', 1, '', '', 1, '2024-03-10 15:55:21', '2024-08-11 11:35:22', 9, '', 2),
(45, 1, '', '', '', '', '', '', '', '', '', '', '', '', 1, 'This plugin is used to set dynamic gets class headers.', '{\"fields0\":{\"file\":\"dynamic_get\",\"fields_name\":\"params.dynamic_get_headers\",\"fieldset\":\"dynamic_get_headers\",\"label\":\"Class Headers\",\"fields_rules_paths\":\"1\",\"addrulepath\":[],\"addfieldpath\":[],\"fields\":{\"fields0\":{\"field\":\"2855\",\"custom_value\":\"\"},\"fields1\":{\"field\":\"2859\",\"custom_value\":\"\"},\"fields2\":{\"field\":\"2963\",\"custom_value\":\"\"},\"fields3\":{\"field\":\"2981\",\"custom_value\":\"\"},\"fields4\":{\"field\":\"2980\",\"custom_value\":\"\"},\"fields5\":{\"field\":\"2962\",\"custom_value\":\"\"},\"fields6\":{\"field\":\"2890\",\"custom_value\":\"\"},\"fields7\":{\"field\":\"2887\",\"custom_value\":\"\"},\"fields8\":{\"field\":\"2993\",\"custom_value\":\"\"},\"fields9\":{\"field\":\"2854\",\"custom_value\":\"\"},\"fields10\":{\"field\":\"2860\",\"custom_value\":\"\"},\"fields11\":{\"field\":\"2961\",\"custom_value\":\"\"},\"fields12\":{\"field\":\"2856\",\"custom_value\":\"\"},\"fields13\":{\"field\":\"2858\",\"custom_value\":\"\"},\"fields14\":{\"field\":\"2960\",\"custom_value\":\"\"},\"fields15\":{\"field\":\"2982\",\"custom_value\":\"\"},\"fields16\":{\"field\":\"2979\",\"custom_value\":\"\"},\"fields17\":{\"field\":\"2959\",\"custom_value\":\"\"},\"fields18\":{\"field\":\"2889\",\"custom_value\":\"\"},\"fields19\":{\"field\":\"2888\",\"custom_value\":\"\"},\"fields20\":{\"field\":\"2994\",\"custom_value\":\"\"},\"fields21\":{\"field\":\"2853\",\"custom_value\":\"\"},\"fields22\":{\"field\":\"2857\",\"custom_value\":\"\"},\"fields23\":{\"field\":\"2958\",\"custom_value\":\"\"},\"fields24\":{\"field\":\"2866\",\"custom_value\":\"\"},\"fields25\":{\"field\":\"2862\",\"custom_value\":\"\"},\"fields26\":{\"field\":\"2971\",\"custom_value\":\"\"},\"fields27\":{\"field\":\"2990\",\"custom_value\":\"\"},\"fields28\":{\"field\":\"2991\",\"custom_value\":\"\"},\"fields29\":{\"field\":\"2957\",\"custom_value\":\"\"},\"fields30\":{\"field\":\"2893\",\"custom_value\":\"\"},\"fields31\":{\"field\":\"2892\",\"custom_value\":\"\"},\"fields32\":{\"field\":\"2998\",\"custom_value\":\"\"},\"fields33\":{\"field\":\"2867\",\"custom_value\":\"\"},\"fields34\":{\"field\":\"2861\",\"custom_value\":\"\"},\"fields35\":{\"field\":\"2956\",\"custom_value\":\"\"},\"fields36\":{\"field\":\"2865\",\"custom_value\":\"\"},\"fields37\":{\"field\":\"2863\",\"custom_value\":\"\"},\"fields38\":{\"field\":\"2955\",\"custom_value\":\"\"},\"fields39\":{\"field\":\"2989\",\"custom_value\":\"\"},\"fields40\":{\"field\":\"2992\",\"custom_value\":\"\"},\"fields41\":{\"field\":\"2954\",\"custom_value\":\"\"},\"fields42\":{\"field\":\"2894\",\"custom_value\":\"\"},\"fields43\":{\"field\":\"2891\",\"custom_value\":\"\"},\"fields44\":{\"field\":\"2997\",\"custom_value\":\"\"},\"fields45\":{\"field\":\"2868\",\"custom_value\":\"\"},\"fields46\":{\"field\":\"2864\",\"custom_value\":\"\"},\"fields47\":{\"field\":\"2953\",\"custom_value\":\"\"},\"fields48\":{\"field\":\"3003\",\"custom_value\":\"\"},\"fields49\":{\"field\":\"3005\",\"custom_value\":\"\"},\"fields50\":{\"field\":\"3004\",\"custom_value\":\"\"}}}}', '118e8615-4587-4055-818e-e9d4cf055aec', 'dXNlIEpvb21sYVxDTVNcRm9ybVxGb3JtOw0KdXNlIEpvb21sYVxDTVNcUGx1Z2luXENNU1BsdWdpbjsNCnVzZSBKb29tbGFcQ01TXENvbXBvbmVudFxDb21wb25lbnRIZWxwZXI7', 3, '{}', 'W0NVU1RPTUNPREU9aGVhZGVyc1RhYnNKZml2ZStkeW5hbWljX2dldF0=', '[[[Component]]] Dynamic Get Headers Tabs', '', '', '', '', '', '', '', '4.0.0', '{}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'JCB Dynamic Get Headers Tabs J5', '', 1, '', '', 1, '2024-03-10 15:55:24', '2024-08-11 11:18:41', 6, '', 2),
(46, 1, '', '', '', 1, '', '', '', '', '', '', '', '', 1, 'Add Access Token to easy update [[[Component]]]', '{}', '5236660d-5dee-492b-925c-15b96cb6ea44', 'dXNlIEpvb21sYVxDTVNcVXJpXFVyaTsNCnVzZSBKb29tbGFcQ01TXExhbmd1YWdlXFRleHQ7DQp1c2UgSm9vbWxhXENNU1xDb21wb25lbnRcQ29tcG9uZW50SGVscGVyOw==', 12, '{\"method_selection0\":{\"method\":\"103\"}}', 'CS8qKg0KCSAqIEFmZmVjdHMgY29uc3RydWN0b3IgYmVoYXZpb3VyLiBJZiB0cnVlLCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIGxvYWRlZCBhdXRvbWF0aWNhbGx5Lg0KCSAqDQoJICogQHZhciAgICBib29sZWFuDQoJICogQHNpbmNlICAxLjAuMA0KCSAqLw0KCXByb3RlY3RlZCAgJGF1dG9sb2FkTGFuZ3VhZ2UgPSB0cnVlOw0KDQoJLyoqDQoJICogb25JbnN0YWxsZXJCZWZvcmVQYWNrYWdlRG93bmxvYWQuDQoJICoNCgkgKiBGb3IgbW9kaWZpY2F0aW9uIG9mIFVSTCBhbmQgaGVhZGVycyBiZWZvcmUgcGFja2FnZSBkb3dubG9hZA0KCSAqDQoJICogQHJldHVybiAgdm9pZA0KCSAqDQoJICogQHNpbmNlICAgMS4wDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIG9uSW5zdGFsbGVyQmVmb3JlUGFja2FnZURvd25sb2FkKCYkdXJsLCAmJGhlYWRlcnMpDQoJew0KCQkvLyBzZXQgdGhlIFVSSSBvYmplY3QNCgkJJHVyaSA9IFVyaTo6Z2V0SW5zdGFuY2UoJHVybCk7DQoJCSRwYXJ0cyA9IGV4cGxvZGUoJy8nLCAkdXJpLT5nZXRQYXRoKCkpOw0KDQoJCS8vIGNoZWNrIHRoYXQgdGhpcyBpcyBvdXIgQVBJDQoJCWlmICgkdXJpLT5nZXRIb3N0KCkgPT0gJ1tbW2dpdGVhX3VybF1dXScgJiYgaW5fYXJyYXkoJ1tbW2dpdGVhX3BhY2thZ2VfbmFtZV1dXScsICRwYXJ0cykpDQoJCXsNCgkJCS8vIGdldCB0aGUgdG9rZW4gaWYgc2V0DQoJCQkkdG9rZW4gPSBDb21wb25lbnRIZWxwZXI6OmdldFBhcmFtcygnY29tX1tbW2NvbXBvbmVudF1dXScpLT5nZXQoJ2dpdGVhX3Rva2VuJywgZmFsc2UpOw0KCQkJLy8gb25seSBhZGQgaWYgdG9rZW4gaXMgc2V0DQoJCQlpZiAoJHRva2VuKQ0KCQkJew0KCQkJCS8vIGFkZCB0aGUgdG9rZW4NCgkJCQkkdXJpLT5zZXRWYXIoJ2FjY2Vzc190b2tlbicsICR0b2tlbik7DQoJCQkJLy8gdXBkYXRlIHRoZSBVUkwNCgkJCQkkdXJsID0gJHVyaS0+dG9TdHJpbmcoKTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkvLyBzZXQgdGhlIHJldHVybiBVUkwNCgkJCQkkcmV0dXJuID0gdXJsZW5jb2RlKGJhc2U2NF9lbmNvZGUoKHN0cmluZykgVXJpOjpnZXRJbnN0YW5jZSgpKSk7DQoJCQkJLy8gc2V0IHRoZSB1cmxzDQoJCQkJJGdldF9hY2Nlc3NfdG9rZW5fdXJsID0gJyJodHRwczovL1tbW2dpdGVhX3VybF1dXS91c2VyL3NldHRpbmdzL2FwcGxpY2F0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSInIC4gVGV4dDo6XygnR2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCSRzZXRfYWNjZXNzX3Rva2VuX3VybCA9ICciJyAuIFVyaTo6cm9vdCgpIC4gJ2FkbWluaXN0cmF0b3IvaW5kZXgucGhwP29wdGlvbj1jb21fY29uZmlnJnZpZXc9Y29tcG9uZW50JmNvbXBvbmVudD1jb21fW1tbY29tcG9uZW50XV1dJnBhdGg9JnJldHVybj0nIC4gJHJldHVybiAuICciIHRpdGxlPSInIC4gVGV4dDo6XygnU2V0IEFjY2VzcyBUb2tlbicpIC4gJyInOw0KCQkJCS8vIGxvYWQgdGhlIG1lc3NhZ2UNCgkJCQkkdGhpcy0+Z2V0QXBwbGljYXRpb24oKS0+ZW5xdWV1ZU1lc3NhZ2UoDQoJCQkJCVRleHQ6OnNwcmludGYoIklmIHRoZXJlIHdhcyBhIGRvd25sb2FkL3VwZGF0ZSBlcnJvciwgaXQncyBwcm9iYWJseSBiZWNhdXNlIHRoZSA8YSBocmVmPSVzID5BUEkgQWNjZXNzIFRva2VuPC9hPiBmb3IgdXBkYXRlcyBvZiBbW1tjb21wb25lbnRdXV0gaGFzIG5vdCBiZWVuIHNldCwgeW91IGNhbiBzZXQgdGhpcyBhY2Nlc3MgdG9rZW4gaW4gdGhlIDxhIGhyZWY9JXMgPmdsb2JhbCBvcHRpb25zIHRhYjwvYT4uIiwNCgkJCQkJCSRnZXRfYWNjZXNzX3Rva2VuX3VybCwNCgkJCQkJCSRzZXRfYWNjZXNzX3Rva2VuX3VybA0KCQkJCQkpLCAnbm90aWNlJyk7DQoJCQl9DQoJCX0NCgl9', 'componentbuilder', '', '', '', 'Ly8=', '', '', '', '3.0.0', '{\"property_selection0\":{\"property\":\"39\"}}', 'WW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgbWFya2Rvd24sIGluY2x1ZGluZyB0aGUgcGxhY2UtaG9sZGVycy4=', '', '', '', 'Update (git.vdm.dev) J5', '', 1, '', '', 1, '2024-03-10 17:27:35', '2024-08-11 11:18:28', 7, '', 9);

--
-- Dumping data for table `#__componentbuilder_admin_view`
--

INSERT INTO `#__componentbuilder_admin_view` (`id`, `add_css_view`, `add_css_views`, `add_custom_button`, `add_custom_import`, `add_fadein`, `add_javascript_view_file`, `add_javascript_view_footer`, `add_javascript_views_file`, `add_javascript_views_footer`, `add_php_ajax`, `add_php_allowedit`, `add_php_batchcopy`, `add_php_batchmove`, `add_php_getitem`, `add_php_getitems`, `add_php_getitems_after_all`, `add_php_getlistquery`, `add_php_postsavehook`, `add_php_save`, `add_sql`, `addlinked_views`, `addpermissions`, `addtables`, `addtabs`, `add_php_before_delete`, `add_php_before_publish`, `add_php_document`, `add_php_after_delete`, `add_php_after_publish`, `php_before_delete`, `php_before_publish`, `php_controller`, `php_document`, `php_after_delete`, `php_after_publish`, `ajax_input`, `css_view`, `css_views`, `custom_button`, `description`, `html_import_view`, `icon`, `icon_add`, `icon_category`, `javascript_view_file`, `javascript_view_footer`, `javascript_views_file`, `javascript_views_footer`, `name_list`, `system_name`, `name_single`, `php_ajaxmethod`, `php_allowedit`, `php_batchcopy`, `php_batchmove`, `php_getitem`, `php_getitems`, `php_getitems_after_all`, `php_getlistquery`, `php_import`, `php_import_display`, `php_import_save`, `php_import_setdata`, `php_model`, `php_postsavehook`, `php_save`, `short_description`, `source`, `sql`, `type`, `php_before_save`, `php_controller_list`, `php_getform`, `php_after_cancel`, `php_allowadd`, `php_before_cancel`, `php_import_ext`, `php_import_headers`, `php_model_list`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(109, '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"More\"}}', '', '', '', '', '', '', '', '', '', '', '', '{}', '', '', '{}', '', '', 'images/WoodMannequin-icon.png', 'images/WoodMannequin-icon-plus.png', '', '', '', '', '', 'Looks', 'Look', 'Look', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'The demo view', '', '', 1, '', '', '', '', '', '', '', '', '', '{\"privacy\":{\"activate\":\"1\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"682\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2016-10-18 11:44:46', '2024-07-25 18:06:21', 22, '', 110, 'c1053952-8a84-4398-aef1-41726f7c0043');

--
-- Dumping data for table `#__componentbuilder_site_view`
--

INSERT INTO `#__componentbuilder_site_view` (`id`, `add_css_document`, `add_css`, `add_js_document`, `add_php_document`, `add_php_jview`, `add_php_jview_display`, `add_php_view`, `add_php_ajax`, `add_custom_button`, `custom_button`, `button_position`, `php_controller`, `php_model`, `ajax_input`, `php_ajaxmethod`, `codename`, `css_document`, `css`, `custom_get`, `default`, `description`, `dynamic_get`, `js_document`, `main_get`, `name`, `system_name`, `php_document`, `php_jview`, `php_jview_display`, `php_view`, `snippet`, `params`, `javascript_file`, `libraries`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(23, '', '', '', '', '', '', '', '', '', '{}', '', '', '', '{}', '', 'looks', '', '', '', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+PD9waHAgZWNobyBUZXh0OjpfKCdMaXN0IG9mIGFsbCBsb29rcycpOyA/PjwvY2FwdGlvbj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD48P3BocCBlY2hvIFRleHQ6Ol8oJ05hbWUnKTsgPz48L3RoPg0KICAgICAgICAgICAgPHRoPjw/cGhwIGVjaG8gVGV4dDo6XygnRGVzY3JpcHRpb24nKTsgPz48L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0KICAgICAgICA8P3BocCBmb3JlYWNoICgkdGhpcy0+aXRlbXMgYXMgJGl0ZW0pOiA/Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0iPD9waHAgZWNobyAgSm9vbWxhX19fOTIxNjdmMThfODU0M180MGU4XzkyYWZfMDUzZWY0YzIxMGQxX19fUG93ZXI6OmdldExvb2tpbmdSb3V0ZSgkaXRlbS0+c2x1Zyk7ID8+IiA+PD9waHAgZWNobyAkaXRlbS0+bmFtZTsgPz48L2E+PC90ZD4NCiAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJGl0ZW0tPmRlc2NyaXB0aW9uLCB0cnVlLCAxMjApOyA/Pjw/cGhwIGVjaG8gJGl0ZW0tPmVkaXRMaW5rOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgPC90Ym9keT4NCjwvdGFibGU+', 'The List of all published looks', 36, '', 36, 'Looks', 'Looks', '', '', '', '', '', '{\"site_view_headers\":{\"add_site_view_model\":\"0\",\"site_view_model\":\"\",\"power_site_view_model\":[],\"add_site_view_html\":\"0\",\"site_view_html\":\"\",\"power_site_view_html\":[],\"add_site_view\":\"0\",\"site_view\":\"\",\"power_site_view\":[],\"add_site_view_controller\":\"0\",\"site_view_controller\":\"\",\"power_site_view_controller\":[],\"add_site_views_model\":\"0\",\"site_views_model\":\"\",\"power_site_views_model\":[],\"add_site_views_html\":\"0\",\"site_views_html\":\"\",\"power_site_views_html\":[],\"add_site_views\":\"0\",\"site_views\":\"\",\"power_site_views\":[],\"add_site_views_controller\":\"0\",\"site_views_controller\":\"\",\"power_site_views_controller\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', '', '', 1, '2016-04-05 14:31:59', '2024-07-24 14:31:08', 11, '', 14, 'b2dce59e-e3b8-4467-bcb5-8f2df4bdfeb7'),
(25, '', '', '', '', 1, 1, '', '', '', '{}', 1, '', '', '{}', '', 'looking', '', '', '', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bmFtZSk7ID8+PC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1tZXRhIj48P3BocCBlY2hvIFRleHQ6Ol8oJ0hpdHMnKTsgPz46IDw/cGhwIGVjaG8gJHRoaXMtPml0ZW0tPmhpdHM7ID8+PC9kaXY+DQogICAgPC9oZWFkZXI+DQogICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1ib2R5Ij4NCiAgICAgICAgPD9waHAgZWNobyAkdGhpcy0+aXRlbS0+ZGVzY3JpcHRpb247ID8+DQogICAgICAgIDw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgdWstdG9nZ2xlPSJ0YXJnZXQ6ICNtb3JlLWRldGFpbHMtMDkwIj48P3BocCBlY2hvIFRleHQ6Ol8oJ01vcmUgRGV0YWlscycpOyA/PjwvYnV0dG9uPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICA8L2Rpdj4NCjwvYXJ0aWNsZT4NCjw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCjwhLS0gVGhpcyBpcyB0aGUgbW9kYWwgLS0+DQo8ZGl2IGlkPSJtb3JlLWRldGFpbHMtMDkwIiB1ay1tb2RhbD4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1kaWFsb2cgdWstbW9kYWwtYm9keSI+DQogICAgICAgIDxidXR0b24gY2xhc3M9InVrLW1vZGFsLWNsb3NlLWRlZmF1bHQiIHR5cGU9ImJ1dHRvbiIgdWstY2xvc2U+PC9idXR0b24+DQogICAgICAgIDxkbCBjbGFzcz0idWstZGVzY3JpcHRpb24tbGlzdCB1ay1kZXNjcmlwdGlvbi1saXN0LWRpdmlkZXIiPg0KICAgICAgICA8P3BocCBpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdCaXJ0aCBkYXknKTsgPz48L2R0PjxkZD48P3BocCBlY2hvIEpvb21sYV9fX2NmM2I5NWMxX2JhNTZfNDE5M184ZWI0XzkxNjQ1ODJiN2Y1NV9fX1Bvd2VyOjpmYW5jeURhdGUoJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+ZGF0ZW9mYmlydGgpKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT5lbWFpbCkpOiA/Pg0KICAgICAgICAgICAgPGR0Pjw/cGhwIGVjaG8gVGV4dDo6XygnRW1haWwnKTsgPz48L2R0PjxkZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPmVtYWlsKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT5tb2JpbGVfcGhvbmUpKTogPz4NCiAgICAgICAgICAgIDxkdD48P3BocCBlY2hvIFRleHQ6Ol8oJ01vYmlsZScpOyA/PjwvZHQ+PGRkPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bW9iaWxlX3Bob25lKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT53ZWJzaXRlKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdXZWJzaXRlJyk7ID8+PC9kdD48ZGQ+PD9waHAgZWNobyAkdGhpcy0+ZXNjYXBlKCR0aGlzLT5pdGVtLT53ZWJzaXRlKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPC9kbD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPD9waHAgZW5kaWY7ID8+', 'Looking at a look', 39, '', 39, 'Looking', 'Looking', '', 'CSAvKioNCgkgKiBJbmNyZW1lbnQgdGhlIGhpdCBjb3VudGVyIGZvciB0aGUgcHJlYWNoZXIuDQoJICoNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGsgIFByaW1hcnkga2V5IG9mIHRoZSBwcmVhY2hlciB0byBpbmNyZW1lbnQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHN1Y2Nlc3NmdWw7DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGhpdCgkcGsgPSAwKQ0KCXsNCgkJaWYgKCRwaykNCgkJew0KCQkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJICAgICRkYi0+cXVvdGVOYW1lKCdoaXRzJykgLiAnID0gJy4kZGItPnF1b3RlTmFtZSgnaGl0cycpLicgKyAxJw0KCQkJKTsNCg0KCQkJLy8gQ29uZGl0aW9ucyBmb3Igd2hpY2ggcmVjb3JkcyBzaG91bGQgYmUgdXBkYXRlZC4NCgkJCSRjb25kaXRpb25zID0gYXJyYXkoDQoJCQkgICAgJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gJyAuICRwaw0KCQkJKTsNCg0KCQkJJHF1ZXJ5LT51cGRhdGUoJGRiLT5xdW90ZU5hbWUoJyNfX1tbW2NvbXBvbmVudF1dXV9sb29rJykpLT5zZXQoJGZpZWxkcyktPndoZXJlKCRjb25kaXRpb25zKTsNCg0KCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9', 'Ly8gYWRkIGEgaGl0IHRvIHRoZSBsb29rDQppZiAoJHRoaXMtPmhpdCgkdGhpcy0+aXRlbS0+aWQpKQ0Kew0KCSR0aGlzLT5pdGVtLT5oaXRzKys7DQp9', '', '', '{\"site_view_headers\":{\"add_site_view_model\":\"0\",\"site_view_model\":\"\",\"power_site_view_model\":[],\"add_site_view_html\":\"0\",\"site_view_html\":\"\",\"power_site_view_html\":[],\"add_site_view\":\"0\",\"site_view\":\"\",\"power_site_view\":[],\"add_site_view_controller\":\"0\",\"site_view_controller\":\"\",\"power_site_view_controller\":[],\"add_site_views_model\":\"0\",\"site_views_model\":\"\",\"power_site_views_model\":[],\"add_site_views_html\":\"0\",\"site_views_html\":\"\",\"power_site_views_html\":[],\"add_site_views\":\"0\",\"site_views\":\"\",\"power_site_views\":[],\"add_site_views_controller\":\"0\",\"site_views_controller\":\"\",\"power_site_views_controller\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', '', '', 1, '2016-10-20 15:11:29', '2024-07-24 14:52:19', 19, '', 14, '851ed44e-5431-4951-876f-4b62a4c56ad2');

--
-- Dumping data for table `#__componentbuilder_layout`
--

INSERT INTO `#__componentbuilder_layout` (`id`, `add_php_view`, `alias`, `description`, `dynamic_get`, `layout`, `name`, `php_view`, `snippet`, `params`, `published`, `version`, `hits`, `ordering`, `libraries`) VALUES
(97, '', 'trashhelper', 'Trash Helper Layout', '', 'PD9waHAgaWYgKCRkaXNwbGF5RGF0YS0+c3RhdGUtPmdldCgnZmlsdGVyLnB1Ymxpc2hlZCcpID09IC0yICYmICgkZGlzcGxheURhdGEtPmNhblN0YXRlICYmICRkaXNwbGF5RGF0YS0+Y2FuRGVsZXRlKSkgOiA/Pg0KCTxzY3JpcHQ+DQoJCS8vIGNoYW5nZSB0aGUgY2xhc3Mgb2YgdGhlIGRlbGV0ZSBidXR0b24NCgkJalF1ZXJ5KCIjdG9vbGJhci1kZWxldGUgYnV0dG9uIikudG9nZ2xlQ2xhc3MoImJ0bi1kYW5nZXIiKTsNCgkJLy8gZnVuY3Rpb24gdG8gZW1wdHkgdGhlIHRyYXNoDQoJCWZ1bmN0aW9uIGVtcHR5VHJhc2goKSB7DQoJCQlpZiAoZG9jdW1lbnQuYWRtaW5Gb3JtLmJveGNoZWNrZWQudmFsdWUgPT0gMCkgew0KCQkJCS8vIHNlbGVjdCBhbGwgdGhlIGl0ZW1zIHZpc2FibGUNCgkJCQlkb2N1bWVudC5hZG1pbkZvcm0uZWxlbWVudHNbJ2NoZWNrYWxsLXRvZ2dsZSddLmNoZWNrZWQ9MTsNCgkJCQlKb29tbGEuY2hlY2tBbGwoZG9jdW1lbnQuYWRtaW5Gb3JtLmVsZW1lbnRzWydjaGVja2FsbC10b2dnbGUnXSk7DQoJCQkJLy8gY2hlY2sgdG8gY29uZmlybSB0aGUgZGVsZXRpb24NCgkJCQlpZihjb25maXJtKCc8Pz0gVGV4dDo6XygiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZT8gQ29uZmlybWluZyB3aWxsIHBlcm1hbmVudGx5IGRlbGV0ZSB0aGUgc2VsZWN0ZWQgaXRlbShzKSEiKSA/PicpKSB7DQoJCQkJCUpvb21sYS5zdWJtaXRidXR0b24oJzw/PSAkZGlzcGxheURhdGEtPmdldCgibmFtZSIpID8+LmRlbGV0ZScpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWRvY3VtZW50LmFkbWluRm9ybS5lbGVtZW50c1snY2hlY2thbGwtdG9nZ2xlJ10uY2hlY2tlZD0wOw0KCQkJCQlKb29tbGEuY2hlY2tBbGwoZG9jdW1lbnQuYWRtaW5Gb3JtLmVsZW1lbnRzWydjaGVja2FsbC10b2dnbGUnXSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkvLyBjb25maXJtIGRlbGV0aW9uIG9mIHRob3NlIHNlbGVjdGVkDQoJCQkJaWYgKGNvbmZpcm0oJzw/PSBUZXh0OjpfKCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlPyBDb25maXJtaW5nIHdpbGwgcGVybWFuZW50bHkgZGVsZXRlIHRoZSBzZWxlY3RlZCBpdGVtKHMpISIpID8+JykpIHsNCgkJCQkJSm9vbWxhLnN1Ym1pdGJ1dHRvbignPD89ICRkaXNwbGF5RGF0YS0+Z2V0KCJuYW1lIikgPz4uZGVsZXRlJyk7DQoJCQkJfTsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkvLyBmdW5jdGlvbiB0byBleGl0IHRoZSB0YXNoIHN0YXRlDQoJCWZ1bmN0aW9uIGV4aXRUcmFzaCgpIHsNCgkJCWRvY3VtZW50LmFkbWluRm9ybS5maWx0ZXJfcHVibGlzaGVkLnNlbGVjdGVkSW5kZXggPSAwOw0KCQkJZG9jdW1lbnQuYWRtaW5Gb3JtLnN1Ym1pdCgpOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJPC9zY3JpcHQ+DQoJPGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZXJyb3IiPg0KCQk8P3BocCBpZiAoZW1wdHkoJGRpc3BsYXlEYXRhLT5pdGVtcykpOiA/Pg0KCQkJPGg0IGNsYXNzPSJhbGVydC1oZWFkaW5nIj4NCgkJCQk8c3BhbiBjbGFzcz0iaWNvbi10cmFzaCI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJUcmFzaCBBcmVhIikgPz4NCgkJCTwvaDQ+DQoJCQk8cD48Pz0gVGV4dDo6XygiWW91IGFyZSBjdXJyZW50bHkgdmlld2luZyB0aGUgdHJhc2ggYXJlYSwgYW5kIHlvdSBkb24ndCBoYXZlIGFueSBpdGVtcyBpbiB0cmFzaCBhdCB0aGUgbW9tZW50ISIpID8+PC9wPg0KCQk8P3BocCBlbHNlOiA/Pg0KCQkJPGg0IGNsYXNzPSJhbGVydC1oZWFkaW5nIj4NCgkJCQk8c3BhbiBjbGFzcz0iaWNvbi10cmFzaCI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJUcmFzaGVkIGl0ZW1zIikgPz4NCgkJCTwvaDQ+DQoJCQk8cD48Pz0gVGV4dDo6XygiWW91IGFyZSBjdXJyZW50bHkgdmlld2luZyB0aGUgdHJhc2hlZCBpdGVtcy4iKSA/PjwvcD4NCgkJCTxidXR0b24gb25jbGljaz0iZW1wdHlUcmFzaCgpOyIgY2xhc3M9ImJ0biBidG4tc21hbGwgYnRuLWRhbmdlciI+DQoJCQkJPHNwYW4gY2xhc3M9Imljb24tZGVsZXRlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPg0KCQkJCTw/PSBUZXh0OjpfKCJFbXB0eSB0cmFzaCIpID8+DQoJCQk8L2J1dHRvbj4NCgkJPD9waHAgZW5kaWY7ID8+DQoJCTxidXR0b24gb25jbGljaz0iZXhpdFRyYXNoKCk7IiBjbGFzcz0iYnRuIGJ0bi1zbWFsbCI+DQoJCQk8c3BhbiBjbGFzcz0iaWNvbi1iYWNrIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9zcGFuPg0KCQkJPD89IFRleHQ6Ol8oIkV4aXQgdHJhc2giKSA/Pg0KCQk8L2J1dHRvbj4NCgk8L2Rpdj4NCjw/cGhwIGVuZGlmOyA/Pg==', 'Trash Helper', '', '', '', 1, 8, '', 27, '');

--
-- Dumping data for table `#__componentbuilder_dynamic_get`
--

INSERT INTO `#__componentbuilder_dynamic_get` (`id`, `add_php_after_getitem`, `add_php_before_getitem`, `add_php_after_getitems`, `add_php_before_getitems`, `add_php_getlistquery`, `php_after_getitem`, `php_before_getitem`, `php_before_getitems`, `php_getlistquery`, `php_after_getitems`, `pagination`, `addcalculation`, `db_selection`, `db_table_main`, `filter`, `getcustom`, `gettype`, `global`, `join_db_table`, `join_view_table`, `main_source`, `name`, `order`, `php_calculation`, `php_custom_get`, `view_selection`, `view_table_main`, `where`, `php_router_parse`, `group`, `params`, `published`, `version`, `hits`, `ordering`, `guid`) VALUES
(36, '', '', 1, '', '', '', '', '', '', 'CQkvLyBkbyBhIHF1aWNrIGJ1aWxkIG9mIGFsbCBlZGl0IGxpbmtzIGxpbmtzDQoJCWlmIChpc3NldCgkaXRlbXMpICYmICRpdGVtcykNCgkJew0KCQkJZm9yZWFjaCAoJGl0ZW1zIGFzICRuciA9PiAmJGl0ZW0pDQoJCQl7DQoJCQkJJGNhbkRvID0gW1tbQ29tcG9uZW50XV1dSGVscGVyOjpnZXRBY3Rpb25zKCdsb29rJywkaXRlbSwnbG9va3MnKTsNCgkJCQlpZiAoJGNhbkRvLT5nZXQoJ2xvb2suZWRpdCcpKQ0KCQkJCXsNCgkJCQkJJGl0ZW0tPmVkaXRMaW5rID0gJzxiciAvPjxiciAvPjxhIGNsYXNzPSJ1ay1idXR0b24gdWstYnV0dG9uLXByaW1hcnkgdWstd2lkdGgtMS0xIiBocmVmPSInOw0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgLj0gSm9vbWxhX19fZDRjNzYwOTlfNGMzMl80MDhhXzg3MDFfZDBhNzI0NDg0ZGZkX19fUG93ZXI6Ol8oJ2luZGV4LnBocD9vcHRpb249Y29tX1tbW2NvbXBvbmVudF1dXSZ2aWV3PWxvb2smdGFzaz1sb29rLmVkaXQmaWQ9JyAuICRpdGVtLT5pZCk7DQoJCQkJCSRpdGVtLT5lZGl0TGluayAuPSAnIj48aSBjbGFzcz0idWstaWNvbi1wZW5jaWwiPjwvaT48c3BhbiBjbGFzcz0idWstaGlkZGVuLXNtYWxsIj4nOw0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgLj0gVGV4dDo6XygnRWRpdCBMb29rJyk7DQoJCQkJCSRpdGVtLT5lZGl0TGluayAuPSAnPC9zcGFuPjwvYT4nOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkaXRlbS0+ZWRpdExpbmsgPSAnJzsNCgkJCQl9DQoJCQl9DQoJCX0=', 1, '', '', '', '', '', 2, '', '', '', 1, 'Looks', '{\"order0\":{\"table_key\":\"a.name\",\"direction\":\"ASC\"}}', '', '', 'a.*', 109, '{\"where0\":{\"table_key\":\"a.published\",\"operator\":\"1\",\"value_key\":\"1\"}}', '', '', '', 1, 12, '', 13, '32b3ae7d-8aa8-47f1-ab2e-30076ddaa029'),
(39, '', '', '', '', '', '', '', '', '', '', 1, '', '', '', '{\"filter0\":{\"filter_type\":\"1\",\"state_key\":\"id\",\"operator\":\"1\",\"table_key\":\"a.id\"}}', '', 1, '', '', '', 1, 'Looking', '', '', '', 'a.id AS id\r\na.name AS name\r\na.alias AS alias\r\na.description AS description\r\na.add AS add\r\na.email AS email\r\na.mobile_phone AS mobile_phone\r\na.dateofbirth AS dateofbirth\r\na.image AS image\r\na.website AS website\r\na.published AS published\r\na.hits AS hits\r\na.created_by AS created_by', 109, '', '', '', '', 1, 8, '', '', '98e6ea56-0911-4d89-b1f4-8f0bb1e4aa5a');

--
-- Dumping data for table `#__componentbuilder_placeholder`
--

INSERT INTO `#__componentbuilder_placeholder` (`id`, `target`, `value`, `params`, `published`, `created`, `modified`) VALUES
(19, '[[[gitea_api_url]]]', 'aHR0cHM6Ly9naXQudmRtLmRldi9hcGkvdjE=', '', 1, '2021-12-04 02:34:16', '2022-01-07 20:15:57'),
(20, '[[[COMPANY]]]', 'VkRN', '', 1, '2021-12-05 20:36:52', '2021-12-05 20:37:11'),
(21, '[[[gitea_url]]]', 'Z2l0LnZkbS5kZXY=', '', 1, '2023-07-08 07:54:21', '0000-00-00 00:00:00'),
(25, '[[[upload_max_filesize]]]', 'MTI4TQ==', '', 1, '2024-04-25 07:24:25', '0000-00-00 00:00:00'),
(26, '[[[post_max_size]]]', 'MTI4TQ==', '', 1, '2024-04-25 07:24:50', '0000-00-00 00:00:00'),
(27, '[[[max_execution_time]]]', 'NjA=', '', 1, '2024-04-25 07:25:11', '0000-00-00 00:00:00'),
(28, '[[[max_input_vars]]]', 'NzAwMA==', '', 1, '2024-04-25 07:25:27', '0000-00-00 00:00:00'),
(29, '[[[max_input_time]]]', 'NjA=', '', 1, '2024-04-25 07:25:43', '0000-00-00 00:00:00'),
(30, '[[[memory_limit]]]', 'MjU2TQ==', '', 1, '2024-04-25 07:26:05', '0000-00-00 00:00:00'),
(31, '[[[environment_wiki_url]]]', 'Z2l0LnZkbS5kZXYvam9vbWxhL0NvbXBvbmVudC1CdWlsZGVyL3dpa2kvUEhQLVNldHRpbmdz', '', 1, '2024-07-27 12:58:39', '0000-00-00 00:00:00');

--
-- Dumping data for table `#__componentbuilder_library`
--

INSERT INTO `#__componentbuilder_library` (`id`, `addconditions`, `description`, `type`, `how`, `name`, `php_setdocument`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `libraries`, `params`, `guid`) VALUES
(1, '', '', 1, '', 'No Library', '', 1, '2017-11-11 22:08:33', '2017-12-08 15:51:34', 4, '', 1, '', '', 'bc8e675d-7536-4a68-b186-fb4b988fa3e2'),
(2, '', '', 1, 1, 'Bootstrap v4', '', 1, '2017-11-12 02:08:39', '2017-12-17 09:04:10', 18, '', 2, '', '', '6f6650a5-ebff-4783-8508-f0285c0e98a6'),
(3, '{}', '', 1, 1, 'Uikit v3', '', 1, '2017-11-11 22:08:45', '2021-05-27 00:18:36', 20, '', 3, '', '', '5eeee148-cebd-4a92-bc0e-56efea3cffdc'),
(4, '', '', 1, 4, 'Uikit v2', '', 1, '2017-11-11 22:08:51', '2018-06-29 02:36:17', 6, '', 4, '', '', '367fbf66-890e-42a7-a82d-f780d2f86786'),
(5, '', '', 1, 4, 'FooTable v2', '', 1, '2017-11-11 22:08:57', '2017-12-11 20:07:32', 9, '', 5, '', '', 'a90edd5a-8521-4fb1-b6b3-9a21e9f56642'),
(6, '', '', 1, 4, 'FooTable v3', '', 1, '2017-11-25 22:11:03', '2017-12-10 15:54:45', 12, '', 6, '', '', '86829029-dc8a-424e-b046-b189a92565d9');

--
-- Dumping data for table `#__componentbuilder_snippet`
--

INSERT INTO `#__componentbuilder_snippet` (`id`, `contributor_company`, `contributor_email`, `contributor_name`, `contributor_website`, `description`, `heading`, `library`, `name`, `snippet`, `type`, `url`, `usage`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(1, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The grid system of UIkit follows the mobile-first approach and accomodates up to 10 grid columns. It uses units with predefined classes inside each grid, which define the column width. It is also possible to combine the grid with classes from the Flex component, although it works only in modern browsers.', 'Create a fully responsive, fluid and nestable grid layout.', 4, 'Grid', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ0bS1ncmlkLXRydW5jYXRlIHVrLWdyaWQgdWstZ3JpZC1kaXZpZGVyIHVrLXRleHQtY2VudGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0zIj4NCiAgICAJPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgCXtjb250ZW50fQ0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid.html', 'To create the grid container, add the .uk-grid class to a parent element. Add one of the .uk-width-* classes to child elements to determine, how the units shall be sized. The grid supports 1, 2, 3, 4, 5, 6 and 10 unit divisions. This table gives you an overview of the uk-width-* classes that can be applied to units.', '', 1, '2015-05-19 17:18:32', '2017-11-11 22:09:27', 77, '', 1, 'fba0aa3f-03e4-49e7-92b6-9d5e98f66967'),
(2, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'UIkit uses panels to outline certain sections of your content, which can be styled differently. Typically, panels are arranged in grid columns from the Grid component.', 'Create layout boxes with different styles.', 4, 'Panel', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstcGFuZWwgdWstcGFuZWwtYm94Ij4NCiAgICAgICAgICAgIDxoMyBjbGFzcz0idWstcGFuZWwtdGl0bGUiPnt0aXRsZX08L2gzPg0KICAgICAgICAgICAge2NvbnRlbnR9DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPg0KICAgICAgICAgICAgPGgzIGNsYXNzPSJ1ay1wYW5lbC10aXRsZSI+e3RpdGxlfTwvaDM+DQogICAgICAgICAgICB7Y29udGVudH0NCiAgICAgICAgPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/panel.html', 'The Panel component consists of the panel itself, the panel title and a panel badge. To prevent redundant white space, top and bottom margins are removed from the panel\'s content.', '', 1, '2015-05-19 20:04:54', '2017-11-11 22:09:27', 70, '', 1, '4b6e7ee3-75d9-459a-805e-764915247253'),
(3, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Separate content sections by bundling them in blocks with different styles.', 4, 'Block', 'PGRpdiBjbGFzcz0idWstYmxvY2sgdWstYmxvY2stcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+', 1, 'http://getuikit.com/docs/block.html', 'To apply this component, just add the .uk-block class to a container element.', '', 1, '2015-05-19 20:09:41', '2017-11-11 22:09:27', 56, '', 2, 'cf2eb2fa-38d1-431c-9383-939c58becd7a'),
(4, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create articles within your page.', 4, 'Article', 'PGFydGljbGUgY2xhc3M9InVrLWFydGljbGUiPg0KICAgIDxoMSBjbGFzcz0idWstYXJ0aWNsZS10aXRsZSI+e3RpdGxlfTwvaDE+DQogICAgPHAgY2xhc3M9InVrLWFydGljbGUtbWV0YSI+e21ldGF9PC9wPg0KICAgIDxwIGNsYXNzPSJ1ay1hcnRpY2xlLWxlYWQiPntjb250ZW50fTwvcD4NCiAgICB7Y29udGVudH0NCiAgICA8aHIgY2xhc3M9InVrLWFydGljbGUtZGl2aWRlciI+DQogICAge2NvbnRlbnR9DQo8L2FydGljbGU+', 1, 'http://getuikit.com/docs/article.html', 'The article component consists of the article itself, a title, meta data, an opening paragraph and dividers.', '', 1, '2015-05-19 20:12:06', '2017-11-11 22:09:27', 53, '', 3, 'ced3bf82-0a72-4acd-a1f5-471959993f2b'),
(5, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create comments, for example about articles.', 4, 'Comment', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPnt0aXRsZX08L2g0Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1jb21tZW50LW1ldGEiPnttZXRhfTwvZGl2Pg0KICAgIDwvaGVhZGVyPg0KICAgIDxkaXYgY2xhc3M9InVrLWNvbW1lbnQtYm9keSI+e3RpdGxlfTwvZGl2Pg0KPC9hcnRpY2xlPg==', 1, 'http://getuikit.com/docs/comment.html', 'The Comment component consists of a comment header, including an avatar, a title and meta data, and a comment body.', '', 1, '2015-05-19 20:13:53', '2017-11-11 22:09:27', 54, '', 4, '29e9ecf1-0646-44a6-a226-37cfdd4242dc'),
(6, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful utility classes to style your content.', 4, 'Utility Container', 'PGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiB1ay1jb250YWluZXItY2VudGVyIj57Y29udGVudH08L2Rpdj4=', 1, 'http://getuikit.com/docs/utility.html', 'Add the .uk-container class to a block element to give it a max-width and wrap the main content of your website. For large screens it applies a different max-width.\r\n\r\nTo center the container, use the .uk-container-center class. For any other block element, you additionally need to apply a width.', '', 1, '2015-05-19 20:18:00', '2017-11-11 22:09:27', 56, '', 5, '18735087-2ad0-465b-9468-bfac52b56721'),
(7, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful utility classes to style your content.', 4, 'Utility Clearing and floating', 'PGRpdiBjbGFzcz0idWstY2xlYXJmaXgiPg0KICAgIDxkaXYgY2xhc3M9InVrLWZsb2F0LXJpZ2h0Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1mbG9hdC1sZWZ0Ij57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/utility.html', 'Floating is fundamental for creating all kinds of layouts. But floats need to be cleared or in the worst case, you might end up with a scrambled site. The following classes will help you to setup basic layouts.', '', 1, '2015-05-19 20:18:54', '2017-11-11 22:09:27', 54, '', 5, '24e36964-a3ba-416d-93f5-be56c0e30231'),
(8, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component uses Flexbox, a concept that is still quite new but extremely powerful for creating layouts.', 'Utilize the power of Flexbox to create a wide range of layouts.', 4, 'Flex', 'PGRpdiBjbGFzcz0idWstZmxleCB1ay1mbGV4LXdyYXAgdWstZmxleC13cmFwLXJldmVyc2UgdWstZmxleC13cmFwLXNwYWNlLWFyb3VuZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0yIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSI+e2NvbnRlbnR9PC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtMS0zIHVrLXBhbmVsIHVrLXBhbmVsLWJveCB1ay1wYW5lbC1ib3gtcHJpbWFyeSB1ay1tYXJnaW4tbGVmdCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4=', 1, 'http://getuikit.com/docs/flex.html', 'To apply this component, just add the .uk-flex class to a  element. This will create the flex container. By default, all flex items will be aligned to the left and equally matched in height and width.', '', 1, '2015-05-19 20:22:23', '2017-11-11 22:09:27', 55, '', 5, '7725158d-f8b6-4fc3-ada7-0cd994f98ce5'),
(9, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component allows you to create fullscreen teasers using images, objects or even iframes. Regardless what kind of element, it will always be centered vertically and horizontally and cover its container without losing its proportions. You can also place additional content, like text or an image, on top of the image or video.', 'Expand images or videos to cover their entire container.', 4, 'Cover', 'PGRpdiBjbGFzcz0idWstY292ZXIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9InVrLWNvdmVyIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDx2aWRlbyBjbGFzcz0idWstY292ZXItb2JqZWN0IHVrLXBvc2l0aW9uLWFic29sdXRlIiB3aWR0aD0iIiBoZWlnaHQ9IiI+DQogICAgICAgIDxzb3VyY2Ugc3JjPSIiIHR5cGU9IiI+DQogICAgPC92aWRlbz4NCjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJ1ay1jb3Zlci1iYWNrZ3JvdW5kIHVrLXBvc2l0aW9uLXJlbGF0aXZlIj4NCiAgICA8aW1nIGNsYXNzPSJ1ay1pbnZpc2libGUiIHNyYz0iIiB3aWR0aD0iIiBoZWlnaHQ9IiIgYWx0PSIiPg0KICAgIDxkaXYgY2xhc3M9InVrLXBvc2l0aW9uLWNvdmVyIHVrLWZsZXggdWstZmxleC1jZW50ZXIgdWstZmxleC1taWRkbGUiPntjb250ZW50fTwvZGl2Pg0KPC9kaXY+', 1, 'http://getuikit.com/docs/cover.html', 'The Cover component is applied differently, depending on whether you are using a background image, an object or an iframe. The simplest way is to add the .uk-cover-background class to a  element with a background image.', '', 1, '2015-05-19 20:29:57', '2017-11-11 22:09:27', 54, '', 5, '2ca20d4d-82d3-412d-bada-95c2ba0d9bb0'),
(10, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Dynamic Grid component allows you to create a dynamic and responsive grid layout utilizing the Grid component. Grid items will arrange themselves fluently and seamlessly for a gap-free multi-column layout on all device sizes.', 'Create a multi-column, dynamic grid layout whose items can be sorted and filtered.', 4, 'Dynamic Grid', 'PCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay13aWR0aC0qIG9uIGVhY2ggaXRlbSAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLXNtYWxsLTEtMiB1ay13aWR0aC1tZWRpdW0tMS00Ij57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1zbWFsbC0xLTIgdWstd2lkdGgtbWVkaXVtLTEtNCI+e2NvbnRlbnR9PC9kaXY+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIGEgZ3JpZCB1c2luZyB1ay1ncmlkLXdpZHRoLSogb24gdGhlIGdyaWQgaXRzZWxmIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZC13aWR0aC1zbWFsbC0xLTIgdWstZ3JpZC13aWR0aC1tZWRpdW0tMS00IiBkYXRhLXVrLWdyaWQ+DQogICAgPGRpdj57Y29udGVudH08L2Rpdj4NCiAgICA8ZGl2Pntjb250ZW50fTwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gRmlsdGVyIENvbnRyb2xzIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN1Ym5hdiI+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSIiPjxhIGhyZWY9IiI+QWxsPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZmlsdGVyPSJmaWx0ZXItYSI+PGEgaHJlZj0iIj5BIEZpbHRlcjwvYT48L2xpPg0KICAgIDxsaSBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWIiPjxhIGhyZWY9IiI+YiBGaWx0ZXI8L2E+PC9saT4NCjwvdWw+DQo8IS0tIER5bmFtaWMgR3JpZCAtLT4NCjxkaXYgZGF0YS11ay1ncmlkPSJ7Y29udHJvbHM6ICcjbXktaWQnfSI+DQogICAgPGRpdiBkYXRhLXVrLWZpbHRlcj0iZmlsdGVyLWEiPntjb250ZW50fTwvZGl2Pg0KICAgIDxkaXYgZGF0YS11ay1maWx0ZXI9ImZpbHRlci1iIj57Y29udGVudH08L2Rpdj4NCjwvZGl2Pg==', 1, 'http://getuikit.com/docs/grid-js.html', 'To apply this component, add the data-uk-grid attribute to the container element. Set the width of the grid items by using the uk-width-* or .uk-grid-width-* classes from the Grid component.', '', 1, '2015-05-19 20:35:29', '2017-11-11 22:09:27', 53, '', 5, 'c7824206-e8db-4c3d-a910-5e0735fdb74b'),
(11, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for list navigations.', 4, 'Nav', 'PHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LXNpZGUiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQo8L3VsPg==', 2, 'http://getuikit.com/docs/nav.html', 'To apply this component, add the .uk-nav class to an  element. Use  elements as menu items within the list. To apply an active state to a menu item, just add the .uk-active class.', '', 1, '2015-05-19 20:39:09', '2017-11-11 22:09:27', 53, '', 6, '5e214ba9-2152-4192-9f26-143346ed8090'),
(12, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for the navigation bar.', 4, 'Navbar', 'PG5hdiBjbGFzcz0idWstbmF2YmFyIj4NCiAgICA8dWwgY2xhc3M9InVrLW5hdmJhci1uYXYiPg0KICAgICAgICA8bGkgY2xhc3M9InVrLWFjdGl2ZSI+PGEgaHJlZj0iIj5BY3RpdmU8L2E+PC9saT4NCiAgICAgICAgPGxpPjxhIGhyZWY9IiI+SXRlbTwvYT48L2xpPg0KICAgICAgICA8bGkgZGF0YS11ay1kcm9wZG93bj0iIiBjbGFzcz0idWstcGFyZW50IiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+DQogICAgICAgICAgICA8YSBocmVmPSIiPlBhcmVudDwvYT4NCiAgICANCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InVrLWRyb3Bkb3duIHVrLWRyb3Bkb3duLW5hdmJhciIgc3R5bGU9IiI+DQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJ1ay1uYXYgdWstbmF2LW5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJ1ay1uYXYtaGVhZGVyIj5IZWFkZXI8L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+QW5vdGhlciBpdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWRpdmlkZXIiPjwvbGk+DQogICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDwvdWw+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICANCiAgICAgICAgPC9saT4NCiAgICA8L3VsPg0KPC9uYXY+', 2, 'http://getuikit.com/docs/navbar.html', 'The Navbar component consists of the navbar itself and one or more navigations.', '', 1, '2015-05-19 20:41:10', '2017-11-11 22:09:27', 53, '', 6, '431dd68d-40cf-4b3b-9cce-b743a7f36ac3'),
(13, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines different styles for a sub navigation.', 4, 'Subnav', 'PHVsIGNsYXNzPSJ1ay1zdWJuYXYgdWstc3VibmF2LXBpbGwiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIjIj5BY3RpdmU8L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgIDxsaSBjbGFzcz0idWstZGlzYWJsZWQiPjxhIGhyZWY9IiMiPkRpc2FibGVkPC9hPjwvbGk+DQogICAgPGxpIGRhdGEtdWstZHJvcGRvd249Inttb2RlOidjbGljayd9Ij4NCiAgICAgICAgPGEgaHJlZj0iIyI+TW9yZSA8aSBjbGFzcz0idWstaWNvbi1jYXJldC1kb3duIj48L2k+PC9hPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1kcm9wZG93biB1ay1kcm9wZG93bi1zbWFsbCI+DQogICAgICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5JdGVtPC9hPjwvbGk+DQogICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiPkFub3RoZXIgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0idWstbmF2LWhlYWRlciI+SGVhZGVyPC9saT4NCiAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyI+SXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5Bbm90aGVyIGl0ZW08L2E+PC9saT4NCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9InVrLW5hdi1kaXZpZGVyIj48L2xpPg0KICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIj5TZXBhcmF0ZWQgaXRlbTwvYT48L2xpPg0KICAgICAgICAgICAgPC91bD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/subnav.html', 'To apply this component, use the following classes. To align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, '2015-05-19 20:42:37', '2017-11-11 22:09:27', 53, '', 6, 'b8f8835d-ffe4-4b0f-ad69-a7e847dbedbd'),
(14, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create breadcrumbs to show users their location within a website.', 4, 'Breadcrumb', 'PHVsIGNsYXNzPSJ1ay1icmVhZGNydW1iIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj5CbG9nPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPkNhdGVnb3J5PC9zcGFuPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPlBvc3Q8L3NwYW4+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/breadcrumb.html', 'The Breadcrumb component consists of links which are aligned side by side and separated by a divider.', '', 1, '2015-05-19 20:44:01', '2017-11-11 22:09:27', 53, '', 6, 'c1cccf2b-84c3-46de-81f1-0ca5f2bfd13d'),
(15, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easlily create a nicely looking pagination to navigate through pages.', 4, 'Pagination', 'PHVsIGNsYXNzPSJ1ay1wYWdpbmF0aW9uIj4NCiAgICA8bGk+PGEgaHJlZj0iIyI+MTwvYT48L2xpPg0KICAgIDxsaT48c3Bhbj4uLi48L3NwYW4+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIyI+ODwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj45PC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxzcGFuPjEwPC9zcGFuPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjExPC9hPjwvbGk+DQogICAgPGxpPjxhIGhyZWY9IiMiPjEyPC9hPjwvbGk+DQogICAgPGxpPjxzcGFuPi4uLjwvc3Bhbj48L2xpPg0KICAgIDxsaT48YSBocmVmPSIjIj4yMDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/pagination.html', 'The Pagination component consists of button-like styled links, that are aligned side by side.', '', 1, '2015-05-19 20:45:49', '2017-11-11 22:09:27', 53, '', 6, '597e8806-9e28-4411-9a94-61d874d2ac0e'),
(16, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a tabbed navigation with different styles.', 4, 'Tab', 'PHVsIGNsYXNzPSJ1ay10YWIiIGRhdGEtdWstdGFiPg0KICAgIDxsaSBjbGFzcz0idWstYWN0aXZlIj48YSBocmVmPSIiPkFjdGl2ZTwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPkl0ZW08L2E+PC9saT4NCiAgICA8bGk+PGEgaHJlZj0iIj5JdGVtPC9hPjwvbGk+DQogICAgPGxpIGNsYXNzPSJ1ay1kaXNhYmxlZCI+PGEgaHJlZj0iIj5EaXNhYmxlZDwvYT48L2xpPg0KPC91bD4=', 2, 'http://getuikit.com/docs/tab.html', 'The Tab component consists of clickable tabs, that are aligned side by side.\r\n\r\nThe data-uk-tab attribute is required for two purposes. Firstly, it enables the responsive behaviour. If the parent container is too small to accomodate all tabs, they will be combined into a dropdown, toggled by a single tab, which represents the active tab item. This also requires the Dropdown component in order to work.\r\n\r\nAnd secondly, its functionality is coupled to the Switcher component, which is necessary to dynamically transition through different contents using tabbed navigation.', '', 1, '2015-05-19 20:47:34', '2017-11-11 22:09:27', 55, '', 6, '690739e8-9547-472c-a4e7-c9362321b37b'),
(17, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a tabbed navigation with different styles.', 4, 'Thumbnav', 'PHVsIGNsYXNzPSJ1ay10aHVtYm5hdiI+DQogICAgPGxpIGNsYXNzPSJ1ay1hY3RpdmUiPjxhIGhyZWY9IiI+PGltZyBzcmM9IiIgYWx0PSIiPjwvYT48L2xpPg0KICAgIDxsaT48YSBocmVmPSIiPjxpbWcgc3JjPSIiIGFsdD0iIj48L2E+PC9saT4NCjwvdWw+', 2, 'http://getuikit.com/docs/thumbnav.html', 'To apply this component, add the .uk-thumbnav class to an  element and nest your thumbnail images inside  elements within the list items. The thumbnav will wrap into several rows, if it is wider than its container and automatically applies a gutter. Add the .uk-active class to create an active state.\r\n\r\nTo align a subnav, for example to horizontally center it, you can use the Flex component.', '', 1, '2015-05-19 20:48:42', '2017-11-11 22:09:27', 54, '', 6, '0e405e4f-4701-46e1-8631-8ce5e13736de'),
(18, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Modifiers\r\n\r\nTo display the list in a different style, just add a modifier class to the the .uk-list class. The modifiers of the List component are not combinable with each other.', 'Easily create nicely looking lists, which come in different styles.', 4, 'List', 'PHVsIGNsYXNzPSJ1ay1saXN0IHVrLWxpc3Qtc3RyaXBlZCI+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 3, 'http://getuikit.com/docs/list.html', 'To apply this component, add the .uk-list class to an unordered or ordered list. The list will now display without any spacing or list-style. [uk-list-line] [uk-list-space]', '', 1, '2015-06-01 16:09:04', '2017-11-11 22:09:27', 3, '', 6, '74ab3937-65e0-4dab-9eb1-2ff87554bdde'),
(19, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Add the .uk-description-list-horizontal class to display terms and descriptions side by side.', 'Easily create nicely looking description lists, which come in different styles.', 4, 'Description list', 'PGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgIDxkdD4uLi48L2R0Pg0KICAgIDxkZD4uLi48L2RkPg0KPC9kbD4=', 3, 'http://getuikit.com/docs/description-list.html', 'There is no component class necessary to create a description list, but UIkit provides a couple of modifier classes to display the list in a different style. The modifiers of the Description list component are not combinable with each other. [uk-description-list-line]', '', 1, '2015-06-01 16:10:54', '2017-11-11 22:09:27', 54, '', 6, 'dae0a910-056d-4e04-b603-43c23d705c1a'),
(20, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking tables, which come in different styles.', 4, 'Table', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+Li4uPC9jYXB0aW9uPg0KICAgIDx0aGVhZD4NCiAgICAgICAgPHRyPg0KICAgICAgICAgICAgPHRoPi4uLjwvdGg+DQogICAgICAgIDwvdHI+DQogICAgPC90aGVhZD4NCiAgICA8dGZvb3Q+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0ZD4uLi48L3RkPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGZvb3Q+DQogICAgPHRib2R5Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+Li4uPC90ZD4NCiAgICAgICAgPC90cj4NCiAgICA8L3Rib2R5Pg0KPC90YWJsZT4=', 3, 'http://getuikit.com/docs/table.html', 'To apply this component, add the .uk-table class to a  element.', '', 1, '2015-06-01 16:12:46', '2017-11-11 22:09:27', 53, '', 6, 'b0f501cf-ca6c-4261-bf4c-dc10e036a259'),
(21, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button href', 'PGEgY2xhc3M9InVrLWJ1dHRvbiB1ay1idXR0b24tcHJpbWFyeSIgaHJlZj0iIj4uLi48L2E+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:17:24', '2017-11-11 22:09:27', 11, '', 7, '0a0ed2e9-ab18-472b-899b-6209b60aff08'),
(22, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button primary', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:18:37', '2017-11-11 22:09:27', 10, '', 7, 'efaae1eb-1cb7-4761-84b7-a804c1b09b15'),
(23, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button disabled', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiB0eXBlPSJidXR0b24iIGRpc2FibGVkPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:18:53', '2017-11-11 22:09:27', 10, '', 7, 'b47d9020-eb39-45d4-a6e4-33b28ca51ac7'),
(24, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button success', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:19:15', '2017-11-11 22:09:27', 10, '', 7, 'd1686780-d1d4-4732-8a0f-184bc29e96ac'),
(25, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button danger', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1kYW5nZXIiIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:19:28', '2017-11-11 22:09:27', 10, '', 7, 'aaa1d48e-1f21-4f69-b503-27d462070d29'),
(26, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button mini', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1wcmltYXJ5IHVrLWJ1dHRvbi1taW5pIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:20:06', '2017-11-11 22:09:27', 10, '', 7, '5f6cfab0-c011-4f01-b4a2-a6e5712b3df1'),
(27, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button small', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1zdWNjZXNzIHVrLWJ1dHRvbi1zbWFsbCIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:20:37', '2017-11-11 22:09:27', 10, '', 7, 'c91a3e7d-d56c-43d5-90bf-5d0a436a92ea'),
(28, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button large', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLWJ1dHRvbi1sYXJnZSIgdHlwZT0iYnV0dG9uIj4uLi48L2J1dHRvbj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:20:58', '2017-11-11 22:09:27', 10, '', 7, '29cbadf8-661a-479f-b219-60fbcfb819d9'),
(29, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button full width', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIHVrLXdpZHRoLTEtMSB1ay1tYXJnaW4tc21hbGwtYm90dG9tIiB0eXBlPSJidXR0b24iPi4uLjwvYnV0dG9uPg==', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:21:28', '2017-11-11 22:09:27', 10, '', 7, '1077c3fd-a993-4b8b-97a1-72f82327366c'),
(30, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button group', 'PGRpdiBjbGFzcz0idWstYnV0dG9uLWdyb3VwIj4NCiAgICA8YSBjbGFzcz0idWstYnV0dG9uIiBocmVmPSIiPi4uLjwvYT4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iPi4uLjwvYnV0dG9uPg0KICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4=', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:21:42', '2017-11-11 22:09:27', 10, '', 7, '8cb09ac8-95c5-4eaa-a6c2-849f74bf5767'),
(31, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easily create nicely looking buttons, which come in different styles.', 4, 'Button dropdowns', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgZW5hYmxpbmcgdGhlIEphdmFTY3JpcHQgLS0+DQo8ZGl2IGNsYXNzPSJ1ay1idXR0b24tZHJvcGRvd24iIGRhdGEtdWstZHJvcGRvd24+DQoNCiAgICA8IS0tIFRoaXMgaXMgdGhlIGJ1dHRvbiB0b2dnbGluZyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIj4uLi48L2J1dHRvbj4NCg0KICAgIDwhLS0gVGhpcyBpcyB0aGUgZHJvcGRvd24gLS0+DQogICAgPGRpdiBjbGFzcz0idWstZHJvcGRvd24gdWstZHJvcGRvd24tc21hbGwiPg0KICAgICAgICA8dWwgY2xhc3M9InVrLW5hdiB1ay1uYXYtZHJvcGRvd24iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgICAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCg0KPC9kaXY+', 4, 'http://getuikit.com/docs/button.html', 'To apply this component, add the .uk-button class to an  or  element. Now you have created a button. Add the disabled attribute to a  element to disable the button.', '', 1, '2015-06-01 16:22:52', '2017-11-11 22:09:27', 10, '', 7, '5b5ebfa4-408c-4b5e-9d28-a6370c944bdc'),
(32, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This component is using the fantastic Font Awesome icon font, a project by Dave Gandy. Altogether Font Awesome provides more than 300 symbols and glyphs for web-related actions. Icon fonts are great, because they enable you to easily change color, size and more via CSS. They are scalable vector graphics, which means that they look great on high-resolution displays.', 'Place vector icons anywhere using an icon font.', 4, 'Icon', 'PGkgY2xhc3M9InVrLWljb24tY29nIj48L2k+', 4, 'http://getuikit.com/docs/icon.html', 'To apply this component, add any .uk-icon-* class to an  or  element. Et voilà, you have a vector icon, which inherits size and color just like your text does.', '', 1, '2015-06-01 16:24:46', '2017-11-11 22:09:27', 10, '', 8, 'df1fa1bc-231e-4f67-be48-f9ea6812ae3d'),
(33, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Easlily create nicely looking badges to label and highlight your content.', 4, 'Badge', 'PGRpdiBjbGFzcz0idWstYmFkZ2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To create a badge, just add the .uk-badge class to a  or  element.', '', 1, '2015-06-01 16:25:53', '2017-11-11 22:09:27', 10, '', 8, '20532a80-6b61-4b5d-a861-05dbc4d82e02'),
(34, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Defines styles for success, warning and error messages.', 4, 'Alert', 'PGRpdiBjbGFzcz0idWstYWxlcnQgdWstYWxlcnQtc3VjY2VzcyIgZGF0YS11ay1hbGVydD4NCiAgICA8YSBocmVmPSIiIGNsYXNzPSJ1ay1hbGVydC1jbG9zZSB1ay1jbG9zZSI+PC9hPg0KICAgIDxwPi4uLjwvcD4NCjwvZGl2Pg==', 4, 'http://getuikit.com/docs/badge.html', 'To apply this component, add the .uk-alert class to a block element.', '', 1, '2015-06-01 16:26:54', '2017-11-11 22:09:27', 10, '', 8, '9b0e4beb-680a-412b-a477-391cdb81c844'),
(35, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text small', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc21hbGwiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:02', '2017-11-11 22:09:27', 10, '', 8, '8516fb71-8f10-4828-a670-af861fd8aae5'),
(36, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text large', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbGFyZ2UiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:14', '2017-11-11 22:09:27', 10, '', 8, '6188947b-c807-4ab7-8960-51a1d808efcb'),
(37, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text bold', 'PHNwYW4gY2xhc3M9InVrLXRleHQtYm9sZCI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:24', '2017-11-11 22:09:27', 10, '', 8, 'adabb157-ec5d-4c62-857f-2d89e77815e2'),
(38, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text muted', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbXV0ZWQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:36', '2017-11-11 22:09:27', 10, '', 8, 'bb0b4ed1-5fb2-4799-9645-9d878d8d86a7'),
(39, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text primary', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcHJpbWFyeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:46', '2017-11-11 22:09:27', 10, '', 8, '02d1e0d7-d461-46f2-b7d5-4c6d95558e11'),
(40, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text success', 'PHNwYW4gY2xhc3M9InVrLXRleHQtc3VjY2VzcyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:29:57', '2017-11-11 22:09:27', 10, '', 8, 'f6a191bb-ef7a-4a91-823a-466200d35b4d'),
(41, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text warning', 'PHNwYW4gY2xhc3M9InVrLXRleHQtd2FybmluZyI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:09', '2017-11-11 22:09:27', 10, '', 8, 'd3a259e2-9839-4922-98d1-ef7ddf03da6b'),
(42, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text danger', 'PHNwYW4gY2xhc3M9InVrLXRleHQtZGFuZ2VyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:19', '2017-11-11 22:09:27', 10, '', 8, '0994d67d-401e-49e1-a7ad-68f8c3c0460a'),
(43, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text contrast', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY29udHJhc3QiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:30:31', '2017-11-11 22:09:27', 10, '', 8, 'a5931e90-0d0e-4c60-8485-ae8b5620d540'),
(44, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text right', 'PHNwYW4gY2xhc3M9InVrLXRleHQtcmlnaHQiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:18', '2017-11-11 22:09:27', 10, '', 8, '24d3dcc3-5ac3-4366-85b8-0a75cac6cef9'),
(45, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text center', 'PHNwYW4gY2xhc3M9InVrLXRleHQtY2VudGVyIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:30', '2017-11-11 22:09:27', 10, '', 8, '2ced9267-0326-440e-85e7-3ac8911fbbf5'),
(46, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text justify', 'PHNwYW4gY2xhc3M9InVrLXRleHQtanVzdGlmeSI+QWRkIHRoaXMgY2xhc3MgdG8gZGVjcmVhc2UgdGhlIGZvbnQgc2l6ZS48L3NwYW4+', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:31:41', '2017-11-11 22:09:27', 10, '', 8, '79acfaa7-7a31-441e-8830-3f63c1e1aa54'),
(47, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text truncate', 'PHNwYW4gY2xhc3M9InVrLXRleHQtdHJ1bmNhdGUiPkFkZCB0aGlzIGNsYXNzIHRvIGRlY3JlYXNlIHRoZSBmb250IHNpemUuPC9zcGFuPg==', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:32:17', '2017-11-11 22:09:27', 10, '', 8, '0f43f9ec-98d6-4856-be34-f4e852520bf8'),
(48, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A collection of useful text utility classes to style your content.', 4, 'Text nowrap', 'PHNwYW4gY2xhc3M9InVrLXRleHQtbm93cmFwIj5BZGQgdGhpcyBjbGFzcyB0byBkZWNyZWFzZSB0aGUgZm9udCBzaXplLjwvc3Bhbj4=', 4, 'http://getuikit.com/docs/text.html', 'UIkit offers various text utlities to style your text. ', '', 1, '2015-06-01 16:32:30', '2017-11-11 22:09:27', 10, '', 8, '5489c68b-4926-43f3-980b-e5b251f10ac8'),
(49, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation fade', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:33:49', '2017-11-11 22:09:27', 10, '', 8, '6cba0fb7-f790-4ad2-ba03-2cdca25a8dd9'),
(50, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-up', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:02', '2017-11-11 22:09:27', 10, '', 8, '11df7f35-5e63-43e1-96ef-f2a0f58bef19'),
(51, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-down', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24iPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:11', '2017-11-11 22:09:27', 10, '', 8, '1b4c533e-94f6-4a55-81a2-1370c088582d'),
(52, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-top', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:22', '2017-11-11 22:09:27', 10, '', 8, '8fc46f20-9783-42cb-92e2-3e0fc5a875c7'),
(53, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-bottom', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:34', '2017-11-11 22:09:27', 10, '', 8, '2d8ed2c0-20af-4c3e-8e0a-fea75fdce181'),
(54, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-left', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:46', '2017-11-11 22:09:27', 10, '', 8, '0bb64e85-6438-4aac-9f60-ad9c8f3c522b'),
(55, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-right', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0Ij4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:34:57', '2017-11-11 22:09:27', 10, '', 8, 'cc303d9d-7940-433f-a918-e46b937f34b6'),
(56, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation shake', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNoYWtlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:35:08', '2017-11-11 22:09:27', 10, '', 8, 'b688ea4a-23b3-470c-b499-dedac36a9c19'),
(57, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:35:19', '2017-11-11 22:09:27', 10, '', 8, '997b5991-5be8-4efb-b5e6-1ae988ea4f4a'),
(58, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation fade reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLWZhZGUgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:37:24', '2017-11-11 22:09:27', 11, '', 8, '6bfd3c02-d4f2-464a-a61b-040324d96789'),
(59, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-up reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLXVwIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:38:33', '2017-11-11 22:09:27', 10, '', 8, '71296148-4c2f-4c69-bbc8-de50d76dc6c8'),
(60, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale-down reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlLWRvd24gdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:38:49', '2017-11-11 22:09:27', 10, '', 8, 'a5c4eadc-e98a-45e1-9c88-d9f761256c88'),
(61, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-top reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXRvcCB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:02', '2017-11-11 22:09:27', 10, '', 8, '79766303-ff2d-465c-8b4a-a2d2cae268e4'),
(62, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-bottom reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSB1ay1hbmltYXRpb24tcmV2ZXJzZSI+Li4uPC9kaXY+', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:13', '2017-11-11 22:09:27', 10, '', 8, 'c20f18a6-74b4-4368-be0b-52d532500f79'),
(63, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-left reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLWxlZnQgdWstYW5pbWF0aW9uLXJldmVyc2UiPi4uLjwvZGl2Pg==', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:26', '2017-11-11 22:09:27', 10, '', 8, 'f4dfb5f9-33ed-4cfc-baab-4f6e3f80fa19'),
(64, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation slide-right reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNsaWRlLXJpZ2h0IHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:39:38', '2017-11-11 22:09:27', 10, '', 8, '735a91e2-6867-43a7-ad66-cb6576018bfe'),
(65, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'A basic collection of smooth animations to use within your page.', 4, 'Animation scale reverse', 'PGRpdiBjbGFzcz0idWstYW5pbWF0aW9uLXNjYWxlIHVrLWFuaW1hdGlvbi1yZXZlcnNlIj4uLi48L2Rpdj4=', 4, 'http://getuikit.com/docs/animation.html', 'To apply this component, add any .uk-animation-* class to an element and it will fade in with a nice animation. These classes are commonly set by using JavaScript to apply the animation to specific behaviors.', '', 1, '2015-06-01 16:40:02', '2017-11-11 22:09:27', 10, '', 8, '918eaa08-13ff-4d7b-b691-2ced6afde21e'),
(66, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGEgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIj48L2E+DQogICAgICAgIC4uLg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:57:08', '2017-11-11 22:09:27', 10, '', 8, '732ecce3-c923-4221-ab04-d7f424b8cd1e'),
(67, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal header-footer', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIj4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstbW9kYWwtaGVhZGVyIj4uLi48L2Rpdj4NCiAgICAgICAgLi4uDQogICAgICAgIDxkaXYgY2xhc3M9InVrLW1vZGFsLWZvb3RlciI+Li4uPC9kaXY+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:57:50', '2017-11-11 22:09:27', 10, '', 8, 'a0114851-724e-4bb1-b617-f44b33abafde'),
(68, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create modal dialogs with different styles and transitions.', 4, 'Modal image', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCjxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1tb2RhbCI+DQogICAgPGRpdiBjbGFzcz0idWstbW9kYWwtZGlhbG9nIHVrLW1vZGFsLWRpYWxvZy1saWdodGJveCI+DQogICAgICAgIDxhIGhyZWY9IiIgY2xhc3M9InVrLW1vZGFsLWNsb3NlIHVrLWNsb3NlIHVrLWNsb3NlLWFsdCI+PC9hPg0KICAgICAgICA8aW1nIHNyYz0iIiBhbHQ9IiI+DQogICAgPC9kaXY+DQo8L2Rpdj4=', 5, 'http://getuikit.com/docs/modal.html', 'The modal component consists of an overlay, a dialog and a close button.', '', 1, '2015-06-01 19:58:26', '2017-11-11 22:09:27', 10, '', 8, '296abb37-599b-4fe2-bd17-9008b026a2fc'),
(69, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 'Create a smooth off-canvas sidebar that slides in and out of the page.', 4, 'Off-canvas default', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIiPi4uLjwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, '2015-06-01 20:00:09', '2017-11-11 22:09:27', 10, '', 8, '063b892a-956b-4950-a7e0-afa8a6c9e14f'),
(70, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Off-canvas component is perfect for building a mobile navigation, similar to those which are popular with many native mobile apps, where a single button in the upper left corner toggles an off-canvas sidebar with a menu.', 'Create a smooth off-canvas sidebar that slides in and out of the page.', 4, 'Off-canvas right', 'PCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBvZmYtY2FudmFzIHNpZGViYXIgLS0+DQo8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIGRhdGEtdWstb2ZmY2FudmFzPSJ7dGFyZ2V0OicjbXktaWQnfSI+Li4uPC9idXR0b24+DQoNCjwhLS0gVGhpcyBpcyB0aGUgb2ZmLWNhbnZhcyBzaWRlYmFyIC0tPg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1vZmZjYW52YXMiPg0KICAgIDxkaXYgY2xhc3M9InVrLW9mZmNhbnZhcy1iYXIgdWstb2ZmY2FudmFzLWJhci1mbGlwIj4uLi48L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/offcanvas.html', 'The Off-canvas component consists of an overlay and an off-canvas bar.', '', 1, '2015-06-01 20:00:37', '2017-11-11 22:09:27', 10, '', 8, 'e5a619b7-ef6f-46b4-a30b-4b79b2d8d43f'),
(71, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Dynamically transition through different content panes.', 4, 'Switcher default', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:02:41', '2017-11-11 22:09:27', 10, '', 8, 'fd850fcf-366b-4b7e-9ccc-bb515f316ab7'),
(72, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'In some cases you want to switch to another content section from within the active content. This is possible using the data-uk-switcher-item attribute. To target the items, you need to set the data attribute to the number of the respective content item.', 'Dynamically transition through different content panes.', 4, 'Switcher in-content', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4NCiAgICA8bGk+IC4uLiA8YSBocmVmPSIiIGRhdGEtdWstc3dpdGNoZXItaXRlbT0iMCI+Li4uPC9hPjwvbGk+DQogICAgPGxpPiAuLi4gPGEgaHJlZj0iIiBkYXRhLXVrLXN3aXRjaGVyLWl0ZW09IjEiPi4uLjwvYT48L2xpPg0KPC91bD4=', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:04:24', '2017-11-11 22:09:27', 10, '', 8, 'c2e83f1f-facd-43ba-ae8d-fc3ccc1debc7'),
(73, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'It is also possible to connect multiple content containers. Just extend the connect parameter with the ID of the additional container.', 'Dynamically transition through different content panes.', 4, 'Switcher multiple-items', 'PCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQo8dWwgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZC1vbmUsICNteS1pZC10d28nfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoZXNlIGFyZSB0aGUgY29udGFpbmVycyBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQtb25lIiBjbGFzcz0idWstc3dpdGNoZXIiPg0KICAgIDxsaT4uLi48L2xpPg0KPC91bD4NCg0KPHVsIGlkPSJteS1pZC10d28iIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:04:53', '2017-11-11 22:09:27', 10, '', 8, '7ca69d59-8d39-4d54-a88b-f9c673fcef2d'),
(74, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Switcher component allows you to add different animations to items when toggling between them. All you need to do is add the animation parameter to the data-attribute and define the animation that you want to apply. Check the table below for an overview of the animations provided.\r\n\r\nYou can also apply multiple animations by using the uk-animation-* classes from the Animation component. That way you can even create your own custom class to apply a different transition to the switcher.', 'Dynamically transition through different content panes.', 4, 'Switcher animation', 'PCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIHRvZ2dsaW5nIGVsZW1lbnRzIC0tPg0KPHVsIGRhdGEtdWstc3dpdGNoZXI9Intjb25uZWN0OicjbXktaWQnLCBhbmltYXRpb246ICd1ay1hbmltYXRpb24tZmFkZSwgdWstYW5pbWF0aW9uLXNsaWRlLWxlZnQnfSI+DQogICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQo8L3VsPg0KDQo8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCjx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:06:42', '2017-11-11 22:09:27', 10, '', 8, '2d1b0fad-f2ff-49b8-97dc-aab9d3553a15'),
(75, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'As an exception to the rule, add the data-uk-tab=\"{connect:\'#ID\'}\" attribute, using the parameter \"tab\" instead of \"switcher\", to the tabbed navigation to combine the switcher with the Tab component.', 'Dynamically transition through different content panes.', 4, 'Switcher tabs-horizontal', 'PCEtLSBUaGlzIGlzIHRoZSB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCjx1bCBjbGFzcz0idWstdGFiIiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8bGk+PGEgaHJlZj0iIj4uLi48L2E+PC9saT4NCjwvdWw+DQoNCjwhLS0gVGhpcyBpcyB0aGUgY29udGFpbmVyIG9mIHRoZSBjb250ZW50IGl0ZW1zIC0tPg0KPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIHVrLW1hcmdpbiI+DQogICAgPGxpPi4uLjwvbGk+DQo8L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:08:04', '2017-11-11 22:09:27', 10, '', 8, 'f271532f-7bbb-4fab-a21c-7487ed72790e'),
(76, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'Use the Grid component to display content correctly with a vertical tabbed navigation.', 'Dynamically transition through different content panes.', 4, 'Switcher tabs-vertical', 'PCEtLSBUaGlzIGlzIHRoZSBsZWZ0IHZlcnRpY2FsIHRhYmJlZCBuYXZpZ2F0aW9uIC0tPg0KPGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtMiI+DQogICAgICAgIDwhLS0gVGhpcyBpcyB0aGUgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstdGFiIHVrLXRhYi1sZWZ0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjwhLS0gVGhpcyBpcyB0aGUgcmlnaHQgdmVydGljYWwgdGFiYmVkIG5hdmlnYXRpb24gLS0+DQo8ZGl2IGNsYXNzPSJ1ay1ncmlkIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay13aWR0aC1tZWRpdW0tMS0yIHVrLXB1c2gtMS0yIj4NCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSB2ZXJ0aWNhbCB0YWJiZWQgbmF2aWdhdGlvbiBjb250YWluaW5nIHRoZSB0b2dnbGluZyBlbGVtZW50cyAtLT4NCiAgICAgICAgPHVsIGNsYXNzPSJ1ay10YWIgdWstdGFiLXJpZ2h0IiBkYXRhLXVrLXRhYj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4uLi48L3VsPg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgY2xhc3M9InVrLXdpZHRoLW1lZGl1bS0xLTIgdWstcHVsbC0xLTIiPg0KICAgICAgICA8IS0tIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBvZiB0aGUgY29udGVudCBpdGVtcyAtLT4NCiAgICAgICAgPHVsIGlkPSJteS1pZCIgY2xhc3M9InVrLXN3aXRjaGVyIj4uLi48L3VsPg0KICAgIDwvZGl2Pg0KPC9kaXY+', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:09:01', '2017-11-11 22:09:27', 10, '', 8, '86a0a1f5-5cce-4d65-9c74-2e39c6ba1bf8'),
(77, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The switcher can also be applied to buttons or button groups from the Button component. Just add the switcher data attribute to a  element around a group of buttons or to the element with the .button-group class.', 'Dynamically transition through different content panes.', 4, 'Switcher button-group', 'PCEtLSBUaGlzIGlzIHRoZSBidXR0b24gZ3JvdXAgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgYnV0dG9ucyAtLT4NCjxkaXYgY2xhc3M9InVrLWJ1dHRvbi1ncm91cCIgZGF0YS11ay1zd2l0Y2hlcj0ie2Nvbm5lY3Q6JyNteS1pZCd9Ij4NCiAgICA8YnV0dG9uIGNsYXNzPSJ1ay1idXR0b24iIHR5cGU9ImJ1dHRvbiI+Li4uPC9idXR0b24+DQo8L2Rpdj4NCg0KPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQo8dWwgaWQ9Im15LWlkIiBjbGFzcz0idWstc3dpdGNoZXIgdWstbWFyZ2luIj4uLi48L3VsPg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:10:00', '2017-11-11 22:09:27', 10, '', 8, 'd252e658-4c57-4115-845c-0bdf66f4f640'),
(78, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'To apply the switcher to the Nav component, add the data attribute to the nav . Use the Grid component to arrange nav and content in a grid layout.', 'Dynamically transition through different content panes.', 4, 'Switcher navs', 'PGRpdiBjbGFzcz0idWstZ3JpZCI+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTEtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBuYXYgY29udGFpbmluZyB0aGUgdG9nZ2xpbmcgZWxlbWVudHMgLS0+DQogICAgICAgIDx1bCBjbGFzcz0idWstbmF2IHVrLW5hdi1zaWRlIiBkYXRhLXVrLXN3aXRjaGVyPSJ7Y29ubmVjdDonI215LWlkJ30iPg0KICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiI+Li4uPC9hPjwvbGk+DQogICAgICAgIDwvdWw+DQogICAgPC9kaXY+DQogICAgPGRpdiBjbGFzcz0idWstd2lkdGgtbWVkaXVtLTMtNCI+DQoNCiAgICAgICAgPCEtLSBUaGlzIGlzIHRoZSBjb250YWluZXIgb2YgdGhlIGNvbnRlbnQgaXRlbXMgLS0+DQogICAgICAgIDx1bCBpZD0ibXktaWQiIGNsYXNzPSJ1ay1zd2l0Y2hlciI+DQogICAgICAgICAgICA8bGk+Li4uPC9saT4NCiAgICAgICAgPC91bD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/switcher.html', 'The switcher component consists of a number of toggles and their related content items. Add the data-uk-switcher=\"{connect:\'#ID\'}\" attribute to the element which contains the toggles, targetting the same id as is used on the element containing the content items. Add the .uk-switcher class to the same element. Typically the switcher is combined with other components, some of which will be shown here.', '', 1, '2015-06-01 20:10:30', '2017-11-11 22:09:27', 10, '', 8, '517a296e-57c2-4d4b-9aae-589b23d1a398'),
(79, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle default', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGlkPSJteS1pZCI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a  or  element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:12:07', '2017-11-11 22:09:27', 10, '', 8, 'dae732b0-379e-4412-9bdb-559f87dc5992'),
(80, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle multiple', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonLm15LWNsYXNzJ30iPi4uLjwvYnV0dG9uPg0KDQo8ZGl2IGNsYXNzPSJteS1jbGFzcyI+Li4uPC9kaXY+DQo8ZGl2IGNsYXNzPSJteS1jbGFzcyB1ay1oaWRkZW4iPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a  or  element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:12:34', '2017-11-11 22:09:27', 10, '', 8, '7a7c7acb-b309-40c5-92fe-33702c5f2f16'),
(81, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also toggle multiple items at the same time. Just use the appropriate selector.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle class', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgY2xzOid1ay1wYW5lbC1ib3gtcHJpbWFyeSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiIGNsYXNzPSJ1ay1wYW5lbCB1ay1wYW5lbC1ib3giPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a  or  element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:13:06', '2017-11-11 22:09:27', 19, '', 8, '10a7755a-4309-4172-b1bd-89a2e0d6edb6'),
(82, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'The Toggle component allows you to add animations to items when toggling between them. Just add one of the .uk-animation-* classes from the Animation component to the animation parameter. The class will be applied to the in as well as the out animation. If you prefer a different out animation, just add another class.', 'Hide, switch or change the appearence of different contents through a toggle.', 4, 'Toggle animations', 'PGJ1dHRvbiBjbGFzcz0idWstYnV0dG9uIiBkYXRhLXVrLXRvZ2dsZT0ie3RhcmdldDonI215LWlkJywgYW5pbWF0aW9uOid1ay1hbmltYXRpb24tc2xpZGUtbGVmdCwgdWstYW5pbWF0aW9uLXNsaWRlLWJvdHRvbSd9Ij4uLi48L2J1dHRvbj4NCg0KPGRpdiBpZD0ibXktaWQiPi4uLjwvZGl2Pg==', 5, 'http://getuikit.com/docs/toggle.html', 'To apply this component, just add the data-uk-toggle=\"{target: #ID}\" attribute to a  or  element. You can use any selector with the toggle attribute.\r\n\r\nThe toggle will add or remove a class from the item. By default, it adds the .uk-hidden class to hide the element.', '', 1, '2015-06-01 20:13:34', '2017-11-11 22:09:27', 19, '', 8, '31f54883-606b-43d5-b110-fba9774b7a34'),
(83, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Trigger events and animations while scrolling your page.', 4, 'Scrollspy default', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgcmVwZWF0OiB0cnVlfSI+Li4uPC9kaXY+DQoNCjxkaXYgZGF0YS11ay1zY3JvbGxzcHk9IntjbHM6J3VrLWFuaW1hdGlvbi1mYWRlJywgZGVsYXk6OTAwfSI+Li4uPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, '2015-06-01 20:15:00', '2017-11-11 22:09:27', 19, '', 8, '39b72b40-85ec-4cc6-aded-c86611f31c24'),
(84, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can also group scrollspy elements, so you won\'t have to apply the data attribute to each of them. Just add the data-uk-scollspy\"{target:\'MY-CLASS\'}\" attribute to a container element, targetting the selector the items you want to animate within the container. When using a delay it will be applied cumulatively to the items within the row that scrolls into view. The delay will be resetted for the next row within the group when it scrolls into view.', 'Trigger events and animations while scrolling your page.', 4, 'Scrollspy groups', 'PGRpdiBkYXRhLXVrLXNjcm9sbHNweT0ie2NsczondWstYW5pbWF0aW9uLWZhZGUnLCB0YXJnZXQ6Jy5teS1jbGFzcycsIGRlbGF5OjMwMH0iPg0KDQogICAgPCEtLSBUaGlzIGl0ZW0gaGFzIG5vIGRlbGF5IC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDMwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KICAgIDwhLS0gVGhpcyBpdGVtIGhhcyBhIGRlbGF5IG9mIDYwMG1zIC0tPg0KICAgIDxkaXYgY2xhc3M9Im15LWNsYXNzIj4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/scrollspy.html', 'The scrollspy component listens to page scrolling and triggers events based on the scroll position. For example, if you scroll down a page and an element appears the first time in the viewport you can trigger a smooth animation to fade in the element. Just add the data-uk-scrollspy attribute and the following options.', '', 1, '2015-06-01 20:15:18', '2017-11-11 22:09:27', 20, '', 8, '6e666e60-5206-4633-a433-83f41f914ed7'),
(85, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox single-image', 'PGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSIiIGhyZWY9IiIgY2xhc3M9InVrLWJ1dHRvbiI+T3BlbiBsaWdodGJveDwvYT4=', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:18:50', '2017-11-11 22:09:27', 19, '', 9, 'b3fb0556-ff50-4380-b7f7-8f2519e02d81'),
(86, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'You can link multiple images to the same lightbox and switch between them from within the lightbox, thus creating a gallery. Just add the {group:\'my-group\'} option to the data attribute of each item using the same name on all items that you want to group. Make sure to include the CSS from the Slidenav component, so you can navigate between the items.', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox groups-image', 'PGRpdiBkYXRhLXVrLWdyaWQtbWFyZ2luPSIiIGNsYXNzPSJ1ay1ncmlkIHVrLWdyaWQtd2lkdGgtbWVkaXVtLTEtNCI+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCiAgICA8ZGl2Pg0KICAgICAgICA8YSB0aXRsZT0iVGl0bGUiIGRhdGEtdWstbGlnaHRib3g9Intncm91cDonZ3JvdXAxJ30iIGRhdGEtbGlnaHRib3gtdHlwZT0iaW1hZ2UiIGhyZWY9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgICAgIDxpbWcgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAiIGFsdD0iIiBzcmM9ImltYWdlcy9wbGFjZWhvbGRlcl84MDB4NjAwXzIuanBnIj4NCiAgICAgICAgPC9hPg0KICAgIDwvZGl2Pg0KICAgIDxkaXY+DQogICAgICAgIDxhIHRpdGxlPSJUaXRsZSIgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDEnfSIgZGF0YS1saWdodGJveC10eXBlPSJpbWFnZSIgaHJlZj0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICAgICAgPGltZyB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCIgYWx0PSIiIHNyYz0iaW1hZ2VzL3BsYWNlaG9sZGVyXzgwMHg2MDBfMy5qcGciPg0KICAgICAgICA8L2E+DQogICAgPC9kaXY+DQogICAgPGRpdj4NCiAgICAgICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMSd9IiBkYXRhLWxpZ2h0Ym94LXR5cGU9ImltYWdlIiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgICAgICA8aW1nIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIiBhbHQ9IiIgc3JjPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF80LmpwZyI+DQogICAgICAgIDwvYT4NCiAgICA8L2Rpdj4NCjwvZGl2Pg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:21:01', '2017-11-11 22:09:27', 20, '', 9, '9fb9dbd8-23b1-4a85-a144-c4ad95f105d1'),
(87, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'A lightbox is not restricted to images. Other media, like videos, can be displayed inside a lightbox and it will automatically generate the correct output by evaluating your path.', 'Create a fancy lightbox for images and videos utilizing the Modal component.', 4, 'Lightbox content-sources', 'PHA+DQogICAgPGEgdGl0bGU9IlRpdGxlIiBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJpbWFnZXMvcGxhY2Vob2xkZXJfODAweDYwMF8xLmpwZyIgY2xhc3M9InVrLWJ1dHRvbiI+SW1hZ2U8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9odG1sNS92aWRlb3MvYmlnX2J1Y2tfYnVubnkubXA0IiBjbGFzcz0idWstYnV0dG9uIj5NUDQ8L2E+DQogICAgPGEgZGF0YS11ay1saWdodGJveD0ie2dyb3VwOidncm91cDInfSIgaHJlZj0iaHR0cDovL3ZpbWVvLmNvbS8xMDg0NTM3IiBjbGFzcz0idWstYnV0dG9uIj5WaW1lbzwvYT4NCiAgICA8YSBkYXRhLXVrLWxpZ2h0Ym94PSJ7Z3JvdXA6J2dyb3VwMid9IiBocmVmPSJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PVlFN1Z6bEx0cC00IiBjbGFzcz0idWstYnV0dG9uIj5Zb3VUdWJlPC9hPg0KPC9wPg==', 5, 'http://getuikit.com/docs/lightbox.html', 'To apply this component, add the data-uk-lightbox attribute to an anchor linking to the image you wish to display. If a title attribute exists it will be displayed as a caption for the lightbox.', '', 1, '2015-06-01 20:22:21', '2017-11-11 22:09:27', 19, '', 9, '4e0dcf96-2140-49e9-bbed-8f84b36f4f3c'),
(88, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'To display multiple content sections at the same time without one collapsing when the other one is opened, add the {collapse: false} option to the date attribute.', 'Create a list of items, allowing each item\'s content to be expanded and collapsed by clicking its header.', 4, 'Accordion', 'PGRpdiBjbGFzcz0idWstYWNjb3JkaW9uIiBkYXRhLXVrLWFjY29yZGlvbj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj4uLi48L2gzPg0KICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4uLi48L2Rpdj4NCg0KPC9kaXY+', 5, 'http://getuikit.com/docs/accordion.html', 'To apply the Accordion component, add the uk-accordion class and the data-uk-accordion attribute to a container element. Add the uk-accordion-content class to each of the content sections within the container. Finally, add the uk-accordion-title class to any element, like a heading, above the content section to create a toggle.', '', 1, '2015-06-01 20:24:59', '2017-11-11 22:09:27', 20, '', 10, 'f5bd905c-8d79-4eb6-bb61-e139af27f573'),
(90, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a input field for uikit form', 'Add Input field - row', 4, 'Input field', 'ICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, '2015-11-29 03:54:40', '2017-11-11 22:09:27', 20, '', 12, 'f1319e45-395a-492e-a899-f2fec00de5ec'),
(91, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a textarea field for uikit form', 'Add textarea - row', 4, 'Textarea', 'CTxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIEpUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8dGV4dGFyZWEgY29scz0iIiByb3dzPSIiICBzdHlsZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMjE2cHg7IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBKVGV4dDo6XygnYWRkIHNvbWUgdGV4dCBoZXJlIScpOyA/PiI+PHx8fHxGSVh8fHx8fHx0ZXh0YXJlYT4NCgkJPHAgY2xhc3M9InVrLWZvcm0taGVscC1ibG9jayI+PD9waHAgZWNobyBKVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+', 3, 'http://getuikit.com/docs/form.html', '', '', 1, '2015-11-29 03:55:57', '2017-11-11 22:09:27', 22, '', 12, '22207e7c-6096-4b6e-8e03-0616745c8447'),
(92, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'This is a uikit form', 'Add Form', 4, 'Form', 'PGZvcm0gY2xhc3M9InVrLWZvcm0iPg0KICAgIDxmaWVsZHNldD4NCiAgICAgICAgPGxlZ2VuZD48P3BocCBlY2hvIFRleHQ6Ol8oJ0xlZ2VuZCcpOyA/PjwvbGVnZW5kPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1mb3JtLXJvdyI+DQoJCTxsYWJlbCBjbGFzcz0idWstZm9ybS1sYWJlbCIgPg0KCQkJPD9waHAgZWNobyBUZXh0OjpfKCdMYWJlbCcpOyA/Pg0KCQk8L2xhYmVsPg0KCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ia2V5IiBwbGFjZWhvbGRlcj0iPD9waHAgZWNobyBUZXh0OjpfKCdhZGQgc29tZSB0ZXh0IGhlcmUhJyk7ID8+Ij4gPHNwYW4gY2xhc3M9InVrLWZvcm0taGVscC1pbmxpbmUiPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3NwYW4+DQoJPC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9InVrLWZvcm0tcm93Ij4NCgkJPGxhYmVsIGNsYXNzPSJ1ay1mb3JtLWxhYmVsIiA+DQoJCQk8P3BocCBlY2hvIFRleHQ6Ol8oJ0xhYmVsJyk7ID8+DQoJCTwvbGFiZWw+DQoJCTx0ZXh0YXJlYSBjb2xzPSIiIHJvd3M9IiIgIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAyMTZweDsiIHBsYWNlaG9sZGVyPSI8P3BocCBlY2hvIFRleHQ6Ol8oJ2FkZCBzb21lIHRleHQgaGVyZSEnKTsgPz4iPjx8fHx8fEZJWHx8fHx8dGV4dGFyZWE+DQoJCTxwIGNsYXNzPSJ1ay1mb3JtLWhlbHAtYmxvY2siPjw/cGhwIGVjaG8gVGV4dDo6XygnaGVscCBuZWVkZWQnKTsgPz48L3A+DQoJPC9kaXY+DQogICAgPC9maWVsZHNldD4NCjwvZm9ybT4=', 1, 'http://getuikit.com/docs/form.html', 'To apply this component, add the .uk-form class to a form element. All form control elements are placed side by side within the next row.', '', 1, '2015-11-29 03:57:03', '2017-11-20 23:42:28', 21, '', 12, '6d6bebcf-e291-4344-a39e-f072fa22bf71'),
(95, 'Vast Development Method', 'joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', '', 'Create a list of items that can be shown individually by clicking an item\'s header.', 3, 'Accordion', 'PHVsIHVrLWFjY29yZGlvbj4NCiAgICA8bGkgY2xhc3M9InVrLW9wZW4iPg0KICAgICAgICA8aDMgY2xhc3M9InVrLWFjY29yZGlvbi10aXRsZSI+SXRlbSAxPC9oMz4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstYWNjb3JkaW9uLWNvbnRlbnQiPg0KICAgICAgICAgICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuPC9wPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2xpPg0KICAgIDxsaT4NCiAgICAgICAgPGgzIGNsYXNzPSJ1ay1hY2NvcmRpb24tdGl0bGUiPkl0ZW0gMjwvaDM+DQogICAgICAgIDxkaXYgY2xhc3M9InVrLWFjY29yZGlvbi1jb250ZW50Ij4NCiAgICAgICAgICAgIDxwPlV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciByZXByZWhlbmRlcml0LjwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCiAgICA8bGk+DQogICAgICAgIDxoMyBjbGFzcz0idWstYWNjb3JkaW9uLXRpdGxlIj5JdGVtIDM8L2gzPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ1ay1hY2NvcmRpb24tY29udGVudCI+DQogICAgICAgICAgICA8cD5EdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IHByb2lkZW50LjwvcD4NCiAgICAgICAgPC9kaXY+DQogICAgPC9saT4NCjwvdWw+', 15, 'https://getuikit.com/docs/accordion', 'The Accordion component consists of a parent container with the uk-accordion attribute, and a title and content part for each accordion item.\r\n\r\n.uk-accordion-title -  Defines and styles the toggle for each accordion item. Typically used on a heading.\r\n\r\n.uk-accordion-content - Defines the content part for each accordion item.\r\n\r\n', '', 1, '2017-11-20 17:21:09', '2017-11-20 23:41:14', 1, '', 14, 'c76d547f-8bcd-48e6-ba64-4ae971404a1b'),
(96, 'Vast Development Method', 'Joomla@vdm.io', 'Llewellyn van der Merwe', 'https://www.vdm.io/', 'FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome – No matter how many columns of data you may have in them.\r\n\r\nHave you ever wanted to show a lot of data in a table, but hate how badly it scales on smaller mobile devices? The FooTable jQuery plugin solves this problem by allowing you to hide certain columns on smaller devices, but still allowing the user to expand each row to see the columns that were hidden.', 'metro-blue', 5, 'FooTable', 'PHRhYmxlIGNsYXNzPSJmb290YWJsZSBtZXRyby1ibHVlIiBkYXRhLWZpbHRlcj0iI2ZpbHRlciIgZGF0YS1wYWdlLXNpemU9IjUiPg0KICA8dGhlYWQ+DQogICAgPHRyPg0KICAgICAgPHRoIGRhdGEtdG9nZ2xlPSJ0cnVlIj5OYW1lPC90aD4NCiAgICAgIDx0aCBkYXRhLWhpZGU9InBob25lLHRhYmxldCI+UGhvbmU8L3RoPg0KICAgICAgPHRoIGRhdGEtaGlkZT0icGhvbmUsdGFibGV0Ij5FbWFpbDwvdGg+DQogICAgPC90cj4NCiAgPC90aGVhZD4NCiAgPHRib2R5Pg0KICAgIDx0cj4NCiAgICAgIDx0ZD5Cb2IgTWFuPC90ZD4NCiAgICAgIDx0ZD41NTUtMTIzNDU8L3RkPg0KICAgICAgPHRkPmJvYkBob21lLmNvbTwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICA8dGQ+QnJpZGdldCBKb25lczwvdGQ+DQogICAgICA8dGQ+NTQ0LTc3NjY1NTwvdGQ+DQogICAgICA8dGQ+YmpvbmVzQG15c2l0ZS5jb208L3RkPg0KICAgIDwvdHI+DQogICAgPHRyPg0KICAgICAgPHRkPlRvbSBKb25lczwvdGQ+DQogICAgICA8dGQ+NTU1LTk5OTExPC90ZD4NCiAgICAgIDx0ZD5jcnVpc2UxQGNyYXp5LmNvbTwvdGQ+DQogICAgPC90cj4NCiAgPC90Ym9keT4NCjwvdGFibGU+', 32, 'https://github.com/fooplugins/FooTable/tree/V2', '', '', 1, '2015-09-26 14:07:03', '2017-11-25 22:24:55', 3, '', 15, '57eace63-c278-4685-8bb7-a40bfdee704e'),
(97, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-success', 2, 'Alerts - Success', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+V2VsbCBkb25lITwvc3Ryb25nPiBZb3Ugc3VjY2Vzc2Z1bGx5IHJlYWQgdGhpcw0KICAgIGltcG9ydGFudCBhbGVydCBtZXNzYWdlLg0KPC9kaXY+', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-13 10:12:34', 1, '', 16, 'eac77139-a69b-4eef-9276-254194d2bed5'),
(98, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-heading', 2, 'Alerts - Heading', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtc3VjY2VzcyIgcm9sZT0iYWxlcnQiPg0KICA8aDQgY2xhc3M9ImFsZXJ0LWhlYWRpbmciPldlbGwgZG9uZSE8L2g0Pg0KICBZb3Ugc3VjY2Vzc2Z1bGx5IHJlYWQgdGhpcyBpbXBvcnRhbnQgYWxlcnQgbWVzc2FnZS4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:26', 1, '', 17, '7fdc4a3a-6b6b-4126-98d6-2c2dfe726f8d'),
(99, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-link', 2, 'Alerts - Link', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+DQogIDxzdHJvbmc+T2ggc25hcCE8L3N0cm9uZz4NCiAgPGEgaHJlZj0iIyIgY2xhc3M9ImFsZXJ0LWxpbmsiPkNoYW5nZSBhIGZldyB0aGluZ3MgdXA8L2E+DQogIGFuZCB0cnkgc3VibWl0dGluZyBhZ2Fpbi4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:19', 1, '', 17, '0910fd26-4d44-4d85-827f-14207d99ce45'),
(100, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-danger', 2, 'Alerts - Danger', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtZGFuZ2VyIiByb2xlPSJhbGVydCI+DQogIDxzdHJvbmc+T2ggc25hcCE8L3N0cm9uZz4gQ2hhbmdlIGEgZmV3IHRoaW5ncyB1cCBhbmQgdHJ5IHN1Ym1pdHRpbmcgYWdhaW4uDQo8L2Rpdj4=', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:19', 1, '', 17, '597d1a5b-1dd9-438b-a019-5b074afa8191'),
(101, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-dismissible', 2, 'Alerts - Dismissible', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtd2FybmluZyBhbGVydC1kaXNtaXNzaWJsZSBmYWRlIHNob3ciIHJvbGU9ImFsZXJ0Ij4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJjbG9zZSIgZGF0YS1kaXNtaXNzPSJhbGVydCIgYXJpYS1sYWJlbD0iQ2xvc2UiPg0KICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj7Dlzwvc3Bhbj4NCiAgPC9idXR0b24+DQogIDxzdHJvbmc+SG9seSBndWFjYW1vbGUhPC9zdHJvbmc+IFlvdSBzaG91bGQgY2hlY2sgaW4gb24gc29tZSBvZiB0aG9zZSBmaWVsZHMgYmVsb3cuDQo8L2Rpdj4=', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:23', 1, '', 17, 'e0f1a436-8527-462b-ba27-cbe60504b8f6'),
(102, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-info', 2, 'Alerts - Info', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+SGVhZHMgdXAhPC9zdHJvbmc+IFRoaXMgYWxlcnQgbmVlZHMgeW91ciBhdHRlbnRpb24sDQogICAgYnV0IGl0J3Mgbm90IHN1cGVyIGltcG9ydGFudC4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:08', 1, '', 18, 'c7a51b7a-c1b7-45cb-95c6-b8cda5d32417'),
(103, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-danger', 2, 'Badge - Danger', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWRhbmdlciI+RGFuZ2VyPC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:21', 1, '', 19, '4cc7a7b5-7d3a-4086-8a00-d7b99e3db5b2'),
(104, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.', 'alert-warning', 2, 'Alerts - Warning', 'PGRpdiBjbGFzcz0iYWxlcnQgYWxlcnQtaW5mbyIgcm9sZT0iYWxlcnQiPg0KICAgIDxzdHJvbmc+SGVhZHMgdXAhPC9zdHJvbmc+IFRoaXMgYWxlcnQgbmVlZHMgeW91ciBhdHRlbnRpb24sDQogICAgYnV0IGl0J3Mgbm90IHN1cGVyIGltcG9ydGFudC4NCjwvZGl2Pg==', 7, 'https://getbootstrap.com/docs/4.0/components/alerts/', 'Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight required contextual classes (e.g., .alert-success).', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:06:13', 1, '', 20, 'f7de3d3c-326c-4039-a184-f0aa1e4719d3'),
(105, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-info', 2, 'Badge - Info', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWluZm8iPkluZm88L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:15', 1, '', 21, 'b7eb3854-3024-440b-bb88-2197e3b934dc'),
(106, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-dark', 2, 'Badge - Dark', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWRhcmsiPkRhcms8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:28', 1, '', 21, 'c3e0aa51-2cbc-4bf3-8e84-1b6bc2672f2b'),
(107, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-light', 2, 'Badge - Light', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLWxpZ2h0Ij5MaWdodDwvc3Bhbj4=', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:26', 1, '', 22, 'f03cb9b8-fffd-41af-9c84-eeed30c97d4b'),
(108, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-pill', 2, 'Badge - Pill', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeSI+U2Vjb25kYXJ5PC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-11 23:53:03', 1, '', 23, '491da919-5afe-4cbb-8cec-1a4d49778c0a'),
(109, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-primary', 2, 'Badge - Primary', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXByaW1hcnkiPlByaW1hcnk8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:06', 1, '', 23, 'c0d1d1f1-907a-4712-afc5-a905ff75bfbe'),
(110, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-secondary', 2, 'Badge - Secondary', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+U2Vjb25kYXJ5PC9zcGFuPg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:09', 1, '', 24, '72bcef22-7fcc-4152-892f-23f4e619ef24'),
(111, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-warning', 2, 'Badge - Warning', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXdhcm5pbmciPldhcm5pbmc8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:18', 1, '', 24, 'f6895007-f66b-4d66-ad52-9823e3b7dee0'),
(112, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Indicate the current page\'s location within a navigational hierarchy that automatically adds separators via CSS.', 'breadcrumb', 2, 'Breadcrumb', 'PG9sIGNsYXNzPSJicmVhZGNydW1iIj4NCiAgPGxpIGNsYXNzPSJicmVhZGNydW1iLWl0ZW0gYWN0aXZlIj5Ib21lPC9saT4NCjwvb2w+DQo8b2wgY2xhc3M9ImJyZWFkY3J1bWIiPg0KICA8bGkgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSI+PGEgaHJlZj0iIyI+SG9tZTwvYT48L2xpPg0KICA8bGkgY2xhc3M9ImJyZWFkY3J1bWItaXRlbSBhY3RpdmUiPkxpYnJhcnk8L2xpPg0KPC9vbD4NCjxvbCBjbGFzcz0iYnJlYWRjcnVtYiI+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIj48YSBocmVmPSIjIj5Ib21lPC9hPjwvbGk+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIj48YSBocmVmPSIjIj5MaWJyYXJ5PC9hPjwvbGk+DQogIDxsaSBjbGFzcz0iYnJlYWRjcnVtYi1pdGVtIGFjdGl2ZSI+RGF0YTwvbGk+DQo8L29sPg==', 9, 'https://getbootstrap.com/docs/4.0/components/breadcrumb/', 'Separators are automatically added in CSS through ::before and content.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:01:21', 1, '', 25, '25ea0f36-f123-4b2e-82c1-3bb44991c0cb'),
(113, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge-success', 2, 'Badge - Success', 'PHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXN1Y2Nlc3MiPlN1Y2Nlc3M8L3NwYW4+', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:13:12', 1, '', 24, '736daa76-4a91-4a26-a684-3412c126e2ec'),
(114, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-toolbar', 2, 'Button - Toolbar', 'PGRpdiBjbGFzcz0iYnRuLXRvb2xiYXIiIHJvbGU9InRvb2xiYXIiIGFyaWEtbGFiZWw9IlRvb2xiYXIgd2l0aCBidXR0b24gZ3JvdXBzIj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iRmlyc3QgZ3JvdXAiPg0KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPjE8L2J1dHRvbj4NCiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij4yPC9idXR0b24+DQogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+MzwvYnV0dG9uPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iU2Vjb25kIGdyb3VwIj4NCiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij41PC9idXR0b24+DQogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+NjwvYnV0dG9uPg0KICA8L2Rpdj4NCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iVGhpcmQgZ3JvdXAiPg0KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPjg8L2J1dHRvbj4NCiAgPC9kaXY+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:28:16', 1, '', 26, 'f7a6f877-ee4c-4cbe-b1a7-314ff55172b7'),
(115, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group (nested)', 2, 'Button Group (nested)', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQnV0dG9uIGdyb3VwIHdpdGggbmVzdGVkIGRyb3Bkb3duIj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+MTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij4yPC9idXR0b24+DQoNCiAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCI+DQogICAgPGJ1dHRvbiBpZD0iYnRuR3JvdXBEcm9wMSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4NCiAgICAgIERyb3Bkb3duDQogICAgPC9idXR0b24+DQogICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSIgYXJpYS1sYWJlbGxlZGJ5PSJidG5Hcm91cERyb3AxIj4NCiAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBocmVmPSIjIj5Ecm9wZG93biBsaW5rPC9hPg0KICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhyZWY9IiMiPkRyb3Bkb3duIGxpbms8L2E+DQogICAgPC9kaXY+DQogIDwvZGl2Pg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:28:08', 1, '', 26, 'e97f45dd-c391-4b01-9737-c1cd90c2be30'),
(116, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Documentation and examples for badges, our small count and labeling component.', 'badge', 2, 'Badge', 'PGgxPkV4YW1wbGUgaGVhZGluZyA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5Ij5OZXc8L3NwYW4+PC9oMT4NCjxoMj5FeGFtcGxlIGhlYWRpbmcgPHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+TmV3PC9zcGFuPjwvaDI+DQo8aDM+RXhhbXBsZSBoZWFkaW5nIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1zZWNvbmRhcnkiPk5ldzwvc3Bhbj48L2gzPg0KPGg0PkV4YW1wbGUgaGVhZGluZyA8c3BhbiBjbGFzcz0iYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5Ij5OZXc8L3NwYW4+PC9oND4NCjxoNT5FeGFtcGxlIGhlYWRpbmcgPHNwYW4gY2xhc3M9ImJhZGdlIGJhZGdlLXNlY29uZGFyeSI+TmV3PC9zcGFuPjwvaDU+DQo8aDY+RXhhbXBsZSBoZWFkaW5nIDxzcGFuIGNsYXNzPSJiYWRnZSBiYWRnZS1zZWNvbmRhcnkiPk5ldzwvc3Bhbj48L2g2Pg==', 8, 'https://getbootstrap.com/docs/4.0/components/badge/', 'Badges scale to match the size of the immediate parent element by using relative font sizing and em units.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:12:58', 1, '', 26, '003efb29-e3f9-4378-a463-4de8e5675766'),
(117, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-lg', 2, 'Button Group - Large', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIGJ0bi1ncm91cC1sZyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IkJhc2ljIGV4YW1wbGUiPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5MZWZ0PC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPk1pZGRsZTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5SaWdodDwvYnV0dG9uPg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:34', 1, '', 27, '710bde0f-89cc-4acc-a83d-e20fa0cbb893'),
(118, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'radio as button', 2, 'Button - As Radio', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiBkYXRhLXRvZ2dsZT0iYnV0dG9ucyI+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGFjdGl2ZSI+DQogICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJvcHRpb25zIiBpZD0ib3B0aW9uMSIgY2hlY2tlZD0iIj4gUmFkaW8gMSAocHJlc2VsZWN0ZWQpDQogIDwvbGFiZWw+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5Ij4NCiAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9Im9wdGlvbnMiIGlkPSJvcHRpb24yIj4gUmFkaW8gMg0KICA8L2xhYmVsPg0KPC9kaXY+', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:35:00', 1, '', 27, '14c313be-d933-4858-92bc-b5d47a9db508'),
(119, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'active button', 2, 'Button - Active', 'PGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tbGcgYWN0aXZlIiByb2xlPSJidXR0b24iIGFyaWEtcHJlc3NlZD0idHJ1ZSI+UHJpbWFyeSBsaW5rPC9hPg==', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:18', 1, '', 27, '56f1534d-ea2d-471b-8633-aeed414df87a'),
(120, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'checkbox as button', 2, 'Button - As Checkbox', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiBkYXRhLXRvZ2dsZT0iYnV0dG9ucyI+DQogIDxsYWJlbCBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IGFjdGl2ZSI+DQogICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSIiPiBDaGVja2JveCAxIChwcmUtY2hlY2tlZCkNCiAgPC9sYWJlbD4NCiAgPGxhYmVsIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPg0KICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCI+IENoZWNrYm94IDINCiAgPC9sYWJlbD4NCjwvZGl2Pg==', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:34:41', 1, '', 27, '7f9ab8c9-15aa-4b2b-8271-114b032cdef4'),
(121, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-block', 2, 'Button - Block', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIGJ0bi1ibG9jayI+QmxvY2sgbGV2ZWwgYnV0dG9uPC9idXR0b24+', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:15', 1, '', 28, 'e64dd4ca-a1cd-4442-9cf4-5d18a9e3dd91'),
(122, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'disabled button', 2, 'Button - Disabled', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGRhdGEtdG9nZ2xlPSJidXR0b24iIGFyaWEtcHJlc3NlZD0iZmFsc2UiPg0KICBTaW5nbGUgdG9nZ2xlDQo8L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:34:21', 1, '', 28, '52c9caa1-7f2b-4a8f-bb60-9a4158d27c0a'),
(123, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-vertical', 2, 'Button Group - Vertical', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwLXZlcnRpY2FsIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmFzaWMgZXhhbXBsZSI+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPkxlZnQ8L2J1dHRvbj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+TWlkZGxlPC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPlJpZ2h0PC9idXR0b24+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:56', 1, '', 28, '64415e4e-f38f-4e46-9ca1-6eea596f2456'),
(124, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-lg', 2, 'Button - Large', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLWxnIj5MYXJnZSBidXR0b248L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:07', 1, '', 29, 'ed94a4f7-b396-4201-a7da-b268db30b13d'),
(125, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-sm', 2, 'Button - Small', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIj5TbWFsbCBidXR0b248L2J1dHRvbj4=', 12, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Fancy larger or smaller buttons? Add .btn-lg or .btn-sm for additional sizes.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:17:13', 1, '', 29, '4becf0e5-2fac-483a-b4bb-92b0b1608c3b'),
(126, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group-sm', 2, 'Button Group - Small', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIGJ0bi1ncm91cC1zbSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IkJhc2ljIGV4YW1wbGUiPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5MZWZ0PC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPk1pZGRsZTwvYnV0dG9uPg0KICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc2Vjb25kYXJ5Ij5SaWdodDwvYnV0dG9uPg0KPC9kaXY+', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:27:45', 1, '', 29, '3af366d7-978f-487a-a966-0477d7ea9d1a'),
(127, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-danger', 2, 'Button - Danger', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhbmdlciI+RGFuZ2VyPC9idXR0b24+', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:20', 1, '', 30, '772bc812-118c-4bf0-a286-b467c3d4cee6'),
(128, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Group a series of buttons together on a single line with the button group, and super-power them with JavaScript.', 'btn-group', 2, 'Button Group', 'PGRpdiBjbGFzcz0iYnRuLWdyb3VwIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQmFzaWMgZXhhbXBsZSI+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPkxlZnQ8L2J1dHRvbj4NCiAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+TWlkZGxlPC9idXR0b24+DQogIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zZWNvbmRhcnkiPlJpZ2h0PC9idXR0b24+DQo8L2Rpdj4=', 11, 'https://getbootstrap.com/docs/4.0/components/button-group/', 'Wrap a series of buttons with .btn in .btn-group. Add on optional JavaScript radio and checkbox style behavior with our buttons plugin.', '', 1, '2017-11-01 00:00:00', '2017-11-22 00:25:49', 1, '', 30, 'cebe97c4-ff4a-4a74-bd12-ebe02ecfd814'),
(129, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-info', 2, 'Button - Info', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWluZm8iPkluZm88L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:14', 1, '', 31, '35d64d76-fd06-4821-9cfb-7cc8a8901ccf'),
(130, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-link', 2, 'Button - Link', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpbmsiPkxpbms8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:30', 1, '', 32, 'e6356804-5499-478d-b0cb-5f708fd1a739'),
(131, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-danger', 2, 'Button - Outline Danger', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtZGFuZ2VyIj5EYW5nZXI8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:40', 1, '', 32, '206c8a71-71b4-4e66-9bdb-9247e0efdf27'),
(132, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-info', 2, 'Button - Outline Info', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtaW5mbyI+SW5mbzwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:34', 1, '', 33, 'ab044e3e-675a-4172-8849-a5fd61d889e3'),
(133, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-primary', 2, 'Button - Outline Primary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSI+UHJpbWFyeTwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:51', 1, '', 34, '6a26904a-fdae-4333-892a-932548b8a11d'),
(134, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-light', 2, 'Button - Outline Light', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtbGlnaHQiPkxpZ2h0PC9idXR0b24+DQo=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-11 23:54:26', 1, '', 34, '5e418043-9a54-4cc3-abef-ac2c6b467a4f'),
(135, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-dark', 2, 'Button - Dark', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWRhcmsiPkRhcms8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:26', 1, '', 35, 'ad5973b8-1860-49b8-9022-ac43d24a2bc5'),
(136, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-secondary', 2, 'Button - Outline Secondary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5Ij5TZWNvbmRhcnk8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:53', 1, '', 35, 'ea92c635-9155-451c-a7f8-4353c60641c8'),
(137, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-light', 2, 'Button - Light', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLWxpZ2h0Ij5MaWdodDwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:23', 1, '', 36, '0cee266b-156e-44a9-aff0-af6935f139e9'),
(138, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-success', 2, 'Button - Outline Success', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyI+U3VjY2VzczwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:55', 1, '', 36, '8798c735-ae7b-4657-8776-d07b0ec5bfe3'),
(139, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-warning', 2, 'Button - Outline Warning', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtd2FybmluZyI+V2FybmluZzwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:37', 1, '', 36, '56c2a53e-7076-4c4a-9a79-0e9037e19fec'),
(140, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-outline-dark', 2, 'Button - Outline Dark', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtZGFyayI+RGFyazwvYnV0dG9uPg==', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'In need of a button, but not the hefty background colors they bring? Replace the default modifier classes with the .btn-outline-* ones to remove all background images and colors on any button.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:15:47', 1, '', 36, '4560a0a9-c5e9-4db5-b85b-f547206dc4f5'),
(141, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-primary', 2, 'Button - Primary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiPlByaW1hcnk8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 22:39:59', 1, '', 37, 'a2e15c1b-e002-41ba-b222-808a4de5d3cb'),
(142, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-success', 2, 'Button - Success', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXN1Y2Nlc3MiPlN1Y2Nlc3M8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:11', 1, '', 38, 'ba1c21b9-612d-4d8b-8d74-333e6dd6a140'),
(143, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-warning', 2, 'Button - Warning', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXdhcm5pbmciPldhcm5pbmc8L2J1dHRvbj4=', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 23:14:17', 1, '', 39, '7c1fd0a6-3460-4034-b562-9eed77e53764'),
(144, 'Most Wanted Web Services, Inc.', 'sales@mwweb.host', 'Steve Voorhees', 'https://mostwantedwebhosting.com', 'Use Bootstrap\'s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.', 'btn-secondary', 2, 'Button - Secondary', 'PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSI+U2Vjb25kYXJ5PC9idXR0b24+', 10, 'https://getbootstrap.com/docs/4.0/components/buttons/', 'Bootstrap includes several predefined button styles, each serving its own semantic purpose, with a few extras thrown in for more control.', '', 1, '2017-11-01 00:00:00', '2017-11-21 22:40:04', 1, '', 40, '5f6714fb-0030-40a6-b269-4d96d1b1bf08');

--
-- Dumping data for table `#__componentbuilder_validation_rule`
--

INSERT INTO `#__componentbuilder_validation_rule` (`id`, `inherit`, `name`, `php`, `short_description`, `params`, `published`, `created`) VALUES
(1, '', 'inspect', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB2YWx1ZS4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gbG9vayBpbnRvIHRoZXNlIHZhbHVlcyBvbmUgYXQgYSB0aW1lDQoJCWVjaG8gJzxwcmU+ZWxlbWVudDxiciAvPic7DQoJCXZhcl9kdW1wKCRlbGVtZW50KTsNCgkJZWNobyAndmFsdWU8YnIgLz4nOw0KCQl2YXJfZHVtcCgkdmFsdWUpOw0KCQllY2hvICdncm91cDxiciAvPic7DQoJCXZhcl9kdW1wKCRncm91cCk7DQoJCWVjaG8gJ2lucHV0PGJyIC8+JzsNCgkJdmFyX2R1bXAoJGlucHV0KTsNCgkJZWNobyAnZm9ybTxiciAvPic7DQoJCXZhcl9kdW1wKCRmb3JtKTsNCgkJamV4aXQoKTsNCgl9', 'simple function to inspect the test values', '', 1, '2018-03-30 09:22:15'),
(2, '', 'code', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB2YWx1ZS4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gVGhpcyByZW1vdmVzIGFsbCB2YWxpZGF0aW9uIChpcyBkYW5nZXJvdXMpIGJ1dCBuZWVkZWQgdG8gc3VibWl0IGNvZGUgdmlhIEpDQg0KCQlyZXR1cm4gdHJ1ZTsNCg0KCQkvKioNCgkJICogTXkgaWRlYSBpcyB0byBhZGQgc29tZSBraW5kIG9mIHZhbGlkYXRpb24gdG8gaW1wcm92ZSBKQ0IgY29kZSAocGVyL2xhbmd1YWdlKQ0KCQkgKg0KCQkgKiBTbyBhdCB0aGlzIHRpbWUgdGhpcyBjb2RlIHZhbGlkYXRpb24gaXMgdXNlZCBmb3IgSmF2YVNjcmlwdCxDU1MsSFRNTCBhbmQgUEhQLg0KCQkgKiBXZSBjYW4gc2VlIHdoYXQgbGFuZ3VhZ2UgaXMgYmVpbmcgd29ya2VkIG9uIHdpdGggdGhlIHN5bnRheCBwcm9wZXJ0eSBpbiB0aGUgJGVsZW1lbnQuIChpbiBKQ0IpDQoJCSAqIFdoYXQgY29tcGxpY2F0ZXMgdGhpbmdzIGlzIHRoZSBwbGFjZWhvbGRlcnMsIG9mIGJvdGggY3VzdG9tIGNvZGUsIGNvbXBvbmVudCwgYW5kIHZpZXcgbmFtZXMuDQoJCSAqIElkZWFsbHkgd2UgY291bGQgc3RyaXAgdGhlbSBhbmQgdGhlbiB2YWxpZGF0ZSB0aGUgY29kZSB0byBiZWluZyBzeW50YWN0aWNhbGx5IGNvcnJlY3QuDQoJCSAqIEJ1dCBzaW5jZSBzb21lIG9mIHRoZSBwbGFjZWhvbGRlcnMgZm9ybSBwYXJ0IG9mIHRoZSBjbGFzcy9mdW5jdGlvbiBuYW1lcyBhbmQgdGhlIG1vcmUsIGl0IHNlZW1zIGxpa2Ugd2UgYXJlIHByZXNzZWQgZm9yIGEgbXVjaCBtb3JlIGFkdmFuY2Ugc29sdXRpb24uDQoJCSAqIElmIHlvdSBoYXZlIGFueSBpZGVhcyB0byBob3cgd2UgY2FuIGdvIGFib3V0IHRvIGRvIHRoaXMsIHRoZW4gcGxlYXNlIG9wZW4gYW4gaXNzdWUgb24gZ2l0aHViIGFuZCBsZXRzIGJlZ2luLiAodGhpcyBpcyBhIG5pY2UgdG8gaGF2ZSwgc28gZG9uJ3QgYnJlYWsgYSBsZWcuLi4pDQoJCSAqLw0KCX0=', 'To validate code', '', 1, '2018-06-24 19:11:45'),
(3, '', 'uniquefield', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBmaWVsZCB2YWx1ZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gR2V0IHRoZSBleHRyYSBmaWVsZCBjaGVjayBhdHRyaWJ1dGUuDQoJCSRpZCA9ICgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSkgPyAkaW5wdXQtPmdldCgnaWQnLCBudWxsKSA6IG51bGw7DQoNCgkJLy8gZ2V0IHRoZSBjb21wb25lbnQgJiB0YWJsZSBuYW1lDQoJCSR0YWJsZSA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0pID8gJGZvcm0tPmdldE5hbWUoKSA6ICcnOw0KDQoJCS8vIGdldCB0aGUgY29sdW1uIG5hbWUNCgkJJG5hbWUgPSAoYXJyYXkpICRlbGVtZW50LT5hdHRyaWJ1dGVzKCktPnsnbmFtZSd9Ow0KCQkkY29sdW1uID0gKHN0cmluZykgdHJpbSgkbmFtZVswXSk7DQoJCQ0KCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgYSB2YWx1ZQ0KCQlpZiAoc3RybGVuKCR2YWx1ZSkgJiYgc3RybGVuKCR0YWJsZSkgPiAzICYmIHN0cnBvcygkdGFibGUsICdbW1tjb21wb25lbnRdXV0uJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSB0YWJsZSBuYW1lDQoJCQkkdGFibGVBcnJheSA9IGV4cGxvZGUoJy4nLCAkdGFibGUpOw0KCQkJLy8gZG8gd2UgaGF2ZSB0d28gdmFsdWVzDQoJCQlpZiAoY291bnQoIChhcnJheSkgJHRhYmxlQXJyYXkpID09IDIpDQoJCQl7DQoJCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJCSRxdWVyeS0+c2VsZWN0KCdDT1VOVCgqKScpDQoJCQkJCS0+ZnJvbSgnI19fW1tbY29tcG9uZW50XV1dXycgLiAoc3RyaW5nKSAkdGFibGVBcnJheVsxXSkNCgkJCQkJLT53aGVyZSgkZGItPnF1b3RlTmFtZSgkY29sdW1uKSAuICcgPSAnIC4gJGRiLT5xdW90ZSgkdmFsdWUpKTsNCg0KCQkJCS8vIHJlbW92ZSB0aGlzIGl0ZW0gZnJvbSB0aGUgbGlzdA0KCQkJCWlmICgkaWQgPiAwKQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICRpZCk7DQoJCQkJfQ0KDQoJCQkJLy8gU2V0IGFuZCBxdWVyeSB0aGUgZGF0YWJhc2UuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCQlpZiAoJGR1cGxpY2F0ZSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9', 'unique field value', '', 1, '2018-07-21 06:06:42'),
(4, '', 'memberloginname', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSB1c2VybmFtZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkkcXVlcnktPnNlbGVjdCgnQ09VTlQoKiknKQ0KCQkJLT5mcm9tKCcjX191c2VycycpDQoJCQktPndoZXJlKCd1c2VybmFtZSA9ICcgLiAkZGItPnF1b3RlKCR2YWx1ZSkpOw0KDQoJCS8vIEdldCB0aGUgdXNlciBJRCBpZiBzZXQuDQoJCSR1c2VySWQgPSAoJGZvcm0gaW5zdGFuY2VvZiBGb3JtICYmICgkdXNlcklkID0gJGZvcm0tPmdldFZhbHVlKCd1c2VyJykpKSA/ICR1c2VySWQgOiAoKCRpbnB1dCBpbnN0YW5jZW9mIFJlZ2lzdHJ5ICYmICgkdXNlcklkID0gJGlucHV0LT5nZXQoJ3VzZXInKSkpID8gJHVzZXJJZCA6IDApOw0KCQkvLyBpZiBzdGlsbCBub3QgdXNlciBpcyBmb3VuZCBnZXQgbWVtYmVyIGlkDQoJCWlmICgkdXNlcklkID09IDApDQoJCXsNCgkJCSRtZW1iZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRtZW1iZXJJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnaWQnKSkpID8gJG1lbWJlcklkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJG1lbWJlcklkID0gJGlucHV0LT5nZXQoJ2lkJykpKSA/ICRtZW1iZXJJZCA6IDApOw0KCQl9DQoJCS8vIGdldCBhY2NvdW50IHR5cGUgaWYgbmVlZGVkDQoJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCkNCgkJew0KCQkJJGFjY291bnRJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRhY2NvdW50SWQgPSAkZm9ybS0+Z2V0VmFsdWUoJ2FjY291bnQnKSkpID8gJGFjY291bnRJZCA6ICgoJGlucHV0IGluc3RhbmNlb2YgUmVnaXN0cnkgJiYgKCRhY2NvdW50SWQgPSAkaW5wdXQtPmdldCgnYWNjb3VudCcpKSkgPyAkYWNjb3VudElkIDogMCk7DQoJCQkvLyBtYWtlIHN1cmUgdGhlc2UgYWNjb3VudCBpcyBzZXQNCgkJCWlmICgkYWNjb3VudElkID09IDApDQoJCQl7DQoJCQkJJGFjY291bnRJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAnYWNjb3VudCcpOw0KCQkJfQ0KCQl9DQoJCS8vIGdldCB1c2VyIHZhbHVlIGlmIG5vdCBzZXQgKGR1ZSB0byBwZXJtaXNzaW9ucykNCgkJaWYgKCR1c2VySWQgPT0gMCAmJiAkbWVtYmVySWQgPiAwICYmICRhY2NvdW50SWQgPiAwICYmICgxID09ICRhY2NvdW50SWQgfHwgNCA9PSAkYWNjb3VudElkKSkNCgkJew0KCQkJJHVzZXJJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAndXNlcicpOw0KCQl9DQoJCSRxdWVyeS0+d2hlcmUoJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnIDw+ICcgLiAoaW50KSAkdXNlcklkKTsNCg0KCQkvLyBTZXQgYW5kIHF1ZXJ5IHRoZSBkYXRhYmFzZS4NCgkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkkZHVwbGljYXRlID0gKGJvb2wpICRkYi0+bG9hZFJlc3VsdCgpOw0KDQoJCWlmICgkZHVwbGljYXRlKQ0KCQl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9', 'Validate the member username', '', 1, '2018-09-16 00:42:59'),
(5, '', 'memberuseremail', 'CS8qKg0KCSAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gdXNlIGluIHRlc3RpbmcgYSBmb3JtIGZpZWxkIHZhbHVlLg0KCSAqDQoJICogQHZhciAgICBzdHJpbmcNCgkgKiBAc2luY2UgIDExLjENCgkgKiBAbGluayAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwtbWFya3VwL2lucHV0LmVtYWlsLmh0bWwNCgkgKi8NCglwcm90ZWN0ZWQgJHJlZ2V4ID0gIl5bYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05LV0rKD86XC5bYS16QS1aMC05LV0rKSokIjsNCg0KCS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBlbWFpbCBhZGRyZXNzIGFuZCBvcHRpb25hbGx5IGNoZWNrIGZvciB1bmlxdWVuZXNzLg0KCSAqDQoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuDQoJICogQHBhcmFtICAgbWl4ZWQgICAgICAgICAgICAgICR2YWx1ZSAgICBUaGUgZm9ybSBmaWVsZCB2YWx1ZSB0byB2YWxpZGF0ZS4NCgkgKiBAcGFyYW0gICBzdHJpbmcgICAgICAgICAgICAgJGdyb3VwICAgIFRoZSBmaWVsZCBuYW1lIGdyb3VwIGNvbnRyb2wgdmFsdWUuIFRoaXMgYWN0cyBhcyBhbiBhcnJheSBjb250YWluZXIgZm9yIHRoZSBmaWVsZC4NCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQ0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbCBmaWVsZCBuYW1lIHdvdWxkIGVuZCB1cCBiZWluZyAiYmFyW2Zvb10iLg0KCSAqIEBwYXJhbSAgIFJlZ2lzdHJ5ICAgICAgICAgICAkaW5wdXQgICAgQW4gb3B0aW9uYWwgUmVnaXN0cnkgb2JqZWN0IHdpdGggdGhlIGVudGlyZSBkYXRhIHNldCB0byB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBlbnRpcmUgZm9ybS4NCgkgKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4NCgkgKg0KCSAqIEByZXR1cm4gIGJvb2xlYW4gIFRydWUgaWYgdGhlIHZhbHVlIGlzIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuDQoJICoNCgkgKiBAc2luY2UgICAxMS4xDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpDQoJew0KCQkvLyBJZiB0aGUgZmllbGQgaXMgZW1wdHkgYW5kIG5vdCByZXF1aXJlZCwgdGhlIGZpZWxkIGlzIHZhbGlkLg0KCQkkcmVxdWlyZWQgPSAoKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3RydWUnIHx8IChzdHJpbmcpICRlbGVtZW50WydyZXF1aXJlZCddID09ICdyZXF1aXJlZCcpOw0KDQoJCWlmICghJHJlcXVpcmVkICYmIGVtcHR5KCR2YWx1ZSkpDQoJCXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoNCgkJLy8gSWYgdGhlIHRsZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgY2hhbmdlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gcmVxdWlyZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgZm9yIGl0Lg0KCQkkdGxkID0gKChzdHJpbmcpICRlbGVtZW50Wyd0bGQnXSA9PSAndGxkJyB8fCAoc3RyaW5nKSAkZWxlbWVudFsndGxkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJaWYgKCR0bGQpDQoJCXsNCgkJCSR0aGlzLT5yZWdleCA9ICJeW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSkiDQoJCQkJLiAnPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSskJzsNCgkJfQ0KDQoJCS8vIERldGVybWluZSBpZiB0aGUgbXVsdGlwbGUgYXR0cmlidXRlIGlzIHByZXNlbnQNCgkJJG11bHRpcGxlID0gKChzdHJpbmcpICRlbGVtZW50WydtdWx0aXBsZSddID09ICd0cnVlJyB8fCAoc3RyaW5nKSAkZWxlbWVudFsnbXVsdGlwbGUnXSA9PSAnbXVsdGlwbGUnKTsNCg0KCQlpZiAoISRtdWx0aXBsZSkNCgkJew0KCQkJLy8gSGFuZGxlIGlkbiBlbWFpbCBhZGRyZXNzZXMgYnkgY29udmVydGluZyB0byBwdW55Y29kZS4NCgkJCSR2YWx1ZSA9IFxKU3RyaW5nUHVueWNvZGU6OmVtYWlsVG9QdW55Y29kZSgkdmFsdWUpOw0KDQoJCQkvLyBUZXN0IHRoZSB2YWx1ZSBhZ2FpbnN0IHRoZSByZWd1bGFyIGV4cHJlc3Npb24uDQoJCQlpZiAoIXBhcmVudDo6dGVzdCgkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAsICRpbnB1dCwgJGZvcm0pKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSR2YWx1ZXMgPSBleHBsb2RlKCcsJywgJHZhbHVlKTsNCg0KCQkJZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpDQoJCQl7DQoJCQkJLy8gSGFuZGxlIGlkbiBlbWFpbCBhZGRyZXNzZXMgYnkgY29udmVydGluZyB0byBwdW55Y29kZS4NCgkJCQkkdmFsdWUgPSBcSlN0cmluZ1B1bnljb2RlOjplbWFpbFRvUHVueWNvZGUoJHZhbHVlKTsNCg0KCQkJCS8vIFRlc3QgdGhlIHZhbHVlIGFnYWluc3QgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4NCgkJCQlpZiAoIXBhcmVudDo6dGVzdCgkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAsICRpbnB1dCwgJGZvcm0pKQ0KCQkJCXsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCS8vIENoZWNrIGlmIHdlIHNob3VsZCB0ZXN0IGZvciB1bmlxdWVuZXNzLiBUaGlzIG9ubHkgY2FuIGJlIHVzZWQgaWYgbXVsdGlwbGUgaXMgbm90IHRydWUNCgkJJHVuaXF1ZSA9ICgoc3RyaW5nKSAkZWxlbWVudFsndW5pcXVlJ10gPT0gJ3RydWUnIHx8IChzdHJpbmcpICRlbGVtZW50Wyd1bmlxdWUnXSA9PSAndW5pcXVlJyk7DQoNCgkJaWYgKCR1bmlxdWUgJiYgISRtdWx0aXBsZSkNCgkJew0KCQkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJCSRkYiA9IEZhY3Rvcnk6OmdldERibygpOw0KCQkJJHF1ZXJ5ID0gJGRiLT5nZXRRdWVyeSh0cnVlKTsNCg0KCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJJHF1ZXJ5LT5zZWxlY3QoJ0NPVU5UKCopJykNCgkJCQktPmZyb20oJyNfX3VzZXJzJykNCgkJCQktPndoZXJlKCdlbWFpbCA9ICcgLiAkZGItPnF1b3RlKCR2YWx1ZSkpOw0KDQoJCQkvLyBHZXQgdGhlIHVzZXIgSUQgaWYgc2V0Lg0KCQkJJHVzZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCR1c2VySWQgPSAkZm9ybS0+Z2V0VmFsdWUoJ3VzZXInKSkpID8gJHVzZXJJZCA6ICgoJGlucHV0IGluc3RhbmNlb2YgUmVnaXN0cnkgJiYgKCR1c2VySWQgPSAkaW5wdXQtPmdldCgndXNlcicpKSkgPyAkdXNlcklkIDogMCk7DQoJCQkvLyBpZiBzdGlsbCBub3QgdXNlciBpcyBmb3VuZCBnZXQgbWVtYmVyIGlkDQoJCQlpZiAoJHVzZXJJZCA9PSAwKQ0KCQkJew0KCQkJCSRtZW1iZXJJZCA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0gJiYgKCRtZW1iZXJJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnaWQnKSkpID8gJG1lbWJlcklkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJG1lbWJlcklkID0gJGlucHV0LT5nZXQoJ2lkJykpKSA/ICRtZW1iZXJJZCA6IDApOw0KCQkJfQ0KCQkJLy8gZ2V0IGFjY291bnQgdHlwZSBpZiBuZWVkZWQNCgkJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCkNCgkJCXsNCgkJCQkkYWNjb3VudElkID0gKCRmb3JtIGluc3RhbmNlb2YgRm9ybSAmJiAoJGFjY291bnRJZCA9ICRmb3JtLT5nZXRWYWx1ZSgnYWNjb3VudCcpKSkgPyAkYWNjb3VudElkIDogKCgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSAmJiAoJGFjY291bnRJZCA9ICRpbnB1dC0+Z2V0KCdhY2NvdW50JykpKSA/ICRhY2NvdW50SWQgOiAwKTsNCgkJCQkvLyBtYWtlIHN1cmUgdGhlc2UgYWNjb3VudCBpcyBzZXQNCgkJCQlpZiAoJGFjY291bnRJZCA9PSAwKQ0KCQkJCXsNCgkJCQkJJGFjY291bnRJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAnYWNjb3VudCcpOw0KCQkJCX0NCgkJCX0NCgkJCS8vIGdldCB1c2VyIHZhbHVlIGlmIG5vdCBzZXQgKGR1ZSB0byBwZXJtaXNzaW9ucykNCgkJCWlmICgkdXNlcklkID09IDAgJiYgJG1lbWJlcklkID4gMCAmJiAkYWNjb3VudElkID4gMCAmJiAoMSA9PSAkYWNjb3VudElkIHx8IDQgPT0gJGFjY291bnRJZCkpDQoJCQl7DQoJCQkJJHVzZXJJZCA9IFN1cGVyX19fZGI4N2MzMzlfNWJiNl80MjkxX2E3ZWZfMmM0OGVhMWIwNmJjX19fUG93ZXI6OnZhcignbWVtYmVyJywgJG1lbWJlcklkLCAnaWQnLCAndXNlcicpOw0KCQkJfQ0KCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICR1c2VySWQpOw0KDQoJCQkvLyBTZXQgYW5kIHF1ZXJ5IHRoZSBkYXRhYmFzZS4NCgkJCSRkYi0+c2V0UXVlcnkoJHF1ZXJ5KTsNCgkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCWlmICgkZHVwbGljYXRlKQ0KCQkJew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KDQoJCXJldHVybiB0cnVlOw0KCX0=', 'Validate the member useremail', '', 1, '2018-09-16 00:43:44'),
(6, '', 'iban', 'CS8qKg0KCSogTWV0aG9kIHRvIGNoZWNrIGlmIElCQU4gaXMgdmFsaWQuDQoJKg0KCSogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuDQoJKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLg0KCSogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQ0KCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuDQoJKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4NCgkqDQoJKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSoNCgkqIEBzaW5jZSAgIDMuOS4wDQoJKi8NCglwdWJsaWMgZnVuY3Rpb24gdGVzdChcU2ltcGxlWE1MRWxlbWVudCAkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAgPSBudWxsLCBSZWdpc3RyeSAkaW5wdXQgPSBudWxsLCBGb3JtICRmb3JtID0gbnVsbCkNCgl7DQoJCSRjb3VudHJ5Q29kZU9mZnNldCA9IDA7IC8vIENPVU5UUllfQ09ERV9PRkZTRVQNCgkJJGNvdW50cnlDb2RlTGVuZ3RoID0gMjsgLy9DT1VOVFJZX0NPREVfTEVOR1RIDQoJCSRjaGVja3N1bU9mZnNldCA9IDI7IC8vQ0hFQ0tTVU1fT0ZGU0VUDQoJCSRjaGVja3N1bUxlbmd0aCA9IDI7IC8vQ0hFQ0tTVU1fTEVOR1RIDQoJCSRpbnN0aXR1dGVJZGVudGlmaWNhdGlvbk9mZnNldCA9IDQ7IC8vSU5TVElUVVRFX0lERU5USUZJQ0FUSU9OX09GRlNFVA0KDQoJCS8qKg0KCQkqIEB2YXIgYXJyYXkgQ291bnRyeSBjb2RlIHRvIHNpemUsIHJlZ2V4IGZvcm1hdCBmb3IgZWFjaCBjb3VudHJ5IHRoYXQgc3VwcG9ydHMgSUJBTg0KCQkqLw0KCQkkaWJhbkZvcm1hdE1hcCA9IGFycmF5KA0KCQkJJ0FBJyA9PiBhcnJheSgxMiwgJ15bQS1aMC05XXsxMn0kJyksDQoJCQknQUQnID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17NH1bQS1aMC05XXsxMn0kJyksDQoJCQknQUUnID0+IGFycmF5KDE5LCAnXlswLTldezN9WzAtOV17MTZ9JCcpLA0KCQkJJ0FMJyA9PiBhcnJheSgyNCwgJ15bMC05XXs4fVtBLVowLTldezE2fSQnKSwNCgkJCSdBTycgPT4gYXJyYXkoMjEsICdeWzAtOV17MjF9JCcpLA0KCQkJJ0FUJyA9PiBhcnJheSgxNiwgJ15bMC05XXs1fVswLTldezExfSQnKSwNCgkJCSdBWCcgPT4gYXJyYXkoMTQsICdeWzAtOV17Nn1bMC05XXs3fVswLTldezF9JCcpLA0KCQkJJ0FaJyA9PiBhcnJheSgyNCwgJ15bQS1aXXs0fVtBLVowLTldezIwfSQnKSwNCgkJCSdCQScgPT4gYXJyYXkoMTYsICdeWzAtOV17M31bMC05XXszfVswLTldezh9WzAtOV17Mn0kJyksDQoJCQknQkUnID0+IGFycmF5KDEyLCAnXlswLTldezN9WzAtOV17N31bMC05XXsyfSQnKSwNCgkJCSdCRicgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ0JHJyA9PiBhcnJheSgxOCwgJ15bQS1aXXs0fVswLTldezR9WzAtOV17Mn1bQS1aMC05XXs4fSQnKSwNCgkJCSdCSCcgPT4gYXJyYXkoMTgsICdeW0EtWl17NH1bQS1aMC05XXsxNH0kJyksDQoJCQknQkknID0+IGFycmF5KDEyLCAnXlswLTldezEyfSQnKSwNCgkJCSdCSicgPT4gYXJyYXkoMjQsICdeW0EtWl17MX1bMC05XXsyM30kJyksDQoJCQknQkwnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdCUicgPT4gYXJyYXkoMjUsICdeWzAtOV17OH1bMC05XXs1fVswLTldezEwfVtBLVpdezF9W0EtWjAtOV17MX0kJyksDQoJCQknQ0gnID0+IGFycmF5KDE3LCAnXlswLTldezV9W0EtWjAtOV17MTJ9JCcpLA0KCQkJJ0NJJyA9PiBhcnJheSgyNCwgJ15bQS1aXXsxfVswLTldezIzfSQnKSwNCgkJCSdDTScgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ0NSJyA9PiBhcnJheSgxNywgJ15bMC05XXs0fVswLTldezEzfSQnKSwNCgkJCSdDVicgPT4gYXJyYXkoMjEsICdeWzAtOV17MjF9JCcpLA0KCQkJJ0NZJyA9PiBhcnJheSgyNCwgJ15bMC05XXszfVswLTldezV9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ0NaJyA9PiBhcnJheSgyMCwgJ15bMC05XXs0fVswLTldezZ9WzAtOV17MTB9JCcpLA0KCQkJJ0RFJyA9PiBhcnJheSgxOCwgJ15bMC05XXs4fVswLTldezEwfSQnKSwNCgkJCSdESycgPT4gYXJyYXkoMTQsICdeWzAtOV17NH1bMC05XXs5fVswLTldezF9JCcpLA0KCQkJJ0RPJyA9PiBhcnJheSgyNCwgJ15bQS1aMC05XXs0fVswLTldezIwfSQnKSwNCgkJCSdEWicgPT4gYXJyYXkoMjAsICdeWzAtOV17MjB9JCcpLA0KCQkJJ0VFJyA9PiBhcnJheSgxNiwgJ15bMC05XXsyfVswLTldezJ9WzAtOV17MTF9WzAtOV17MX0kJyksDQoJCQknRVMnID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17NH1bMC05XXsxfVswLTldezF9WzAtOV17MTB9JCcpLA0KCQkJJ0ZJJyA9PiBhcnJheSgxNCwgJ15bMC05XXs2fVswLTldezd9WzAtOV17MX0kJyksDQoJCQknRk8nID0+IGFycmF5KDE0LCAnXlswLTldezR9WzAtOV17OX1bMC05XXsxfSQnKSwNCgkJCSdGUicgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ0dCJyA9PiBhcnJheSgxOCwgJ15bQS1aXXs0fVswLTldezZ9WzAtOV17OH0kJyksDQoJCQknR0UnID0+IGFycmF5KDE4LCAnXltBLVpdezJ9WzAtOV17MTZ9JCcpLA0KCQkJJ0dGJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknR0knID0+IGFycmF5KDE5LCAnXltBLVpdezR9W0EtWjAtOV17MTV9JCcpLA0KCQkJJ0dMJyA9PiBhcnJheSgxNCwgJ15bMC05XXs0fVswLTldezl9WzAtOV17MX0kJyksDQoJCQknR1AnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdHUicgPT4gYXJyYXkoMjMsICdeWzAtOV17M31bMC05XXs0fVtBLVowLTldezE2fSQnKSwNCgkJCSdHVCcgPT4gYXJyYXkoMjQsICdeW0EtWjAtOV17NH1bQS1aMC05XXsyMH0kJyksDQoJCQknSFInID0+IGFycmF5KDE3LCAnXlswLTldezd9WzAtOV17MTB9JCcpLA0KCQkJJ0hVJyA9PiBhcnJheSgyNCwgJ15bMC05XXszfVswLTldezR9WzAtOV17MX1bMC05XXsxNX1bMC05XXsxfSQnKSwNCgkJCSdJRScgPT4gYXJyYXkoMTgsICdeW0EtWl17NH1bMC05XXs2fVswLTldezh9JCcpLA0KCQkJJ0lMJyA9PiBhcnJheSgxOSwgJ15bMC05XXszfVswLTldezN9WzAtOV17MTN9JCcpLA0KCQkJJ0lSJyA9PiBhcnJheSgyMiwgJ15bMC05XXsyMn0kJyksDQoJCQknSVMnID0+IGFycmF5KDIyLCAnXlswLTldezR9WzAtOV17Mn1bMC05XXs2fVswLTldezEwfSQnKSwNCgkJCSdJVCcgPT4gYXJyYXkoMjMsICdeW0EtWl17MX1bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTJ9JCcpLA0KCQkJJ0pPJyA9PiBhcnJheSgyNiwgJ15bQS1aXXs0fVswLTldezR9W0EtWjAtOV17MTh9JCcpLA0KCQkJJ0tXJyA9PiBhcnJheSgyNiwgJ15bQS1aXXs0fVtBLVowLTldezIyfSQnKSwNCgkJCSdLWicgPT4gYXJyYXkoMTYsICdeWzAtOV17M31bQS1aMC05XXsxM30kJyksDQoJCQknTEInID0+IGFycmF5KDI0LCAnXlswLTldezR9W0EtWjAtOV17MjB9JCcpLA0KCQkJJ0xDJyA9PiBhcnJheSgyOCwgJ15bQS1aXXs0fVtBLVowLTldezI0fSQnKSwNCgkJCSdMSScgPT4gYXJyYXkoMTcsICdeWzAtOV17NX1bQS1aMC05XXsxMn0kJyksDQoJCQknTFQnID0+IGFycmF5KDE2LCAnXlswLTldezV9WzAtOV17MTF9JCcpLA0KCQkJJ0xVJyA9PiBhcnJheSgxNiwgJ15bMC05XXszfVtBLVowLTldezEzfSQnKSwNCgkJCSdMVicgPT4gYXJyYXkoMTcsICdeW0EtWl17NH1bQS1aMC05XXsxM30kJyksDQoJCQknTUMnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdNRCcgPT4gYXJyYXkoMjAsICdeW0EtWjAtOV17Mn1bQS1aMC05XXsxOH0kJyksDQoJCQknTUUnID0+IGFycmF5KDE4LCAnXlswLTldezN9WzAtOV17MTN9WzAtOV17Mn0kJyksDQoJCQknTUYnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdNRycgPT4gYXJyYXkoMjMsICdeWzAtOV17MjN9JCcpLA0KCQkJJ01LJyA9PiBhcnJheSgxNSwgJ15bMC05XXszfVtBLVowLTldezEwfVswLTldezJ9JCcpLA0KCQkJJ01MJyA9PiBhcnJheSgyNCwgJ15bQS1aXXsxfVswLTldezIzfSQnKSwNCgkJCSdNUScgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ01SJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9WzAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknTVQnID0+IGFycmF5KDI3LCAnXltBLVpdezR9WzAtOV17NX1bQS1aMC05XXsxOH0kJyksDQoJCQknTVUnID0+IGFycmF5KDI2LCAnXltBLVpdezR9WzAtOV17Mn1bMC05XXsyfVswLTldezEyfVswLTldezN9W0EtWl17M30kJyksDQoJCQknTVonID0+IGFycmF5KDIxLCAnXlswLTldezIxfSQnKSwNCgkJCSdOQycgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ05MJyA9PiBhcnJheSgxNCwgJ15bQS1aXXs0fVswLTldezEwfSQnKSwNCgkJCSdOTycgPT4gYXJyYXkoMTEsICdeWzAtOV17NH1bMC05XXs2fVswLTldezF9JCcpLA0KCQkJJ1BGJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknUEsnID0+IGFycmF5KDIwLCAnXltBLVpdezR9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1BMJyA9PiBhcnJheSgyNCwgJ15bMC05XXs4fVswLTldezE2fSQnKSwNCgkJCSdQTScgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpLA0KCQkJJ1BTJyA9PiBhcnJheSgyNSwgJ15bQS1aXXs0fVtBLVowLTldezIxfSQnKSwNCgkJCSdQVCcgPT4gYXJyYXkoMjEsICdeWzAtOV17NH1bMC05XXs0fVswLTldezExfVswLTldezJ9JCcpLA0KCQkJJ1FBJyA9PiBhcnJheSgyNSwgJ15bQS1aXXs0fVswLTldezR9W0EtWjAtOV17MTd9JCcpLA0KCQkJJ1JFJyA9PiBhcnJheSgyMywgJ15bMC05XXs1fVswLTldezV9W0EtWjAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknUk8nID0+IGFycmF5KDIwLCAnXltBLVpdezR9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1JTJyA9PiBhcnJheSgxOCwgJ15bMC05XXszfVswLTldezEzfVswLTldezJ9JCcpLA0KCQkJJ1NBJyA9PiBhcnJheSgyMCwgJ15bMC05XXsyfVtBLVowLTldezE4fSQnKSwNCgkJCSdTQycgPT4gYXJyYXkoMjcsICdeW0EtWl17NH1bMC05XXs0fVswLTldezE2fVtBLVpdezN9JCcpLA0KCQkJJ1NFJyA9PiBhcnJheSgyMCwgJ15bMC05XXszfVswLTldezE2fVswLTldezF9JCcpLA0KCQkJJ1NJJyA9PiBhcnJheSgxNSwgJ15bMC05XXs1fVswLTldezh9WzAtOV17Mn0kJyksDQoJCQknU0snID0+IGFycmF5KDIwLCAnXlswLTldezR9WzAtOV17Nn1bMC05XXsxMH0kJyksDQoJCQknU00nID0+IGFycmF5KDIzLCAnXltBLVpdezF9WzAtOV17NX1bMC05XXs1fVtBLVowLTldezEyfSQnKSwNCgkJCSdTTicgPT4gYXJyYXkoMjQsICdeW0EtWl17MX1bMC05XXsyM30kJyksDQoJCQknU1QnID0+IGFycmF5KDIxLCAnXlswLTldezh9WzAtOV17MTF9WzAtOV17Mn0kJyksDQoJCQknVEYnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdUTCcgPT4gYXJyYXkoMTksICdeWzAtOV17M31bMC05XXsxNH1bMC05XXsyfSQnKSwNCgkJCSdUTicgPT4gYXJyYXkoMjAsICdeWzAtOV17Mn1bMC05XXszfVswLTldezEzfVswLTldezJ9JCcpLA0KCQkJJ1RSJyA9PiBhcnJheSgyMiwgJ15bMC05XXs1fVswLTldezF9W0EtWjAtOV17MTZ9JCcpLA0KCQkJJ1VBJyA9PiBhcnJheSgyNSwgJ15bMC05XXs2fVtBLVowLTldezE5fSQnKSwNCgkJCSdWRycgPT4gYXJyYXkoMjAsICdeW0EtWl17NH1bMC05XXsxNn0kJyksDQoJCQknV0YnID0+IGFycmF5KDIzLCAnXlswLTldezV9WzAtOV17NX1bQS1aMC05XXsxMX1bMC05XXsyfSQnKSwNCgkJCSdYSycgPT4gYXJyYXkoMTYsICdeWzAtOV17NH1bMC05XXsxMH1bMC05XXsyfSQnKSwNCgkJCSdZVCcgPT4gYXJyYXkoMjMsICdeWzAtOV17NX1bMC05XXs1fVtBLVowLTldezExfVswLTldezJ9JCcpDQoJCSk7DQoNCgkJLy8gQ0xFQU4gVVAgSUJBTg0KCQkkaWJhbiA9IHByZWdfcmVwbGFjZSgnL1teYS16MC05XSsvaScsICcnLCB0cmltKHN0cnRvdXBwZXIoJHZhbHVlKSkpOw0KDQoJCS8vIENIRUNLIENvdW50cnkgQ29kZQ0KCQkkY291bnRyeUNvZGUgPSBzdWJzdHIoJGliYW4sICRjb3VudHJ5Q29kZU9mZnNldCwgJGNvdW50cnlDb2RlTGVuZ3RoKTsNCgkJJGlzQ291bnRyeUNvZGVWYWxpZCA9ICEoaXNzZXQoJGliYW5Gb3JtYXRNYXBbJGNvdW50cnlDb2RlXSkgPT09IGZhbHNlKTsNCg0KCQkkdmFsaWRMZW5ndGggPSAkY291bnRyeUNvZGVMZW5ndGggKyAkY2hlY2tzdW1MZW5ndGggKyAkaWJhbkZvcm1hdE1hcFskY291bnRyeUNvZGVdWzBdOw0KCQkkaXNMZW5ndGhWYWxpZCA9IHN0cmxlbigkaWJhbikgPT09ICR2YWxpZExlbmd0aDsNCg0KCQkkYWNjb3VudElkZW50aWZpY2F0aW9uID0gc3Vic3RyKCRpYmFuLCAkaW5zdGl0dXRlSWRlbnRpZmljYXRpb25PZmZzZXQpOw0KCQkkaXNGb3JtYXRWYWxpZCA9ICEocHJlZ19tYXRjaCgnLycgLiAkaWJhbkZvcm1hdE1hcFskY291bnRyeUNvZGVdWzFdIC4gJy8nLCAkYWNjb3VudElkZW50aWZpY2F0aW9uKSAhPT0gMSk7DQoNCgkJJGNoZWNrc3VtID0gc3Vic3RyKCRpYmFuLCAkY2hlY2tzdW1PZmZzZXQsICRjaGVja3N1bUxlbmd0aCk7DQoJCSRhY2NvdW50SWRlbnRpZmljYXRpb24gPSBzdWJzdHIoJGliYW4sICRpbnN0aXR1dGVJZGVudGlmaWNhdGlvbk9mZnNldCk7DQoNCgkJLy8gR0VUIE5VTUVSSUMgQ09VTlRSWSBDT0RFDQoJCSRudW1lcmljUmVwcmVzZW50YXRpb24gPSAnJzsNCgkJJGxldHRlclJlcHJlc2VudGF0aW9uID0gJGNvdW50cnlDb2RlOw0KCQlmb3JlYWNoIChzdHJfc3BsaXQoJGxldHRlclJlcHJlc2VudGF0aW9uKSBhcyAkY2hhcikNCgkJew0KCQkJJG9yZCA9IG9yZCgkY2hhcik7DQoJCQlpZiAoJG9yZCA+PSA2NSAmJiAkb3JkIDw9IDkwKQ0KCQkJew0KCQkJCSRudW1lcmljUmVwcmVzZW50YXRpb24gLj0gKHN0cmluZykgKCRvcmQgLSA1NSk7DQoJCQl9DQoJCQllbHNlaWYgKCRvcmQgPj0gNDggJiYgJG9yZCA8PSA1NykNCgkJCXsNCgkJCQkkbnVtZXJpY1JlcHJlc2VudGF0aW9uIC49IChzdHJpbmcpICgkb3JkIC0gNDgpOw0KCQkJfQ0KCQl9DQoJCSRudW1lcmljQ291bnRyeUNvZGUgPSAkbnVtZXJpY1JlcHJlc2VudGF0aW9uOw0KDQoJCSRudW1lcmljUmVwcmVzZW50YXRpb24gPSAnJzsNCgkJJGxldHRlclJlcHJlc2VudGF0aW9uID0gJGFjY291bnRJZGVudGlmaWNhdGlvbjsNCgkJZm9yZWFjaCAoc3RyX3NwbGl0KCRsZXR0ZXJSZXByZXNlbnRhdGlvbikgYXMgJGNoYXIpDQoJCXsNCgkJCSRvcmQgPSBvcmQoJGNoYXIpOw0KCQkJaWYgKCRvcmQgPj0gNjUgJiYgJG9yZCA8PSA5MCkNCgkJCXsNCgkJCQkkbnVtZXJpY1JlcHJlc2VudGF0aW9uIC49IChzdHJpbmcpICgkb3JkIC0gNTUpOw0KCQkJfQ0KCQkJZWxzZWlmICgkb3JkID49IDQ4ICYmICRvcmQgPD0gNTcpDQoJCQl7DQoJCQkJJG51bWVyaWNSZXByZXNlbnRhdGlvbiAuPSAoc3RyaW5nKSAoJG9yZCAtIDQ4KTsNCgkJCX0NCgkJfQ0KCQkkbnVtZXJpY0FjY291bnRJZGVudGlmaWNhdGlvbiA9ICRudW1lcmljUmVwcmVzZW50YXRpb247DQoJCSRpbnZlcnRlZEliYW4gPSAkbnVtZXJpY0FjY291bnRJZGVudGlmaWNhdGlvbiAuICRudW1lcmljQ291bnRyeUNvZGUgLiAkY2hlY2tzdW07DQoNCgkJLy8gQ0hFQ0tTVU0gQkNNT0QNCgkJJHggPSAkaW52ZXJ0ZWRJYmFuOw0KCQkkeSA9IDk3Ow0KCQlpZiAoIWZ1bmN0aW9uX2V4aXN0cygnYmNtb2QnKSkNCgkJew0KCQkJJHRha2UgPSA1Ow0KCQkJJG1vZCA9ICcnOw0KCQkJZG8gew0KCQkJCSRhID0gKGludCkkbW9kIC4gc3Vic3RyKCR4LCAwLCAkdGFrZSk7DQoJCQkJJHggPSBzdWJzdHIoJHgsICR0YWtlKTsNCgkJCQkkbW9kID0gJGEgJSAkeTsNCgkJCX0gd2hpbGUgKHN0cmxlbigkeCkpOw0KCQkJJGJjbW9kID0gKHN0cmluZykkbW9kOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJGJjbW9kID0gYmNtb2QoJHgsICR5KTsNCgkJfQ0KDQoJCSRpc0NoZWNrc3VtVmFsaWQgPSAkYmNtb2QgPT09ICcxJzsNCg0KCQlpZiAoISRpc0NvdW50cnlDb2RlVmFsaWQgfHwgISRpc0xlbmd0aFZhbGlkIHx8ICEkaXNGb3JtYXRWYWxpZCB8fCAhJGlzQ2hlY2tzdW1WYWxpZCkNCgkJew0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkgICAgcmV0dXJuIHRydWU7DQoJCX0NCgl9', 'IBAN validation', '', 1, '2019-02-12 23:14:43'),
(8, '', 'int', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoYXQgYW4gaW50ZWdlciB2YWx1ZSB3YXMgYWRkZWQuDQoJICoNCgkgKiBAcGFyYW0gICBcU2ltcGxlWE1MRWxlbWVudCAgJGVsZW1lbnQgIFRoZSBTaW1wbGVYTUxFbGVtZW50IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGA8ZmllbGQ+YCB0YWcgZm9yIHRoZSBmb3JtIGZpZWxkIG9iamVjdC4NCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLg0KCSAqIEBwYXJhbSAgIHN0cmluZyAgICAgICAgICAgICAkZ3JvdXAgICAgVGhlIGZpZWxkIG5hbWUgZ3JvdXAgY29udHJvbCB2YWx1ZS4gVGhpcyBhY3RzIGFzIGFuIGFycmF5IGNvbnRhaW5lciBmb3IgdGhlIGZpZWxkLg0KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUgaWYgdGhlIGZpZWxkIGhhcyBuYW1lPSJmb28iIGFuZCB0aGUgZ3JvdXAgdmFsdWUgaXMgc2V0IHRvICJiYXIiIHRoZW4gdGhlDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuDQoJICogQHBhcmFtICAgUmVnaXN0cnkgICAgICAgICAgICRpbnB1dCAgICBBbiBvcHRpb25hbCBSZWdpc3RyeSBvYmplY3Qgd2l0aCB0aGUgZW50aXJlIGRhdGEgc2V0IHRvIHZhbGlkYXRlIGFnYWluc3QgdGhlIGVudGlyZSBmb3JtLg0KCSAqIEBwYXJhbSAgIEZvcm0gICAgICAgICAgICAgICAkZm9ybSAgICAgVGhlIGZvcm0gb2JqZWN0IGZvciB3aGljaCB0aGUgZmllbGQgaXMgYmVpbmcgdGVzdGVkLg0KCSAqDQoJICogQHJldHVybiAgYm9vbGVhbiAgVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdmFsaWQgaW50ZWdlciwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICovDQoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpDQoJew0KCQkvLyBDaGVjayBpZiB0aGUgZmllbGQgaXMgcmVxdWlyZWQuDQoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJLy8gSWYgdGhlIHZhbHVlIGlzIGVtcHR5IGFuZCB0aGUgZmllbGQgaXMgbm90IHJlcXVpcmVkIHJldHVybiBUcnVlLg0KCQlpZiAoKCR2YWx1ZSA9PT0gJycgfHwgJHZhbHVlID09PSBudWxsKSAmJiAhICRyZXF1aXJlZCkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQkvLyBub3cgdmFsaWRhdGUgdGhlIHZhbHVlIHRvIGJlIGFuIGludGVnZXINCgkJLy8gd2UgbmVlZCB0byB2YWxpZGF0ZSBhIHN0cmluZyB3aXRoIHRoZSBpbnRlZ2VyIGluIGl0DQoJCS8vIHNpbmNlIHRoaXMgaXMgaG93IEpvb21sYSBwYXNzZXMgdGhlIHZhbHVlIHRvIHRoZSB0ZXN0IG1ldGhvZA0KCQkvLyBzbyB3ZSB1c2UgdHlwZSBjb2VyY2lvbiBhbG9uZyB3aXRoIGlzX251bWVyaWMNCgkJcmV0dXJuIGlzX251bWVyaWMoJHZhbHVlKSAmJiBpc19pbnQoKyR2YWx1ZSk7DQoJCS8vIGlmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEuLi4gbGV0cyBoZWFyIGl0Lg0KCX0=', 'To validate and integer', '', 1, '2019-07-18 14:29:14'),
(9, 'C', 'guid', 'CS8qKgoJICogTWV0aG9kIHRvIHRlc3QgZm9yIGEgR2xvYmFsbHkgVW5pcXVlIElkZW50aWZpZXIuCgkgKgoJICogQHBhcmFtICAgXFNpbXBsZVhNTEVsZW1lbnQgICRlbGVtZW50ICBUaGUgU2ltcGxlWE1MRWxlbWVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBgPGZpZWxkPmAgdGFnIGZvciB0aGUgZm9ybSBmaWVsZCBvYmplY3QuCgkgKiBAcGFyYW0gICBtaXhlZCAgICAgICAgICAgICAgJHZhbHVlICAgIFRoZSBmb3JtIGZpZWxkIHZhbHVlIHRvIHZhbGlkYXRlLgoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvciBleGFtcGxlIGlmIHRoZSBmaWVsZCBoYXMgbmFtZT0iZm9vIiBhbmQgdGhlIGdyb3VwIHZhbHVlIGlzIHNldCB0byAiYmFyIiB0aGVuIHRoZQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGZpZWxkIG5hbWUgd291bGQgZW5kIHVwIGJlaW5nICJiYXJbZm9vXSIuCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uCgkgKiBAcGFyYW0gICBGb3JtICAgICAgICAgICAgICAgJGZvcm0gICAgIFRoZSBmb3JtIG9iamVjdCBmb3Igd2hpY2ggdGhlIGZpZWxkIGlzIGJlaW5nIHRlc3RlZC4KCSAqCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRlc3QoXFNpbXBsZVhNTEVsZW1lbnQgJGVsZW1lbnQsICR2YWx1ZSwgJGdyb3VwID0gbnVsbCwgUmVnaXN0cnkgJGlucHV0ID0gbnVsbCwgRm9ybSAkZm9ybSA9IG51bGwpCgl7CgkJJHZhbHVlID0gdHJpbSgkdmFsdWUpOwoKCQkvLyBJZiB0aGUgZmllbGQgaXMgZW1wdHkgYW5kIG5vdCByZXF1aXJlZCwgdGhlIGZpZWxkIGlzIHZhbGlkLgoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7CgoJCWlmICghJHJlcXVpcmVkICYmIGVtcHR5KCR2YWx1ZSkpCgkJewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCS8vIHRoYW5rcyB0byBMZXdpZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTUxNTQ1Ni8xNDI5Njc3CgkJcmV0dXJuIHByZWdfbWF0Y2goIi9eKFx7KT9bYS1mXGRdezh9KC1bYS1mXGRdezR9KXs0fVthLWZcZF17OH0oPygxKVx9KSQvaSIsICR2YWx1ZSk7Cgl9Cg==', 'Globally Unique Identifier', '', 1, '2019-10-10 23:13:41'),
(10, '', 'uniquetoken', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBmaWVsZCB2YWx1ZSBmb3IgdW5pcXVlbmVzcy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMTEuMQ0KCSAqLw0KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KFxTaW1wbGVYTUxFbGVtZW50ICRlbGVtZW50LCAkdmFsdWUsICRncm91cCA9IG51bGwsIFJlZ2lzdHJ5ICRpbnB1dCA9IG51bGwsIEZvcm0gJGZvcm0gPSBudWxsKQ0KCXsNCgkJLy8gR2V0IHRoZSBkYXRhYmFzZSBvYmplY3QgYW5kIGEgbmV3IHF1ZXJ5IG9iamVjdC4NCgkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCSRxdWVyeSA9ICRkYi0+Z2V0UXVlcnkodHJ1ZSk7DQoNCgkJLy8gR2V0IHRoZSBleHRyYSBmaWVsZCBjaGVjayBhdHRyaWJ1dGUuDQoJCSRpZCA9ICgkaW5wdXQgaW5zdGFuY2VvZiBSZWdpc3RyeSkgPyAkaW5wdXQtPmdldCgnaWQnLCBudWxsKSA6IG51bGw7DQoNCgkJLy8gZ2V0IHRoZSBjb21wb25lbnQgJiB0YWJsZSBuYW1lDQoJCSR0YWJsZSA9ICgkZm9ybSBpbnN0YW5jZW9mIEZvcm0pID8gJGZvcm0tPmdldE5hbWUoKSA6ICcnOw0KDQoJCS8vIGdldCB0aGUgY29sdW1uIG5hbWUNCgkJJG5hbWUgPSAoYXJyYXkpICRlbGVtZW50LT5hdHRyaWJ1dGVzKCktPnsnbmFtZSd9Ow0KCQkkY29sdW1uID0gKHN0cmluZykgdHJpbSgkbmFtZVswXSk7DQoJCQ0KCQkvLyBjaGVjayB0aGF0IHdlIGhhdmUgYSB2YWx1ZQ0KCQlpZiAoc3RybGVuKCR2YWx1ZSkgJiYgc3RybGVuKCR0YWJsZSkgPiAzICYmIHN0cnBvcygkdGFibGUsICdbW1tjb21wb25lbnRdXV0uJykgIT09IGZhbHNlKQ0KCQl7DQoJCQkvLyBub3cgZ2V0IHRoZSB0YWJsZSBuYW1lDQoJCQkkdGFibGVBcnJheSA9IGV4cGxvZGUoJy4nLCAkdGFibGUpOw0KCQkJLy8gZG8gd2UgaGF2ZSB0d28gdmFsdWVzDQoJCQlpZiAoY291bnQoIChhcnJheSkgJHRhYmxlQXJyYXkpID09IDIpDQoJCQl7DQoJCQkJLy8gQnVpbGQgdGhlIHF1ZXJ5Lg0KCQkJCSRxdWVyeS0+c2VsZWN0KCdDT1VOVCgqKScpDQoJCQkJCS0+ZnJvbSgnI19fW1tbY29tcG9uZW50XV1dXycgLiAoc3RyaW5nKSAkdGFibGVBcnJheVsxXSkNCgkJCQkJLT53aGVyZSgkZGItPnF1b3RlTmFtZSgkY29sdW1uKSAuICcgPSAnIC4gJGRiLT5xdW90ZSgkdmFsdWUpKTsNCg0KCQkJCS8vIHJlbW92ZSB0aGlzIGl0ZW0gZnJvbSB0aGUgbGlzdA0KCQkJCWlmICgkaWQgPiAwKQ0KCQkJCXsNCgkJCQkJJHF1ZXJ5LT53aGVyZSgkZGItPnF1b3RlTmFtZSgnaWQnKSAuICcgPD4gJyAuIChpbnQpICRpZCk7DQoJCQkJfQ0KDQoJCQkJLy8gU2V0IGFuZCBxdWVyeSB0aGUgZGF0YWJhc2UuDQoJCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJCSRkdXBsaWNhdGUgPSAoYm9vbCkgJGRiLT5sb2FkUmVzdWx0KCk7DQoNCgkJCQlpZiAoJGR1cGxpY2F0ZSkNCgkJCQl7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfQ==', 'unique token value', '', 1, '2020-05-02 13:31:14'),
(11, '', 'onlypastdate', 'CS8qKg0KCSAqIE1ldGhvZCB0byB0ZXN0IHRoZSBjYWxlbmRhciB2YWx1ZSBmb3IgYSB2YWxpZCBwYXJ0cy4NCgkgKg0KCSAqIEBwYXJhbSAgIFxTaW1wbGVYTUxFbGVtZW50ICAkZWxlbWVudCAgVGhlIFNpbXBsZVhNTEVsZW1lbnQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYDxmaWVsZD5gIHRhZyBmb3IgdGhlIGZvcm0gZmllbGQgb2JqZWN0Lg0KCSAqIEBwYXJhbSAgIG1peGVkICAgICAgICAgICAgICAkdmFsdWUgICAgVGhlIGZvcm0gZmllbGQgdmFsdWUgdG8gdmFsaWRhdGUuDQoJICogQHBhcmFtICAgc3RyaW5nICAgICAgICAgICAgICRncm91cCAgICBUaGUgZmllbGQgbmFtZSBncm91cCBjb250cm9sIHZhbHVlLiBUaGlzIGFjdHMgYXMgYW4gYXJyYXkgY29udGFpbmVyIGZvciB0aGUgZmllbGQuDQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSBpZiB0aGUgZmllbGQgaGFzIG5hbWU9ImZvbyIgYW5kIHRoZSBncm91cCB2YWx1ZSBpcyBzZXQgdG8gImJhciIgdGhlbiB0aGUNCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGwgZmllbGQgbmFtZSB3b3VsZCBlbmQgdXAgYmVpbmcgImJhcltmb29dIi4NCgkgKiBAcGFyYW0gICBSZWdpc3RyeSAgICAgICAgICAgJGlucHV0ICAgIEFuIG9wdGlvbmFsIFJlZ2lzdHJ5IG9iamVjdCB3aXRoIHRoZSBlbnRpcmUgZGF0YSBzZXQgdG8gdmFsaWRhdGUgYWdhaW5zdCB0aGUgZW50aXJlIGZvcm0uDQoJICogQHBhcmFtICAgRm9ybSAgICAgICAgICAgICAgICRmb3JtICAgICBUaGUgZm9ybSBvYmplY3QgZm9yIHdoaWNoIHRoZSBmaWVsZCBpcyBiZWluZyB0ZXN0ZWQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZCwgZmFsc2Ugb3RoZXJ3aXNlLg0KCSAqDQoJICogQHNpbmNlICAgMy43LjANCgkgKi8NCglwdWJsaWMgZnVuY3Rpb24gdGVzdChcU2ltcGxlWE1MRWxlbWVudCAkZWxlbWVudCwgJHZhbHVlLCAkZ3JvdXAgPSBudWxsLCBSZWdpc3RyeSAkaW5wdXQgPSBudWxsLCBGb3JtICRmb3JtID0gbnVsbCkNCgl7DQoJCS8vIElmIHRoZSBmaWVsZCBpcyBlbXB0eSBhbmQgbm90IHJlcXVpcmVkLCB0aGUgZmllbGQgaXMgdmFsaWQuDQoJCSRyZXF1aXJlZCA9ICgoc3RyaW5nKSAkZWxlbWVudFsncmVxdWlyZWQnXSA9PSAndHJ1ZScgfHwgKHN0cmluZykgJGVsZW1lbnRbJ3JlcXVpcmVkJ10gPT0gJ3JlcXVpcmVkJyk7DQoNCgkJaWYgKCEkcmVxdWlyZWQgJiYgZW1wdHkoJHZhbHVlKSkNCgkJew0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQl0cnkNCgkJew0KCQkJLy8gbWFrZSBzdXJlIHdlIGFyZSBpbiBBdXN0cmFsaWENCgkJCWRhdGVfZGVmYXVsdF90aW1lem9uZV9zZXQoJ0F1c3RyYWxpYS9TeWRuZXknKTsNCgkJCWlmIChzdHJwb3MoJHZhbHVlLCAnLycpICE9PSBmYWxzZSkNCgkJCXsNCgkJCQkkdmFsdWUgPSBpbXBsb2RlKCctJywgZXhwbG9kZSgnLycsICR2YWx1ZSkpOw0KCQkJfQ0KCQkJJHZhbHVlID0gc3RydG90aW1lKCR2YWx1ZSk7DQoJCQkvLyB3ZSBjaGVjayB0aGF0IHRoaXMgZGF0ZSBpcyBub3QgaW4gdGhlIGZ1dHVyZQ0KCQkJaWYgKCR2YWx1ZSA8PSB0aW1lKCkpDQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoJCX0NCgkJY2F0Y2ggKFxFeGNlcHRpb24gJGUpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ==', 'Only allow dates in the past', '', 1, '2020-06-27 15:36:56');

--
-- Dumping data for table `#__componentbuilder_field`
--

INSERT INTO `#__componentbuilder_field` (`id`, `add_css_view`, `add_css_views`, `add_javascript_view_footer`, `add_javascript_views_footer`, `css_view`, `css_views`, `datadefault`, `datadefault_other`, `datalenght`, `datalenght_other`, `datatype`, `indexes`, `javascript_view_footer`, `javascript_views_footer`, `name`, `null_switch`, `store`, `fieldtype`, `xml`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`, `on_get_model_field`, `on_save_model_field`, `initiator_on_get_model`, `initiator_on_save_model`, `params`) VALUES
(23, '', '', '', '', '', '', '', '', 64, '', 'CHAR', 2, '', '', 'Alias', 'NOT NULL', '', 24, '\"<field\\n\\ttype=\\\"text\\\"\\n\\tname=\\\"alias\\\"\\n\\tlabel=\\\"Alias\\\"\\n\\tfilter=\\\"STRING\\\"\\n\\thint=\\\"Auto-generated from name\\\"\\n\\/>\"', 1, '2015-04-09 13:46:04', '2023-06-27 23:46:54', 3, '', 216, '335866ce-b81b-4329-901d-c20254135c9c', '', '', '', '', ''),
(84, '', '', '', '', '', '', '', '', '', '', 'TEXT', '', '', '', 'Description (full width)', 'NULL', '', 25, '\"<field\\n\\ttype=\\\"textarea\\\"\\n\\tname=\\\"description\\\"\\n\\tlabel=\\\"Description\\\"\\n\\trows=\\\"11\\\"\\n\\tcols=\\\"10\\\"\\n\\tdescription=\\\"Add Description Here\\\"\\n\\tclass=\\\"text_area span12\\\"\\n\\tfilter=\\\"HTML\\\"\\n\\thint=\\\"Add Description Here\\\"\\n\\/>\"', 1, '2015-03-19 18:20:49', '2024-03-06 15:53:48', 5, '', 265, '749a9917-90c3-49c4-9e72-aa33b0683a87', '', '', '', '', ''),
(100, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Email (required)', 'NOT NULL', '', 24, '\"<field \\r\\n\\ttype=\\\"text\\\" \\r\\n\\tname=\\\"email\\\" \\r\\n\\tlabel=\\\"Email\\\" \\r\\n\\tsize=\\\"10\\\" \\r\\n\\tmaxlength=\\\"50\\\" \\r\\n\\tdescription=\\\"Enter Email\\\" \\r\\n\\tclass=\\\"text_area\\\"\\r\\n\\tfilter=\\\"STRING\\\" \\r\\n\\tvalidate=\\\"email\\\" \\r\\n\\trequired=\\\"true\\\"\\r\\n\\tmessage=\\\"Error! Please add email address here.\\\" \\r\\n\\thint=\\\"demo@example.com\\\" \\r\\n\\/>\"', 1, '2015-05-05 23:44:32', '2016-02-07 22:43:18', 4, '', 285, '10c1eccb-b3c3-4325-a056-45a72d116fd8', '', '', '', '', ''),
(158, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Image', 'NOT NULL', '', 12, '\"<field\\n\\ttype=\\\"media\\\"\\n\\tname=\\\"image\\\"\\n\\tlabel=\\\"Image\\\"\\n\\/>\"', 1, '2015-04-29 14:00:56', '2020-06-07 02:17:46', 2, '', 45, '0d6970af-b361-4f65-84f6-0eb0c5f09bad', '', '', '', '', ''),
(196, '', '', '', '', '', '', '', '', 64, '', 'VARCHAR', '', '', '', 'Mobile Phone', 'NOT NULL', '', 23, '\"<field type=\\\"text\\\" \\r\\nname=\\\"mobile_phone\\\" \\r\\nlabel=\\\"Mobile Phone\\\" \\r\\nsize=\\\"10\\\" \\r\\nmaxlength=\\\"50\\\" \\r\\ndefault=\\\"\\\" \\r\\ndescription=\\\"Enter Mobile Phone Number\\\" \\r\\nclass=\\\"text_area\\\" \\r\\nfilter=\\\"STRING\\\" \\r\\nvalidated=\\\"tel\\\" \\r\\nrequired=\\\"true\\\" \\r\\nmessage=\\\"Error! Please add mobile phone number here.\\\" \\r\\nhint=\\\"Mobile Phone Here\\\"  \\/>\"', 1, '2015-04-07 22:12:58', '2016-03-28 14:00:02', 2, '', 7, '65933a19-243a-48b2-aae9-34e2da710051', '', '', '', '', ''),
(199, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', 2, '', '', 'Name (Key - Required)', 'NOT NULL', '', 24, '\"<field\\n\\ttype=\\\"text\\\"\\n\\tname=\\\"name\\\"\\n\\tlabel=\\\"Name\\\"\\n\\tsize=\\\"40\\\"\\n\\tmaxlength=\\\"150\\\"\\n\\tdescription=\\\"Enter Name Here\\\"\\n\\tclass=\\\"text_area\\\"\\n\\treadonly=\\\"false\\\"\\n\\tdisabled=\\\"false\\\"\\n\\trequired=\\\"true\\\"\\n\\tfilter=\\\"STRING\\\"\\n\\tmessage=\\\"Error! Please add name here.\\\"\\n\\thint=\\\"Name Here\\\"\\n\\/>\"', 1, '2015-03-19 17:30:59', '2023-06-19 22:38:40', 10, '', 4, '5d3d34dd-4876-4c6a-86ab-b4e162f22c08', '', '', '', '', ''),
(203, '', '', '', '', '', '', '', '', 1, '', 'INT', '', '', '', 'Not Required', 'NOT NULL', '', 9, '\"<field\\n\\ttype=\\\"hidden\\\"\\n\\tname=\\\"not_required\\\"\\n\\tdefault=\\\"\\u4e00_\\u4e00\\\"\\n\\/>\"', 1, '2015-05-08 16:19:16', '2023-09-27 07:57:19', 16, '', 19, 'da5e6901-6958-40e5-a4f5-6822d6fe57ac', '', '', '', '', ''),
(280, '', '', '', '', '', '', '', '', 255, '', 'VARCHAR', '', '', '', 'Website', 'NOT NULL', '', 27, '\"<field\\n\\ttype=\\\"url\\\"\\n\\tname=\\\"website\\\"\\n\\tlabel=\\\"Website\\\"\\n\\tsize=\\\"60\\\"\\n\\tmaxlength=\\\"150\\\"\\n\\tdescription=\\\"Enter website address\\\"\\n\\tclass=\\\"text_area\\\"\\n\\tfilter=\\\"url\\\"\\n\\tvalidated=\\\"url\\\"\\n\\tmessage=\\\"Error! Please add website here.\\\"\\n\\thint=\\\"http:\\/\\/www.example.com\\\"\\n\\tscheme=\\\"http,https\\\"\\n\\/>\"', 1, '2015-04-08 00:36:16', '2018-07-08 00:11:05', 2, '', 105, '6c3a6983-d1bf-4e5e-9e99-deea00b0cefd', '', '', '', '', ''),
(682, '', '', '', '', '', '', '', '', 1, '', 'TINYINT', 2, '', '', 'Add More', 'NOT NULL', '', 17, '\"<field\\n\\ttype=\\\"radio\\\"\\n\\tname=\\\"add\\\"\\n\\tlabel=\\\"Add More\\\"\\n\\tdescription=\\\"\\\"\\n\\tclass=\\\"btn-group btn-group-yesno\\\"\\n\\toption=\\\"1|Yes,0|No\\\"\\n\\tdefault=\\\"0\\\"\\n\\trequired=\\\"true\\\"\\n\\/>\"', 1, '2015-08-05 01:18:20', '2023-01-20 11:15:45', 7, '', 196, 'a66389aa-2323-4f44-8c23-ff44969639be', '', '', '', '', ''),
(1011, '', '', '', '', '', '', 'Other', '0000-00-00', '', '', 'DATE', '', '', '', 'Date of Birth', 'NOT NULL', '', 1, '\"<field\\n\\ttype=\\\"calendar\\\"\\n\\tname=\\\"dateofbirth\\\"\\n\\tlabel=\\\"Date of Birth\\\"\\n\\tdefault=\\\"1970-01-01\\\"\\n\\tdescription=\\\"Your date of birth\\\"\\n\\tformat=\\\"%Y-%m-%d\\\"\\n\\tminyear=\\\"-120\\\"\\n\\tmaxyear=\\\"-1\\\"\\n\\tfilter=\\\"STRING\\\"\\n\\ttodaybutton=\\\"false\\\"\\n\\trequired=\\\"true\\\"\\n\\/>\"', 1, '2015-12-07 01:47:32', '2018-08-03 09:56:07', 4, '', 649, 'cb2bdf20-8800-407b-a4f6-250152a0bdfb', '', '', '', '', '');

--
-- Dumping data for table `#__componentbuilder_fieldtype`
--

INSERT INTO `#__componentbuilder_fieldtype` (`id`, `description`, `name`, `properties`, `short_description`, `params`, `published`, `version`, `hits`, `ordering`, `guid`) VALUES
(1, 'The calendar form field type provides a text box for entry of a date. An icon next to the text box provides a link to a pop-up calendar, which can also be used to enter the date value. If the field has a saved value this is shown in the text box. Otherwis', 'Calendar', '{\"properties0\":{\"name\":\"type\",\"example\":\"calendar\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be calendar.\"},\"properties1\":{\"name\":\"name\",\"example\":\"date\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a date\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"NOW\",\"adjustable\":\"1\",\"description\":\"(optional) is the default date. This must be given in the same format as specified by the format argument. You can put \\\"NOW\\\" to have current time.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the text box.\"},\"properties5\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is whether the text box is read-only (true or false). If the text box is read-only, the date cannot be changed, but can be selected and copied. No calendar icon will be shown.\"},\"properties6\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is whether the text box is disabled (true or false). If the text box is disabled, the date cannot be changed, selected or copied.\"},\"properties7\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties8\":{\"name\":\"format\",\"example\":\"%d-%m-%Y\",\"adjustable\":\"1\",\"description\":\"(optional) is the date format to be used. This is in the format used by PHP to specify date string formats (see below). If no format argument is given, \'%Y-%m-%d\' is assumed (giving dates like \'2008-04-16\').\"},\"properties9\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is time zone to be used. There are two values; server_utc and user_utc. The first one is server time zone and the later is user time zone as configured in global configuration and user information respectively.\"},\"properties10\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties23\":{\"name\":\"message\",\"example\":\"Error! Please add some text here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties11\":{\"name\":\"size\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional)\"},\"properties12\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties14\":{\"name\":\"translateformat\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): If set to true, the calendar will use a language string to determine the format. The `format` attribute is ignored. If false, the `format` attribute is used (same behaviour as today). (starting with 3.7.0)\"},\"properties15\":{\"name\":\"showtime\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): If set to true and translateformat is true, the language key DATE_FORMAT_CALENDAR_DATETIME is used, otherwise DATE_FORMAT_CALENDAR_DATE. (starting with 3.7.0)\"},\"properties16\":{\"name\":\"timeformat\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): can be set to 12 (and specify AM or PM) or 24 (starting with 3.7.0)\"},\"properties17\":{\"name\":\"singleheader\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): if set to false, the year and the month selection will be set on two separates lines, with independant selection (starting with 3.7.0)\"},\"properties18\":{\"name\":\"todaybutton\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): if set to true, a button is added at the bottom of the datePicker to select the date of the current day (starting with 3.7.0)\"},\"properties19\":{\"name\":\"weeknumbers\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): if set to true, a column is added at the left of the datePicker to display the number of the week in the current year (starting with 3.7.0)\"},\"properties20\":{\"name\":\"filltable\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): if set to true, dates of the previous and next month is added at the top and the bottom of the current month to fill the grid (starting with 3.7.0)\"},\"properties21\":{\"name\":\"minyear\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): set a signed integer for a number of years (-10, -2, 0, 7, 12, ...) to define the relative lower limit for the year selection. The user could not select a year before your limit (starting with 3.7.0)\"},\"properties22\":{\"name\":\"maxyear\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional): set a signed integer for a number of years (-10, -2, 0, 7, 12, ...) to define the relative upper limit for the year selection. The user could not select a year after your limit (starting with 3.7.0)\"}}', 'provides a text box for entry of a date. An icon next to the text box provides a link to a pop-up calendar, which can also be used to enter the date value.', '', 1, 9, '', '', '6cf5a33f-cb25-4a58-bfec-7e1511896402'),
(2, 'The category form field type provides a drop down list of all published categories for a certain extension. If the parameter has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected. If the show_root', 'Category', '{\"properties0\":{\"name\":\"type\",\"example\":\"category\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be category.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mycategory\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a category\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"extension\",\"example\":\"com_content\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the name of the extension for which the categories will be retrieved. For example, to list content categories, use the value \'com_content\'. You can add also target one view, use the value \'com_component.view\'.\"},\"properties4\":{\"name\":\"scope\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is an alias for extension.\"},\"properties5\":{\"name\":\"required\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"show_root\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) is whether a choice representing the root category will be shown. Remove completely if it is not to be shown.\"},\"properties7\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default category ID number.\"},\"properties8\":{\"name\":\"description\",\"example\":\"select one of the following categories\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties9\":{\"name\":\"class\",\"example\":\"inputbox\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties10\":{\"name\":\"published\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) (1\\/0\\/2\\/-2) is whether the drop down will show only published (1), unpublished (0), archived (2) or trashed (-2) categories. It is possible to combine different publishing status by entering the list of the corresponding numbers separated by comma (e.g. \\\"0,2,-2\\\" will display only unpublished, archived and trashed categories in the drop-down).\"},\"properties11\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of categories for an extension.', '', 1, 13, '', '', 'f70346b3-2096-4f44-8b26-01ab87da7d1e'),
(3, 'The checkbox form field type provides a single checkbox. If the parameter has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Checkbox', '{\"properties0\":{\"name\":\"type\",\"example\":\"checkbox\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be checkbox\"},\"properties1\":{\"name\":\"name\",\"example\":\"show_title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Show title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"value\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) is the value of the parameter if this checkbox is set (usually 1).\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value (usually 0 or 1).\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Show the title of the item\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties7\":{\"name\":\"class\",\"example\":\"inputbox\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties8\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties9\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (JavaScript use)\"}}', 'provides a single checkbox to be checked or unchecked', '', 1, 7, '', '', '10066262-b6e3-4f82-941e-cbe4f61ddd6c'),
(4, 'The checkboxes form field type provides a set of checkboxes. Note: unlike most standard form field types, such as textfield or checkbox, this field is not an \"out of the box\" solution. It will create checkboxes for you, and submit their values in form of ', 'Checkboxes', '{\"properties0\":{\"name\":\"type\",\"example\":\"checkboxes\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be checkboxs\"},\"properties1\":{\"name\":\"name\",\"example\":\"toppings\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select Toppings\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"option\",\"example\":\"anch|Anchovies,chor|Chorizo,on|Onions,mush|Mushrooms\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value.\"},\"properties5\":{\"name\":\"description\",\"example\":\"Select the topping of your choice\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties8\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides unlimited checkboxes that can be used for multi-select.', '', 1, 4, '', '', 'ac10859b-58da-4584-9682-36a6c2c8d04d'),
(5, 'Provides a color picker. Enter the color as #ff00ff or pick it from the palet.', 'Color', '{\"properties0\":{\"name\":\"type\",\"example\":\"color\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be color.\"},\"properties1\":{\"name\":\"name\",\"example\":\"backgroundcolor\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"default\",\"example\":\"#FFFFFF\",\"adjustable\":\"1\",\"description\":\"(optional) provides a color when not set.\"},\"properties3\":{\"name\":\"label\",\"example\":\"Background\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties4\":{\"name\":\"description\",\"example\":\"Select the background color here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) tooltip for the form field.\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a color picker when clicking the input box.', '', 1, 5, '', '', '7f60f198-53e7-4fe9-813f-d1b6c553680e'),
(6, 'The list form field type provides a drop down list or a list box of other current component table entries. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Custom', '{\"properties0\":{\"name\":\"type\",\"example\":\"subjects\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type. You can also not use the \\\"_\\\" (underscore) or \\\"-\\\" (hyphen) in the type name, and no spaces.\"},\"properties1\":{\"name\":\"name\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a Subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"list_class\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties24\":{\"name\":\"layout\",\"example\":\"joomla.form.field.list-fancy-select\",\"adjustable\":\"1\",\"description\":\"(optional) New layout field added in Joomla 4\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties7\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties8\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties9\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties10\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties11\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties13\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties14\":{\"name\":\"extends\",\"example\":\"list\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The JFormField sub class that should be extended. The options are (\'list\',\'radio\',\'checkboxes\')\"},\"properties15\":{\"name\":\"button\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) to add new button next to field in edit view\"},\"properties16\":{\"name\":\"table\",\"example\":\"#__###component###_subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The table being linked to. The ###TABLE### placeholder holds the table in the php.\"},\"properties17\":{\"name\":\"component\",\"example\":\"com_###component###\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the component where this table is found. Must be com_users\"},\"properties18\":{\"name\":\"view\",\"example\":\"subject\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The single view name if the place this field is added.\"},\"properties19\":{\"name\":\"views\",\"example\":\"subjects\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The list view name if the place this field is added.\"},\"properties20\":{\"name\":\"value_field\",\"example\":\"name\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the text field in table linked to. The ###TEXT### placeholder holds the value_field in the php.\"},\"properties21\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The field from the linked table to save in this table as the unique key. The ###ID### placeholder holds the key_field in the php.\"},\"properties22\":{\"name\":\"prime_php\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"This field makes sure that the PHP used here is used to build the field type, and other are custom fields with the same field type are ignored. So to avoid that they over write the PHP added here. You should only have one prime per\\/type. To disable remove the field or set to 0\"},\"properties23\":{\"name\":\"type_php_1\",\"example\":\"\\/\\/ Get the user object.\\r\\n\\t\\t$user = Factory::getUser();\\r\\n\\t\\t\\/\\/ Get the databse object.\\r\\n\\t\\t$db = Factory::getDBO();\\r\\n\\t\\t$query = $db->getQuery(true);\\r\\n\\t\\t$query->select($db->quoteName(array(\'a.###ID###\',\'a.###TEXT###\'),array(\'###ID###\',\'###CODE_TEXT###\')));\\r\\n\\t\\t$query->from($db->quoteName(\'###TABLE###\', \'a\'));\\r\\n\\t\\t$query->where($db->quoteName(\'a.published\') . \' = 1\');\\r\\n\\t\\t$query->order(\'a.###TEXT### ASC\');\\r\\n\\t\\t\\/\\/ Implement View Level Access (if set in table)\\r\\n\\t\\tif (!$user->authorise(\'core.options\', \'[[[com_component]]]\'))\\r\\n\\t\\t{\\r\\n\\t\\t\\t$columns = $db->getTableColumns(\'###TABLE###\');\\r\\n\\t\\t\\tif(isset($columns[\'access\']))\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$groups = implode(\',\', $user->getAuthorisedViewLevels());\\r\\n\\t\\t\\t\\t$query->where(\'a.access IN (\' . $groups . \')\');\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\t$db->setQuery((string)$query);\\r\\n\\t\\t$items = $db->loadObjectList();\\r\\n\\t\\t$options = [];\\r\\n\\t\\tif ($items)\\r\\n\\t\\t{\\r\\n\\t\\t\\tif ($this->multiple === false)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', \'\', Text::_(\'Select an option\'));\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tforeach($items as $item)\\r\\n\\t\\t\\t{\\r\\n\\t\\t\\t\\t$options[] = Html::_(\'select.option\', $item->###ID###, $item->###CODE_TEXT###);\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\treturn $options;\",\"adjustable\":\"1\",\"description\":\"The php for the getOptions method.\"}}', 'provides a drop down list of items entries.', '', 1, 30, '', '', 'dd2e1f4b-f5db-45e8-85fa-efd27bae7b6a'),
(7, 'The a list of users that can be targeting one or more groups and excluded users that already belongs to an item in a view.', 'CustomUser', '{\"properties0\":{\"name\":\"type\",\"example\":\"staffusers\",\"mandatory\":\"1\",\"description\":\"(mandatory) can be anything, just not the same as any other default Joomla field type.\"},\"properties1\":{\"name\":\"name\",\"example\":\"staff\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Staff\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties5\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties8\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties9\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"\"},\"properties10\":{\"name\":\"hint\",\"example\":\"select a user\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties12\":{\"name\":\"extends\",\"example\":\"user\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"The JFormField sub class that should be extended. The options are (\'list\',\'radio\',\'checkboxes\')\"},\"properties13\":{\"name\":\"table\",\"example\":\"#__users\",\"mandatory\":\"1\",\"description\":\"(mandatory) The table being linked to. Must be #__users\"},\"properties14\":{\"name\":\"component\",\"example\":\"com_users\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the component where this table is found. Must be com_users\"},\"properties15\":{\"name\":\"view\",\"example\":\"###view###\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The single view name if the place this field is added.\"},\"properties16\":{\"name\":\"views\",\"example\":\"###views###\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The list view name if the place this field is added.\"},\"properties17\":{\"name\":\"value_field\",\"example\":\"name\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The name of the text field in table linked to.\"},\"properties18\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The field from the linked table to save in this table as the unique key.\"},\"properties19\":{\"name\":\"type_php_1\",\"example\":\"\\t\\t\\/\\/ set the groups array\\r\\n\\t\\treturn ComponentHelper::getParams(\'com_###component###\')->get(\'###type###\');\",\"adjustable\":\"1\",\"description\":\"The php for the getGroups method.\"},\"properties22\":{\"name\":\"type_phpx_1\",\"example\":\"\\t\\t\\/\\/ To ensure that there is only one record per user\\r\\n\\t\\t\\/\\/ Get a db connection.\\r\\n\\t\\t$db = Factory::getDbo();\\r\\n\\t\\t\\/\\/ Create a new query object.\\r\\n\\t\\t$query = $db->getQuery(true);\\r\\n\\t\\t\\/\\/ Select all records from the #__###component###_###view### table from ###CODE### column\\\".\\r\\n\\t\\t$query->select($db->quoteName(\'###CODE###\'));\\r\\n\\t\\t$query->from($db->quoteName(\'#__###component###_###view###\'));\\r\\n\\t\\t$db->setQuery($query);\\r\\n\\t\\t$db->execute();\\r\\n\\t\\t$found = $db->getNumRows();\\r\\n\\t\\tif ($found)\\r\\n\\t\\t{\\r\\n\\t\\t\\t\\/\\/ return all users already used\\r\\n\\t\\t\\treturn array_unique($db->loadColumn());\\r\\n\\t\\t}\\r\\n\\t\\treturn null;\",\"adjustable\":\"1\",\"description\":\"The php for the getExcluded method.\"}}', 'Provides list of users.', '', 1, 6, '', '', 'a4a39f70-070f-459c-be4b-0ac103a29b9a'),
(8, 'The Editor field type provides a WYSIWYG editor.', 'Editor', '{\"properties0\":{\"name\":\"type\",\"example\":\"editor\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be editor.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mytextblock\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Test Field\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"Some text\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties5\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties6\":{\"name\":\"width\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the width (in pixels) of the wysiwyg editor and defaults to 100%.\"},\"properties7\":{\"name\":\"height\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the height (in pixels) of the wysiwyg editor and defaults to 250px.\"},\"properties8\":{\"name\":\"cols\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the width of the editor (in columns).\"},\"properties9\":{\"name\":\"rows\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) defines the height of the editor (in rows).\"},\"properties10\":{\"name\":\"buttons\",\"example\":\"no\",\"adjustable\":\"1\",\"description\":\"(optional) can be an array of plugin buttons to be excluded or set to false. The default editors-xtd are: article, image, pagebreak and readmore.\"},\"properties11\":{\"name\":\"syntax\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) can be used to set the code syntax matching for this field.\"},\"properties12\":{\"name\":\"hide\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) array of plugin buttons to be hidden. eg... set buttons=\\\"true\\\" hide=\\\"readmore,pagebreak\\\"\"},\"properties13\":{\"name\":\"editor\",\"example\":\"codemirror|none\",\"adjustable\":\"1\",\"description\":\"specifies the editor to be used and can include two options (editor=\\\"desired|alternative\\\")\"},\"properties14\":{\"name\":\"filter\",\"example\":\"safehtml\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties15\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties16\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties17\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides an editor area field.', '', 1, 11, '', '', '51f288d2-6eaa-42bc-a182-a6f69b3032b8'),
(9, 'The hidden form field type provides a hidden field for saving a field whose value cannot be altered directly by a user in the Administrator (it can be altered in code or by editing the params.ini file). If the parameter has a saved value this is entered i', 'Hidden', '{\"properties0\":{\"name\":\"type\",\"example\":\"hidden\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be hidden.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mysecretvariable\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"default\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the data which needs to be collected.\"},\"properties5\":{\"name\":\"filter\",\"example\":\"STRING\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties4\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"}}', 'provides a hidden field for saving a form field whose value cannot be altered directly by a user.', '', 1, 2, '', '', '82f1b5ca-bb9b-44d7-9a7a-9a03fb2a31dd'),
(10, 'The integer form field type provides a select box with a range of integer values. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Integer', '{\"properties0\":{\"name\":\"type\",\"example\":\"integer\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be integer.\"},\"properties1\":{\"name\":\"name\",\"example\":\"size\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Size\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties7\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties8\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties9\":{\"name\":\"first\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) this value is the lowest on the list.\"},\"properties10\":{\"name\":\"last\",\"example\":\"20\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) this value is the highest on the list.\"},\"properties11\":{\"name\":\"step\",\"example\":\"5\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) each option will be the previous option incremented by this integer, starting with the first value until the last value is reached.\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties13\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a drop down list of integers between a minimum and maximum.', '', 1, 6, '', '', 'fdbb50ea-35d2-45b2-a0bc-076fdf1544b8'),
(11, 'The list form field type provides a drop down list or a list box of custom-defined entries. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'List', '{\"properties0\":{\"name\":\"type\",\"example\":\"list\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be list.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mylist\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an option\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"list_class\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties6\":{\"name\":\"layout\",\"example\":\"joomla.form.field.list-fancy-select\",\"adjustable\":\"1\",\"description\":\"(optional) New layout field added in Joomla 4\"},\"properties7\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties8\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) filter options\"},\"properties9\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties10\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties11\":{\"name\":\"option\",\"example\":\"0|Option 1,1|Option 2,2|Option 1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties12\":{\"name\":\"useglobal\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional)  if set to true, it will show the value that is set in the global configuration if found in the database.\"},\"properties13\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) is the default list item value.\"},\"properties14\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties15\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a drop down list of custom-defined entries.', '', 1, 12, '', '', 'a51dfc06-1b9b-4d0a-86ba-f705bcd40d4d'),
(12, 'The media form field type provides modal access to the media manager for the choice of an image. Users with appropriate permissions will be able to upload files.', 'Media', '{\"properties0\":{\"name\":\"type\",\"example\":\"media\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be media.\"},\"properties1\":{\"name\":\"name\",\"example\":\"media\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Media\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"directory\",\"example\":\"\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the directory from which the user will be able to choose a file. This attribute should be relative to the top level \\/images\\/ folder.\"},\"properties5\":{\"name\":\"preview\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) shows or hides the preview of the currently chosen image. (\\\"true\\\": Show always, \\\"tooltip\\\": Show as tooltip, \\\"false\\\": Show never) (since Joomla! 2.5.5)\"},\"properties6\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties7\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides modal access to the media manager for insertion of images with upload for users with appropriate permissions.', '', 1, 5, '', '', '69957007-e3d4-4976-a32b-611d02dbad71'),
(13, 'Provides a meter to show value in a range, updated with jQuery if needed or simply a fixed value.', 'Meter', '{\"properties0\":{\"name\":\"type\",\"example\":\"meter\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be meter.\"},\"properties1\":{\"name\":\"name\",\"example\":\"meter\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Meter\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"width\",\"example\":\"330px\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of meter box\"},\"properties4\":{\"name\":\"color\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The background color\"},\"properties5\":{\"name\":\"default\",\"example\":\"9\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"animated\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) lets the bar have strips\"},\"properties7\":{\"name\":\"active\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) lets the strips on the bar move\"},\"properties8\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties9\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties10\":{\"name\":\"min\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(mandatory) this value is the min on the meter.\"},\"properties11\":{\"name\":\"max\",\"example\":\"20\",\"adjustable\":\"1\",\"description\":\"(mandatory) this value is the max on meter.\"},\"properties12\":{\"name\":\"step\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) each option will be the previous option incremented by this integer, starting with the first value until the last value is reached.\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a meter to show value in a range.', '', 1, 3, '', '', '81668284-e572-4e17-927b-ba697fc64bd0'),
(14, 'This form field makes it possible to create titles, texts, descriptions and even alert boxes. It also allows you to bring order in the settings for extensions, by separating them with useful titles. Or adding descriptions for certain settings (without having to rely on the tooltips). Or adding any other text you want.', 'Note', '{\"properties0\":{\"name\":\"type\",\"example\":\"note\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be note\"},\"properties1\":{\"name\":\"name\",\"example\":\"note_one\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"The notice\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory or optional if using description) (translatable) is the descriptive title of the note \"},\"properties3\":{\"name\":\"description\",\"example\":\"The notice description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional if using label)(translatable) the description\\/text of the note \"},\"properties4\":{\"name\":\"heading\",\"example\":\"h4\",\"adjustable\":\"1\",\"description\":\"(optional) the type of heading element to use for the label (default: h4)\"},\"properties5\":{\"name\":\"class\",\"example\":\"alert\",\"adjustable\":\"1\",\"description\":\"(optional) a class name (or class names), like these examples ( alert, alert alert-info, alert alert-success, alert alert-error )\"},\"properties6\":{\"name\":\"close\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) a value of \'true\' (for alerts) or the value for the data-dismiss of the bootstrap close icon\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'supports a one line text field.', '', 1, 5, '', '', 'f9ecacd0-8481-4157-8c71-d7aaefc2b7c3'),
(15, 'Provides a one line text box with up-down handles to set a number in the field.', 'Number', '{\"properties0\":{\"name\":\"type\",\"example\":\"number\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be number.\"},\"properties1\":{\"name\":\"name\",\"example\":\"number\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Number\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"min\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) this value is the lowest on the list.\"},\"properties8\":{\"name\":\"max\",\"example\":\"40\",\"mandatory\":\"1\",\"description\":\"(mandatory) this value is the highest on the list.\"},\"properties9\":{\"name\":\"step\",\"example\":\"5\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) each option will be the previous option incremented by this number, starting with the first value until the last value is reached.\"},\"properties10\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Javascript that should run on changing of the value.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a one line text box with up-down handles to set a number in the field.', '', 1, 5, '', '', '5abd2b73-643b-4273-841a-787991aad968'),
(16, 'The password form field type provides a text box for entry of a password. The password characters will be obscured as they are entered. If the field has a saved value this is entered (in obscured form) into the text box. If not, the default value (if any)', 'Password', '{\"properties0\":{\"name\":\"type\",\"example\":\"password\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be password.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mypassword\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter A Password\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"default\",\"example\":\"secret\",\"adjustable\":\"1\",\"description\":\"(optional) is the default password.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"message\",\"example\":\"Error! Please add password here.\",\"adjustable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties7\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties12\":{\"name\":\"field\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) used in validation of \\\"equals\\\" to link the field to match.\"},\"properties13\":{\"name\":\"filter\",\"example\":\"raw\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties14\":{\"name\":\"hint\",\"example\":\"Password Here\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties15\":{\"name\":\"autocomplete\",\"example\":\"off\",\"adjustable\":\"1\",\"description\":\"(optional) The autocomplete state for the form field.  If \'off\' element will not be automatically completed by browser.\"},\"properties16\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties17\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a text box for entry of a password. The password characters will be obscured as they are entered.', '', 1, 10, '', '', '0022598d-0ee1-44f2-aa94-c2eb47595f73'),
(17, 'The radio form field type provides radio buttons to select different options. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Radio', '{\"properties0\":{\"name\":\"type\",\"example\":\"radio\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be radio.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myradiovalue\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an option\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"btn-group btn-group-yesno\",\"adjustable\":\"1\",\"description\":\"(optional) New in Joomla 3, if set to class=\\\"btn-group btn-group-yesno\\\" will show the nice coloured buttons\"},\"properties5\":{\"name\":\"option\",\"example\":\"1|Yes,0|No\",\"adjustable\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties6\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) is the default radio button item value.\"},\"properties7\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties8\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties9\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties10\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties11\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties13\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides radio buttons to select different options.', '', 1, 18, '', '', 'b868ed59-4208-4206-8504-95a35a74a11c'),
(18, 'Provides a horizontal scroll bar to specify a value in a range.', 'Range', '{\"properties0\":{\"name\":\"type\",\"example\":\"range\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be range.\"},\"properties1\":{\"name\":\"name\",\"example\":\"range\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Range\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"9\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties4\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties6\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties7\":{\"name\":\"min\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(mandatory) this value is the min on the meter.\"},\"properties8\":{\"name\":\"max\",\"example\":\"20\",\"adjustable\":\"1\",\"description\":\"(mandatory) this value is the max on meter.\"},\"properties9\":{\"name\":\"step\",\"example\":\"1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) each option will be the previous option incremented by this integer, starting with the first value until the last value is reached.\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties12\":{\"name\":\"onchange\",\"example\":\"jQuery(\'#jform_range\').closest(\'.controls\').find(\'span\').remove(); var value = jQuery(\'#jform_range\').val();jQuery(\'#jform_range\').closest(\'.controls\').append(\' \'+value+\'\');\",\"adjustable\":\"1\",\"description\":\"(optional) javascript to run when the range is changed\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a horizontal scroll bar to specify a value in a range.', '', 1, 5, '', '', '627d3845-7273-4f75-8e63-7b3a319a42c8'),
(19, 'Provides a modal with rows of formfields that you specify. As many options can be added as desired. Note this form field has a jQuery based javascript file as a dependency.', 'Repeatable', '{\"properties0\":{\"name\":\"type\",\"example\":\"repeatable\",\"adjustable\":\"1\",\"description\":\"(mandatory) must be repeatable.\"},\"properties1\":{\"name\":\"name\",\"example\":\"repeatable_list\",\"adjustable\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter\"},\"properties2\":{\"name\":\"label\",\"example\":\"The Repeatable List\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The default value for the form field if the field is left empty. Note this has to be a json string compatible with the contents of the form field.\"},\"properties5\":{\"name\":\"id\",\"example\":\"aid\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) id of the hidden from field. (the modal will have this id with an added suffix of \\\"_modal\\\" and the table within the modal will have this id with a suffix of _modal_table\\\")\"},\"properties6\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) class of the table.\"},\"properties7\":{\"name\":\"select\",\"example\":\"Click here\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) The text to show on the modal button.\"},\"properties8\":{\"name\":\"icon\",\"example\":\"list\",\"adjustable\":\"1\",\"description\":\"(optional) The icon to show on the select button (is prefixed with \\\"icon-\\\").\"},\"properties9\":{\"name\":\"maximum\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) The maximum number of rows of fields allowed (by default 999 to be effectively infinite)\"},\"properties10\":{\"name\":\"fields\",\"example\":\"1,2,3\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The fields to add to the modal. All fields must first be created in component builder as a field before you can add them here, since you must use the id of the field. Separate the field ids with commas. Do not add custom fields that are not also used in this component.\"},\"properties11\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Use only if you would like to save raw data, since the default is best.\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Allows form fields which can have as many options as the user desires.', '', 1, 5, '', '', '05bf68d4-52f9-4705-8ae7-cba137fce0ad'),
(20, 'The spacer form field type provides a visual separator between parameter field elements. It is purely a visual aid and no field value is stored.', 'Spacer', '{\"properties0\":{\"name\":\"type\",\"example\":\"spacer\",\"adjustable\":\"0\",\"mandatory\":\"1\",\"translatable\":\"0\",\"description\":\"(mandatory) must be spacer.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myspacer\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"0\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"The notice\",\"adjustable\":\"1\",\"mandatory\":\"0\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is the text to use as a spacer.\"},\"properties3\":{\"name\":\"description\",\"example\":\"The notice description\",\"adjustable\":\"1\",\"mandatory\":\"0\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"hr\",\"example\":\"\",\"adjustable\":\"1\",\"mandatory\":\"0\",\"translatable\":\"0\",\"description\":\"(optional) is whether to display a horizontal rule (\'true\' or \'false\'). If this attribute is \'true\', the label attribute will be ignored.\"},\"properties5\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"mandatory\":\"0\",\"translatable\":\"0\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"}}', 'provides a visual separator between form fields. It is purely a visual aid and no value is stored.', '', 1, 1, '', '', '626d0cba-a908-4a4f-a447-96d781aeaa0b'),
(21, 'Using this generic form field type forces you to write SQL in an XML file and is rather limited. For more flexibility, consider using Custom FieldType.\r\n\r\nThe sql form field type provides a drop down list of entries obtained by running a query on the Joom', 'SQL', '{\"properties0\":{\"name\":\"type\",\"example\":\"sql\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be sql.\"},\"properties1\":{\"name\":\"name\",\"example\":\"title\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the value_field attribute.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an article\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"query\",\"example\":\"SELECT id, concat( title, \' (\', created, \')\') AS title FROM #__content\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the SQL query which will provide the data for the drop-down list. The query must return two columns; one called \'value\' (unless overridden by the key_field attribute) which will hold the values of the list items; the other called the same as the value of the name attribute (unless overridden by the value_field attribute) containing the text to be shown in the drop-down list.\"},\"properties4\":{\"name\":\"default\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the default value. This is the value of the \'value\' field, unless overridden by the key_field attribute.\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties6\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties7\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties8\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties9\":{\"name\":\"key_field\",\"example\":\"id\",\"adjustable\":\"1\",\"description\":\"(optional) is the name of the column that will contain values for the parameter. If omitted then the column called \'value\' will be used, if it exists.\"},\"properties10\":{\"name\":\"value_field\",\"example\":\"title\",\"adjustable\":\"1\",\"description\":\"(optional) is the name of the column that will contain values to be shown to the user in the drop-down list. If omitted then the column with the same name as the name attribute will be used, if it exists.\"},\"properties11\":{\"name\":\"translate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) will translate the output of the value_field if set to true. It defaults to false.\"},\"properties12\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of entries obtained by running a query on the Joomla Database. The first results column returned by the query provides the values for the drop down box.', '', 1, 3, '', '', 'd4c16f1e-fd6e-4714-90eb-f9d97edd9c32'),
(22, 'The Tag field type provides a point where you can enter tags - this is either AJAX or nested.', 'Tag', '{\"properties0\":{\"name\":\"type\",\"example\":\"tag\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be tag.\"},\"properties1\":{\"name\":\"name\",\"example\":\"tags\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"mode\",\"example\":\"ajax\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the way the tags will be loaded, the options are ( ajax or nested )\"},\"properties3\":{\"name\":\"label\",\"example\":\"Tags\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties4\":{\"name\":\"description\",\"example\":\"Assign tags to ###VIEW### items. Tag names must be unique.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is the description of the field.\"},\"properties5\":{\"name\":\"id\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the id to add to the field. Note if none is set this will be the name of the field.\"},\"properties6\":{\"name\":\"class\",\"example\":\"inputbox small\",\"adjustable\":\"1\",\"description\":\"(optional) is the class to add to the field.\"},\"properties7\":{\"name\":\"published\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) determines if non published tags should be allowed.\"},\"properties8\":{\"name\":\"language\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is language to filter the existing tags by.\"},\"properties9\":{\"name\":\"multiple\",\"example\":\"true\",\"adjustable\":\"1\",\"description\":\"(optional) is the ability to add more than 1 tag to the form field.\"},\"properties10\":{\"name\":\"custom\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) if the ajax mode is chosen setting this to [deny] will prevent users from adding in new tags.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides an entry point for tags (either AJAX or Nested).', '', 1, 3, '', '', '48cba89e-8fcb-481e-a7d3-2e41773e452d'),
(23, 'The tel field type is an alias for a text field. Telephone numbers can be validated using the tel rule and filtered using the tel input filter.', 'Tel', '{\"properties0\":{\"name\":\"type\",\"example\":\"text\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be text.\"},\"properties1\":{\"name\":\"name\",\"example\":\"phone\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Phone\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"maxlength\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) limits the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Enter phone number\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties7\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"filter\",\"example\":\"tel\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties12\":{\"name\":\"validated\",\"example\":\"tel\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to validated the input data.\"},\"properties13\":{\"name\":\"message\",\"example\":\"Error! Please add phone number here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties14\":{\"name\":\"hint\",\"example\":\"Your Phone Number\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties15\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties16\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides an input field for a telephone number.', '', 1, 6, '', '', '1c6c519c-3bc8-4914-8940-3e9591b0bce6'),
(24, 'The text form field type provides a text box for data entry. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Text', '{\"properties0\":{\"name\":\"type\",\"example\":\"text\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be text.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mytextvalue\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"maxlength\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) limits the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"Some text\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties7\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"filter\",\"example\":\"STRING\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties12\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties13\":{\"name\":\"field\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) used in validation of \\\"equals\\\" to link the field to match.\"},\"properties14\":{\"name\":\"message\",\"example\":\"Error! Please add some text here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties15\":{\"name\":\"hint\",\"example\":\"Your Name Here\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties16\":{\"name\":\"autocomplete\",\"example\":\"on\",\"adjustable\":\"1\",\"description\":\"(optional) The autocomplete state for the form field.  If \'off\' element will not be automatically completed by browser.\"},\"properties17\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties18\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a text box for data entry.', '', 1, 10, '', '', '201327fe-3067-4316-a155-3fe2a52e05c0'),
(25, 'The textarea form field type provides a text area for entry of multi-line text. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Textarea', '{\"properties0\":{\"name\":\"type\",\"example\":\"textarea\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be textarea.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mytextarea\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"rows\",\"example\":\"10\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the height of the visible text area in lines. If omitted the width is determined by the browser. The value of rows does not limit the number of lines that may be entered.\"},\"properties4\":{\"name\":\"cols\",\"example\":\"5\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the width of the visible text area in characters. If omitted the width is determined by the browser. The value of cols does not limit the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"default text\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Text Area\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties7\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties8\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties9\":{\"name\":\"filter\",\"example\":\"raw\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties10\":{\"name\":\"hint\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the textarea.\"},\"properties11\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties12\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties13\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties14\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties15\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties16\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a text area for entry of multi-line text.', '', 1, 9, '', '', '76fe1250-6fa7-49e5-a0ee-f06d8d4c9f99'),
(26, 'The timezones form field type provides a drop down list of time zones. If the field has a value saved, this value is displayed when the page is first loaded. If not, the default value (if any) is selected.', 'Timezone', '{\"properties0\":{\"name\":\"type\",\"example\":\"timezone\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be timezone.\"},\"properties1\":{\"name\":\"name\",\"example\":\"timezone\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Timezone\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default time zone. For example, use \'-10\' for \'(UTC -10:00) Hawaii\'.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of time zones.', '', 1, 3, '', '', 'ed8d8cf4-cb05-49cc-95ef-4ef275f539f9'),
(27, 'This field essentially is a text field with the type of url. If a fully qualified url (that is one with a scheme and domain such as http://example.com) is entered and it uses idn (that is uses characters that are non ascii such as ê or Ψ) it will translat', 'URL', '{\"properties0\":{\"name\":\"type\",\"example\":\"url\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be url.\"},\"properties1\":{\"name\":\"name\",\"example\":\"website\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Website\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"maxlength\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) limits the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Enter website address\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties7\":{\"name\":\"class\",\"example\":\"text_area\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"relative\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) set to true for relative URLs\"},\"properties12\":{\"name\":\"filter\",\"example\":\"url\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties13\":{\"name\":\"validated\",\"example\":\"url\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties14\":{\"name\":\"scheme\",\"example\":\"http,https,mailto\",\"adjustable\":\"1\",\"description\":\"(optional) Validates that the value is a URL with a valid scheme (which can be restricted by the optional comma-separated field \'scheme\'), and passes a basic syntax check.\"},\"properties15\":{\"name\":\"message\",\"example\":\"Error! Please add website here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties16\":{\"name\":\"hint\",\"example\":\"Your Website Here\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties19\":{\"name\":\"autocomplete\",\"example\":\"on\",\"adjustable\":\"1\",\"description\":\"(optional) The autocomplete state for the form field.  If \'off\' element will not be automatically completed by browser.\"},\"properties17\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties18\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a URL text input field.', '', 1, 10, '', '', '8df6e07e-2b16-43ed-a18d-2059fa44cdf1'),
(28, 'The user form field type provides a modal select box of users.', 'User', '{\"properties0\":{\"name\":\"type\",\"example\":\"user\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be user.\"},\"properties1\":{\"name\":\"name\",\"example\":\"user\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the value_field attribute.\"},\"properties2\":{\"name\":\"label\",\"example\":\"User\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties5\":{\"name\":\"size\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties6\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a modal list of users.', '', 1, 4, '', '', 'b0641980-5e78-42f6-972f-86aa607db23e'),
(29, 'The usergroup form field type provides a modal select box of user groups.', 'Usergrouplist', '{\"properties0\":{\"name\":\"type\",\"example\":\"usergrouplist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be usergrouplist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"usergroup\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the value_field attribute.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Group\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Select a group\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties5\":{\"name\":\"layout\",\"example\":\"joomla.form.field.list-fancy-select\",\"adjustable\":\"1\",\"description\":\"(optional) (translatable) is the layout, for example joomla.form.field.list-fancy-select.\"},\"properties6\":{\"name\":\"size\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties7\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the field required true if yes.\"},\"properties8\":{\"name\":\"checksuperusergroup\",\"example\":\"1\",\"adjustable\":\"1\",\"description\":\"(optional) is boolean to omit Super User groups. Values 1 or 0.\"},\"properties9\":{\"name\":\"multiple\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) If set to multiple then allows more than one usergroup to be selected.\"},\"properties10\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of user groups.', '', 1, 7, '', '', 'e2f31181-fbb3-4c3a-859d-72b6b0cff308'),
(30, 'The filelist form field type provides a drop down list of files from a specified directory. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on the', 'Filelist', '{\"properties0\":{\"name\":\"type\",\"example\":\"filelist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be filelist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfile\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a file\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\\/stories\",\"adjustable\":\"1\",\"description\":\"(optional) is the filesystem path to the directory containing the files to be listed. If omitted the directory given by JPATH_ROOT is assumed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default file name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of files selected for inclusion in the drop-down list. If omitted, all files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude files from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"stripext\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true then file name extensions will be stripped from the file names listed. Also note that the file name will be saved without the extension too.\"},\"properties9\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of files from a specified directory.', '', 1, 4, '', 1, '0c80df15-52c6-4647-983b-4bb4888a2edf'),
(31, 'The folderlist form field type provides a drop down list of folders from a specfied directory. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on ', 'Folderlist', '{\"properties0\":{\"name\":\"type\",\"example\":\"folderlist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be folderlist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfolder\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a folder\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"directory\",\"example\":\"images\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the filesystem path to the directory containing the folders to be listed.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default folder name.\"},\"properties5\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of folders selected for inclusion in the drop-down list. If omitted, all folders in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties7\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude folders from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties9\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of folders from a specified directory.', '', 1, 4, '', 2, 'd3ab2ae4-9370-4497-ae6d-dee2e0b74b7a'),
(32, 'Note: When using the file input type you should always add the attribute enctype=\"multipart/form-data\" to your form tag. Otherwise, the uploaded files will not be attached correctly.\r\n\r\nNote 2: You can put a soft limit file size by adding a hidden field with name=\"MAX_FILE_SIZE\" and value the maximum allowed bytes which is handled by php, but you must also handle it in your code with or without it.', 'File', '{\"properties0\":{\"name\":\"type\",\"example\":\"file\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be file.\"},\"properties1\":{\"name\":\"name\",\"example\":\"myfilevalue\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Enter some text\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Choose an image from your computer with maximum 100KB\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value, but doesn\'t mean much for a file.\"},\"properties5\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the file box in characters.\"},\"properties6\":{\"name\":\"accept\",\"example\":\"image\\/*\",\"adjustable\":\"1\",\"description\":\"(optional) Tells the browser what MIME types your form will allow to be uploaded.\"},\"properties7\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties8\":{\"name\":\"labelclass\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) adds a CSS class for form field\'s label; for Joomla 2.5.4+\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute\"},\"properties10\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"},\"properties11\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) For Joomla form validating it to be filled in\"},\"properties12\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Whether to Joomla validate the field according to rules\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides an input field for files', '', 1, 9, '', 3, '6da71c1e-119c-4e0d-a309-f3e52ecfa1d1'),
(33, 'The menuitem form field type provides a drop down grouped list of the available menu items from your Joomla site.', 'menuitem', '{\"properties0\":{\"name\":\"type\",\"example\":\"menuitem\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be menuitem.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mymenuitem\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select a menu item\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default menu item. Note that this is the ItemID number of the menu item.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"published\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) determines whether all menu items are listed or only published menu items. If state is \'0\' then all menu items will be listed. If state is \'1\' then only published menu items will be listed.\"},\"properties6\":{\"name\":\"filter\",\"example\":\"int\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'provides a drop down list of the available menu items from your Joomla site.', '', 1, 5, '', 4, 'f183b0e2-017f-48bd-8dba-d332ce1b8d9e'),
(34, 'Remember all views already have [accesslevel] added by default, only add this if you need more custom access selection! Provides a dropdown list of accesslevel options with the current option selected.', 'Accesslevel', '{\"properties0\":{\"name\":\"type\",\"example\":\"accesslevel\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be accesslevel\"},\"properties1\":{\"name\":\"name\",\"example\":\"accesstwo\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field. This must match the name of the query results column that contains the values that will be shown to the user in the drop-down list, unless a different name is specified in the value_field attribute. \"},\"properties2\":{\"name\":\"label\",\"example\":\"Access Two\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Select an access level to this concept.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"class\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field.\"},\"properties5\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the field required true if yes.\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) If set to multiple then allows more than one usergroup to be selected.\"},\"properties7\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'List of accesslevels', '', 1, 4, '', 5, '913ed2ce-836c-48e8-97af-e482441f47df'),
(35, 'Provides a form with rows of fields that you specify. As many options can be added as desired. Note this form field has a jQuery based javascript file as a dependency.', 'Subform', '{\"properties0\":{\"name\":\"type\",\"example\":\"subform\",\"description\":\"(mandatory) must be subform.\"},\"properties1\":{\"name\":\"name\",\"example\":\"options\",\"adjustable\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter\"},\"properties2\":{\"name\":\"label\",\"example\":\"The Option List\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"layout\",\"example\":\"joomla.form.field.subform.repeatable-table\",\"adjustable\":\"1\",\"description\":\"(mandatory) The layout for the repeatable table.\"},\"properties4\":{\"name\":\"component\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) To change the component where it should search for layout\"},\"properties5\":{\"name\":\"client\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Function to initialise the application clientFrontend: site or 0Backend: admin or 1\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"true\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) The rows to be multiple.\"},\"properties7\":{\"name\":\"buttons\",\"example\":\"add,remove,move\",\"adjustable\":\"1\",\"description\":\"(optional) Which buttons to show if multiple mode is true.Options: add,remove,move\"},\"properties8\":{\"name\":\"fields\",\"example\":\"1,2,3\",\"adjustable\":\"1\",\"description\":\"(mandatory) The fields to add to the modal. All fields must first be created in component builder as a field before you can add them here, since you must use the id of the field. Separate the field ids with commas. Do not add custom fields that are not also used in this component.\"},\"properties9\":{\"name\":\"formsource\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) you can add a path to a xml file containing the fields.\"},\"properties10\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) description text for the form field. Displays at the top of the modal with the name as well as in the usual position in the form\"},\"properties11\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The default value for the form field if the field is left empty. Note this has to be a json string compatible with the contents of the form field.\"},\"properties12\":{\"name\":\"icon\",\"example\":\"list\",\"adjustable\":\"1\",\"description\":\"(optional) The icon to show on the select button (is prefixed with \\\"icon-\\\").\"},\"properties13\":{\"name\":\"max\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) The maximum number of rows of fields allowed (by default 999 to be effectively infinite)\"},\"properties14\":{\"name\":\"min\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The minimum number of rows of fields required\"},\"properties15\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Use only if you would like to save raw data, since the default is best.\"},\"properties16\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Allows form fields which can have as many options as the user desires.', '', 1, 14, '', 6, '7139f2c8-a70a-46a6-bbe3-4eefe54ca515'),
(36, 'Provides an input field for an email address.', 'Email', '{\"properties0\":{\"name\":\"type\",\"example\":\"email\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be email.\"},\"properties1\":{\"name\":\"name\",\"example\":\"email\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Email Address\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"size\",\"example\":\"10\",\"adjustable\":\"1\",\"description\":\"(optional) is the width of the text box in characters. If omitted the width is determined by the browser. The value of size does not limit the number of characters that may be entered.\"},\"properties4\":{\"name\":\"maxlength\",\"example\":\"50\",\"adjustable\":\"1\",\"description\":\"(optional) limits the number of characters that may be entered.\"},\"properties5\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties6\":{\"name\":\"description\",\"example\":\"Enter some description\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties7\":{\"name\":\"class\",\"example\":\"inputbox\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'text_area\'.\"},\"properties8\":{\"name\":\"readonly\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value\"},\"properties9\":{\"name\":\"disabled\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field cannot be changed and will automatically inherit the default value - it will also not submit\"},\"properties10\":{\"name\":\"required\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties11\":{\"name\":\"filter\",\"example\":\"STRING\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties12\":{\"name\":\"validate\",\"example\":\"email\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties13\":{\"name\":\"unique\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) Used in validation, to check if we should test for uniqueness, to insure that this email does not already belong to another user. Check line 99 in \\/libraries\\/src\\/Form\\/Rule\\/EmailRule.php\"},\"properties14\":{\"name\":\"field\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) used in validation of \\\"equals\\\" to link the field to match.\"},\"properties15\":{\"name\":\"message\",\"example\":\"Error! Please add some text here.\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The error message that will be displayed instead of the default message.\"},\"properties16\":{\"name\":\"hint\",\"example\":\"your@email.com\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) The placeholder to display inside the text box.\"},\"properties17\":{\"name\":\"autocomplete\",\"example\":\"on\",\"adjustable\":\"1\",\"description\":\"(optional) The autocomplete state for the form field.  If \'off\' element will not be automatically completed by browser.\"},\"properties18\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties19\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'Email form field type', '', 1, 7, '', 7, '35948af5-9e79-4454-8dfa-682ee4fdf650'),
(37, 'Provides a dropdown list of plugin options from the folder.', 'Plugins', '{\"properties0\":{\"name\":\"type\",\"example\":\"plugins\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be editors.\"},\"properties1\":{\"name\":\"name\",\"example\":\"editor\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an editor\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) (not translatable) is the default value.\"},\"properties4\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the label.\"},\"properties5\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties6\":{\"name\":\"folder\",\"example\":\"editors\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) editors or captcha.\"},\"properties7\":{\"name\":\"filter\",\"example\":\"cmd\",\"adjustable\":\"1\",\"description\":\"(optional) allow the system to save certain html tags or raw data.\"},\"properties8\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a dropdown list of plugin options from the folder.', '', 1, 8, '', 8, '37fa4e1d-b7ca-4a8f-aa4b-d8085c135233'),
(38, 'Provides the use of a captcha plugin.', 'Captcha', '{\"properties0\":{\"name\":\"type\",\"example\":\"captcha\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be captcha.\"},\"properties3\":{\"name\":\"name\",\"example\":\"captcha\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"validate\",\"example\":\"captcha\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be captcha.\"},\"properties1\":{\"name\":\"label\",\"example\":\"Captcha\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties4\":{\"name\":\"description\",\"example\":\"We do not like spam, please show us you are human\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties5\":{\"name\":\"namespace\",\"example\":\"componentbuilder\",\"description\":\"(optional) the component name seems to work\"}}', 'Captcha robot check.', '', 1, 2, '', 9, '206fdad4-14d0-45f1-9c84-3d09abf48a39'),
(39, 'The list form field type provides a drop down list or a list box of custom-defined entries. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Groupedlist', '{\"properties0\":{\"name\":\"type\",\"example\":\"groupedlist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be groupedlist.\"},\"properties1\":{\"name\":\"name\",\"example\":\"mygrouplist\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Select an option\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"list_class\",\"adjustable\":\"1\",\"description\":\"(optional) is a CSS class name for the HTML form field. If omitted this will default to \'inputbox\'.\"},\"properties6\":{\"name\":\"multiple\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional) is whether multiple items can be selected at the same time (true or false).\"},\"properties7\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) filter options\"},\"properties8\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties9\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties10\":{\"name\":\"option\",\"example\":\"Group Name@@1,1|Option 1|1,2|Option 2|1,Group Name 2@@2,3|Option 3|2\",\"adjustable\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties11\":{\"name\":\"useglobal\",\"example\":\"false\",\"adjustable\":\"1\",\"description\":\"(optional)  if set to true, it will show the value that is set in the global configuration if found in the database.\"},\"properties12\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) is the default list item value.\"},\"properties13\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties14\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'provides a drop down list of custom-defined entries.', '', 1, 2, '', 10, '088d47c0-b058-4894-b92e-dcf1b9d5a722'),
(40, 'The modulelayout form field type provides a drop down list of all available layouts for a module, grouped by core and template. If the parameter has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.', 'Modulelayout', '{\"properties0\":{\"name\":\"type\",\"example\":\"modulelayout\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be modulelayout.\"},\"properties1\":{\"name\":\"name\",\"example\":\"layout\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Layout\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"Module layout\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties4\":{\"name\":\"module\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a specific module name (e.g. mod_articles_category).\"},\"properties5\":{\"name\":\"client_id\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional). If 0 (site): Forces searching for layouts only in directories \\/modules\\/[MODULENAME]\\/tmpl\\/ and all \\/templates\\/[TEMPLATENAME]\\/html\\/[MODULENAME]\\/. If 1 (administrator): Forces searching for layouts only in directories \\/administrator\\/modules\\/[MODULENAME]\\/tmpl\\/ and all \\/administrator\\/templates\\/[TEMPLATENAME]\\/html\\/[MODULENAME]\\/.\\r\\n\"},\"properties6\":{\"name\":\"template\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a template name (e.g. protostar or isis). If set forces searching for module template overrides only in this template.\"}}', 'modulelayout', '', 1, 1, '', 11, '7520c8f4-543d-4c7a-8e4f-e2da71c3b1cd'),
(43, 'Provides a combobox field, which offers a list like the List Form Field Type, but additionally allows free text.', 'Combo', '{\"properties0\":{\"name\":\"type\",\"example\":\"combo\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be combo.\"},\"properties1\":{\"name\":\"name\",\"example\":\"type\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the parameter.\"},\"properties2\":{\"name\":\"label\",\"example\":\"Type\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties3\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) tooltip for the form field.\"},\"properties4\":{\"name\":\"message\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as error on validation.\"},\"properties5\":{\"name\":\"class\",\"example\":\"combobox\",\"adjustable\":\"1\",\"description\":\"(optional) specify your own classes for additonal markup, defaults to \\\"combobox\\\".\"},\"properties6\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) filter options\"},\"properties7\":{\"name\":\"required\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The field must be filled before submitting the form.\"},\"properties8\":{\"name\":\"validate\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) The validation method for the form field.  This value will determine which method is used to validate the value for a field.\"},\"properties9\":{\"name\":\"option\",\"example\":\"0|Option 1,1|Option 2,2|Option 1\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) set the options of this radio. Separate options with commas and use the pipe symbol to separate value from text.\"},\"properties10\":{\"name\":\"default\",\"example\":\"0\",\"adjustable\":\"1\",\"description\":\"(optional) is the default list item value.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) Allows you to hide the field based on the value(s) of another field; for Joomla 3.2.4+ https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"},\"properties12\":{\"name\":\"onchange\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) HTML equivalent attribute (javascript use)\"}}', 'Provides a combobox list field, allows free text.', '', 1, 2, '', 13, '2c8b128f-7da2-4f55-b1d7-3613f902f590'),
(44, 'The imagelist form field type provides a drop down list of image files in a specified directory. Only files with .png, .gif, .jpg, .bmp, .ico extensions are listed. If the field has a saved value this is selected when the page is first loaded. If not, the default value (if any) is selected.\r\n\r\nBy default, the first item on the list is \'- Do not use -\' (which is translatable) and is given the value \'-1\' and this is followed by \'- Use default -\' (also translatable) given the value \'0\'.', 'Imagelist', '{\"properties0\":{\"name\":\"type\",\"example\":\"imagelist\",\"mandatory\":\"1\",\"description\":\"(mandatory) must be imagelist.\"},\"properties6\":{\"name\":\"name\",\"example\":\"myimagelist\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"description\":\"(mandatory) is the unique name of the field.\"},\"properties5\":{\"name\":\"label\",\"example\":\"Select an image\",\"adjustable\":\"1\",\"mandatory\":\"1\",\"translatable\":\"1\",\"description\":\"(mandatory) (translatable) is the descriptive title of the field.\"},\"properties4\":{\"name\":\"directory\",\"example\":\"images\\/stories\",\"adjustable\":\"1\",\"description\":\"(optional) is the filesystem path to the directory containing the image files to be listed. If omitted the directory given by JPATH_ROOT is assumed.\"},\"properties3\":{\"name\":\"default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is the default image file name.\"},\"properties2\":{\"name\":\"description\",\"example\":\"\",\"adjustable\":\"1\",\"translatable\":\"1\",\"description\":\"(optional) (translatable) is text that will be shown as a tooltip when the user moves the mouse over the drop-down box.\"},\"properties1\":{\"name\":\"filter\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to filter the list of image files selected for inclusion in the drop-down list. If omitted, all image files in the directory are included. The filter argument expression is applied before the exclude argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties9\":{\"name\":\"exclude\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a regular expression string which is used to exclude image files from the list. The exclude argument expression is applied after the filter argument expression. For information on constructing regular expressions see Regular expressions in parameter arguments.\"},\"properties8\":{\"name\":\"stripext\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true then file name extensions will be stripped from the image file names listed. Also note that the file name will be saved without the extension too.\"},\"properties7\":{\"name\":\"hide_none\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Do not use -\' item is omitted from the drop-down list.\"},\"properties10\":{\"name\":\"hide_default\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) is a Boolean argument. If true, the \'- Use default -\' item is omitted from the drop-down list.\"},\"properties11\":{\"name\":\"showon\",\"example\":\"\",\"adjustable\":\"1\",\"description\":\"(optional) show this field on the bases of the value in another field. https:\\/\\/joomla.stackexchange.com\\/a\\/17682\\/2166\"}}', 'Provides a drop down list of image files from a specified directory.', '', 1, 1, '', 14, '72680e92-2859-49c6-ad92-c2329c52f9f8');

--
-- Dumping data for table `#__componentbuilder_language`
--

INSERT INTO `#__componentbuilder_language` (`id`, `langtag`, `name`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(1, 'af-ZA', 'Afrikaans', '', 1, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(2, 'sq-AL', 'Albanian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(3, 'ar-AA', 'Arabic Unitag', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(4, 'hy-AM', 'Armenian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(5, 'id-ID', 'Indonesian, Bahasa Indonesia', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(6, 'eu-ES', 'Basque', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(7, 'be-BY', 'Belarusian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(8, 'bn-BD', 'Bengali, Bangladesh', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(9, 'bs-BA', 'Bosnian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(10, 'bg-BG', 'Bulgarian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(11, 'ca-ES', 'Catalan', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(12, 'zh-CN', 'Chinese, Simplified', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(13, 'zh-TW', 'Chinese, Traditional', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(14, 'hr-HR', 'Croatian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(15, 'cs-CZ', 'Czech', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(16, 'da-DK', 'Danish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(17, 'prs-AF', 'Dari Persian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(18, 'nl-NL', 'Dutch', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(19, 'dz-BT', 'Dzongkha', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(20, 'en-AU', 'English, Australia', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(21, 'en-CA', 'English, Canada', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(22, 'en-GB', 'English GB', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(23, 'en-NZ', 'English, New Zealand', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(24, 'en-US', 'English, USA', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(25, 'eo-XX', 'Esperanto', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(26, 'et-EE', 'Estonian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(27, 'fi-FI', 'Finnish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(28, 'nl-BE', 'Flemish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(29, 'fr-FR', 'French', '', 1, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(30, 'fr-CA', 'French, Canada', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(31, 'gl-ES', 'Galician', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(32, 'ka-GE', 'Georgian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(33, 'de-AT', 'German, Austria', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(34, 'de-CH', 'German, Switzerland', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(35, 'de-DE', 'German', '', 1, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(36, 'de-LI', 'German, Liechtenstein', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(37, 'de-LU', 'German, Luxembourg', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(38, 'el-GR', 'Greek', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(39, 'he-IL', 'Hebrew', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(40, 'hi-IN', 'Hindi, India', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(41, 'hu-HU', 'Hungarian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(42, 'ga-IE', 'Irish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(43, 'it-IT', 'Italian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(44, 'ja-JP', 'Japanese', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(45, 'km-KH', 'Khmer', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(46, 'ko-KR', 'Korean', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(47, 'lv-LV', 'Latvian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(48, 'mk-MK', 'Macedonian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(49, 'ms-MY', 'Malay', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(50, 'srp-ME', 'Montenegrin', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(51, 'nb-NO', 'Norwegian Bokmål', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(52, 'nn-NO', 'Norwegian Nynorsk', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(53, 'fa-IR', 'Persian Farsi', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(54, 'pl-PL', 'Polish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(55, 'pt-PT', 'Portuguese, Portugal', '', 1, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(56, 'pt-BR', 'Portuguese, Brazil', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(57, 'ro-RO', 'Romanian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(58, 'ru-RU', 'Russian', '', 1, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 6, '', 1),
(59, 'sr-RS', 'Serbian, Cyrillic', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(60, 'sr-YU', 'Serbian, Latin', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(61, 'si-LK', 'Sinhala', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(62, 'sk-SK', 'Slovak', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(63, 'sl-SI', 'Slovenian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(64, 'es-ES', 'Spanish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(65, 'es-CO', 'Spanish, Colombia', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(66, 'sw-KE', 'Swahili', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(67, 'sv-SE', 'Swedish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(68, 'sy-IQ', 'Syriac, East', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(69, 'ta-IN', 'Tamil, India', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(70, 'th-TH', 'Thai', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(71, 'tr-TR', 'Turkish', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(72, 'tk-TM', 'Turkmen', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(73, 'uk-UA', 'Ukrainian', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(74, 'ug-CN', 'Uyghur', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(75, 'vi-VN', 'Vietnamese', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(76, 'cy-GB', 'Welsh', '', 2, '2018-04-19 13:43:44', '2023-12-26 07:40:20', 5, '', 1),
(77, 'lt-LT', 'Lithuanian', '', 2, '2018-09-14 10:39:11', '2023-12-26 07:40:20', 4, '', 2),
(78, 'kk-KZ', 'Kazakh', '', 2, '2020-03-19 13:41:00', '2023-12-26 07:40:20', 3, '', 3);

--
-- Dumping data for table `#__componentbuilder_repository`
--

INSERT INTO `#__componentbuilder_repository` (`id`, `system_name`, `organisation`, `repository`, `target`, `type`, `base`, `guid`, `read_branch`, `access`, `ordering`, `published`, `modified`, `created`, `params`) VALUES
(1, 'Super Powers', 'joomla', 'super-powers', 1, 1, 'https://git.vdm.dev', '1a1b6f3d-f16c-431a-b270-7a8a80cc7f56', 'master', 1, 1, 1, '2024-06-10 11:13:46', '2024-06-10 10:59:35', ''),
(2, 'JCB Compiler', 'joomla', 'jcb-compiler', 1, 1, 'https://git.vdm.dev', 'd12c7672-7b75-4a59-a5f3-c33f1a2f929b', 'master', 1, 2, 1, '2024-06-15 17:43:09', '2024-06-10 11:01:06', ''),
(3, 'JCB Packager', 'joomla', 'jcb-packager', 1, 1, 'https://git.vdm.dev', 'd8155014-5734-4fb5-9ccb-6bb33367ef78', 'master', 1, 3, 1, '2024-06-15 17:43:09', '2024-06-10 11:01:35', ''),
(4, 'PHP Seclib', 'joomla', 'phpseclib', 1, 1, 'https://git.vdm.dev', 'e63d916c-81c1-4a56-a73f-584174b36c87', 'master', 1, 4, 1, '2024-06-15 17:43:09', '2024-06-10 11:02:03', ''),
(5, 'JCB Search', 'joomla', 'search', 1, 1, 'https://git.vdm.dev', '6e57dc23-a17d-4937-bdbf-639ae1b8409f', 'master', 1, 5, 1, '2024-06-15 17:43:09', '2024-06-10 11:02:43', ''),
(6, 'Gitea', 'joomla', 'gitea', 1, 1, 'https://git.vdm.dev', 'a0cbfb8a-b427-48eb-b493-a02b34854019', 'master', 1, 6, 1, '2024-06-15 17:43:09', '2024-06-10 11:03:09', ''),
(7, 'Openai', 'joomla', 'openai', 1, 1, 'https://git.vdm.dev', 'c736a46f-0880-428a-8837-02627fdbd38d', 'master', 1, 7, 1, '2024-06-15 17:43:09', '2024-06-10 11:03:19', ''),
(8, 'Minify', 'joomla', 'minify', 1, 1, 'https://git.vdm.dev', '6c741f48-a192-4e17-a932-df552164cffb', 'master', 1, 8, 1, '2024-06-15 17:43:09', '2024-06-10 11:03:30', ''),
(9, 'psr', 'joomla', 'psr', 1, 1, 'https://git.vdm.dev', 'bfaa857a-df24-4d8c-97c3-1da4167a2bc8', 'master', 1, 9, 1, '2024-06-15 17:43:09', '2024-06-10 11:03:41', ''),
(10, 'fof', 'joomla', 'fof', 1, 1, 'https://git.vdm.dev', 'dd591247-1215-4faf-8a00-1f294768ba13', 'master', 1, 10, 1, '2024-06-15 17:43:09', '2024-06-10 11:03:47', ''),
(12, 'Joomla Powers', 'joomla', 'joomla-powers', 2, 1, 'https://git.vdm.dev', 'dfba58ef-f823-43d4-ab73-865fdaf09294', 'master', 1, 12, 1, '2024-07-16 22:05:16', '2024-07-08 14:07:31', '');

--
-- Dumping data for table `#__componentbuilder_help_document`
--

INSERT INTO `#__componentbuilder_help_document` (`id`, `admin_view`, `alias`, `article`, `content`, `groups`, `location`, `site_view`, `target`, `title`, `type`, `url`, `params`, `published`, `version`, `hits`, `ordering`) VALUES
(1, 'components', '2016-03-04-02-31-55', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p>\r\n<h3>Create</h3>\r\n<p>You can create a component by clicking on the\r\n    <button>New</button>button in the toolbar, this will open a window where you can add all the needed values to create a new component.</p>\r\n<h3>Edit</h3>\r\n<p>You can edit components in two ways.</p>\r\n<ul>\r\n    <li>You can click on the box next to the component name and then click on the\r\n        <button>Edit</button>button in the toolbar; this will open the component and if you have permission it will give you access to edit the values of a component.</li>\r\n    <li>You can simply click on the component name; this will open the component and if you have permission it will give you access to edit the values of a component.</li>\r\n</ul>\r\n<h3>Edit State</h3>\r\n<p>You can publish, unpublish, archive, and trash any component by clicking in the boxes next the component names and then click on the corresponding button of the task you want to perform. This will change the state of all the components you’ve selected.</p>\r\n<p>If you have trashed a component it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed components. To completely remove these components from your system do the following: first select all the components you want to permanently delete by clicking in the boxes next to the component names and then click on the\r\n    <button>Empty trash</button>button in the toolbar. This will permanently delete the components from the database. On the other hand if you would like to change the status of the component to publish, unpublish or archive, click in the boxes next to the component names and then click on the corresponding button of the task you want to perform. This will change the state of all the components you’ve selected.</p>\r\n<h3>Check-in</h3>\r\n<p>When another user on your Joomla website opens a component the system checks the component out to that user. A little lock will show up next to the component name. When you hover over the lock it will show to you who checked it out and when.</p>\r\n<p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p>\r\n<p>If this feature has not yet checked-in any of the components that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the component names and then click on the\r\n    <button>Check-in</button>button in the toolbar, or simply click on the little lock. This will then check in the component, which will mean that it removes the component from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p>\r\n<h3>Batch Feature</h3>\r\n<p>You can use the Batch feature to update or copy many components at once by clicking in the boxes next the component names and then click on the\r\n    <button>Batch</button>button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the\r\n    <button>Process</button>button. Once completed this batch feature will have either copied or updated all the components according to the task you selected.</p>\r\n<h3>Export & Import</h3>\r\n<p>The export and import feature is some of the most exciting features to the list view of components. With them you can update and create many components at once.</p>\r\n<h3>Export</h3>\r\n<p>The export option only exports the components selected. So to export all components you must change the limited number of components that are being loaded to \"All\". The box that limits the number of components being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the component records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the components. Next click on the\r\n    <button>Export Date</button>button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p>\r\n<h3>Import</h3>\r\n<p>The import option can be used to create components or update existing components. The way to update existing components is to use the same id as the component you want to update. Best way to do this is to first export the components you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new components via an import, simple leave the id field empty.</p>\r\n<p>So once you have your excel document ready you will again open the list view of components and click on the\r\n    <button>Import Data</button>button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p>\r\n<p>Once you have the file selected you can click on the\r\n    <button>Upload File</button> or\r\n    <button>Get File</button>button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p>\r\n<p>When the field to column relationship has correctly been mapped you can click on the\r\n    <button>continue</button>button at the bottom of the page. This should return you to the list view of components with a success message.</p>\r\n<h3>Debug</h3>\r\n<p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Components', 2, '', '', 1, 12, '', 1),
(2, 'admin_views', 'welcome-to-the-list-view-of-admin-views', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create an admin view by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new admin view.</p> <h3>Edit</h3> <p>You can edit admin views in two ways.</p> <ul> <li>You can click on the box next to the admin view name and then click on the <button>Edit</button> button in the toolbar; this will open the admin view and if you have permission it will give you access to edit the values of an admin view.</li> <li>You can simply click on the admin view name; this will open the admin view and if you have permission it will give you access to edit the values of an admin view.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any admin view by clicking in the boxes next the admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the admin views you’ve selected.</p> <p>If you have trashed an admin view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed admin views. To completely remove these admin views from your system do the following: first select all the admin views you want to permanently delete by clicking in the boxes next to the admin view names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the admin views from the database. On the other hand if you would like to change the status of the admin view to publish, unpublish or archive, click in the boxes next to the admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the admin views you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens an admin view the system checks the admin view out to that user. A little lock will show up next to the admin view name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the admin views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the admin view names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the admin view, which will mean that it removes the admin view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many admin views at once by clicking in the boxes next the admin view names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the admin views according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of admin views. With them you can update and create many admin views at once.</p> <h3>Export</h3> <p>The export option only exports the admin views selected. So to export all admin views you must change the limited number of admin views that are being loaded to \"All\". The box that limits the number of admin views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the admin view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the admin views. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create admin views or update existing admin views. The way to update existing admin views is to use the same id as the admin view you want to update. Best way to do this is to first export the admin views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new admin views via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of admin views and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of admin views with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Admin Views', 2, '', '', 1, 5, '', 2),
(3, 'custom_admin_views', 'welcome-to-the-list-view-of-custom-admin-views', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a custom admin view by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new custom admin view.</p> <h3>Edit</h3> <p>You can edit custom admin views in two ways.</p> <ul> <li>You can click on the box next to the custom admin view name and then click on the <button>Edit</button> button in the toolbar; this will open the custom admin view and if you have permission it will give you access to edit the values of a custom admin view.</li> <li>You can simply click on the custom admin view name; this will open the custom admin view and if you have permission it will give you access to edit the values of a custom admin view.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any custom admin view by clicking in the boxes next the custom admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the custom admin views you’ve selected.</p> <p>If you have trashed a custom admin view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed custom admin views. To completely remove these custom admin views from your system do the following: first select all the custom admin views you want to permanently delete by clicking in the boxes next to the custom admin view names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the custom admin views from the database. On the other hand if you would like to change the status of the custom admin view to publish, unpublish or archive, click in the boxes next to the custom admin view names and then click on the corresponding button of the task you want to perform. This will change the state of all the custom admin views you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a custom admin view the system checks the custom admin view out to that user. A little lock will show up next to the custom admin view name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the custom admin views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the custom admin view names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the custom admin view, which will mean that it removes the custom admin view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many custom admin views at once by clicking in the boxes next the custom admin view names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the custom admin views according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of custom admin views. With them you can update and create many custom admin views at once.</p> <h3>Export</h3> <p>The export option only exports the custom admin views selected. So to export all custom admin views you must change the limited number of custom admin views that are being loaded to \"All\". The box that limits the number of custom admin views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the custom admin view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the custom admin views. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create custom admin views or update existing custom admin views. The way to update existing custom admin views is to use the same id as the custom admin view you want to update. Best way to do this is to first export the custom admin views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new custom admin views via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of custom admin views and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of custom admin views with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Custom Admin Views', 2, '', '', 1, 4, '', 3),
(4, 'site_views', 'welcome-to-the-list-view-of-site-views', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a site view by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new site view.</p> <h3>Edit</h3> <p>You can edit site views in two ways.</p> <ul> <li>You can click on the box next to the site view name and then click on the <button>Edit</button> button in the toolbar; this will open the site view and if you have permission it will give you access to edit the values of a site view.</li> <li>You can simply click on the site view name; this will open the site view and if you have permission it will give you access to edit the values of a site view.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any site view by clicking in the boxes next the site view names and then click on the corresponding button of the task you want to perform. This will change the state of all the site views you’ve selected.</p> <p>If you have trashed a site view it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed site views. To completely remove these site views from your system do the following: first select all the site views you want to permanently delete by clicking in the boxes next to the site view names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the site views from the database. On the other hand if you would like to change the status of the site view to publish, unpublish or archive, click in the boxes next to the site view names and then click on the corresponding button of the task you want to perform. This will change the state of all the site views you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a site view the system checks the site view out to that user. A little lock will show up next to the site view name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the site views that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the site view names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the site view, which will mean that it removes the site view from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many site views at once by clicking in the boxes next the site view names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the site views according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of site views. With them you can update and create many site views at once.</p> <h3>Export</h3> <p>The export option only exports the site views selected. So to export all site views you must change the limited number of site views that are being loaded to \"All\". The box that limits the number of site views being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the site view records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the site views. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create site views or update existing site views. The way to update existing site views is to use the same id as the site view you want to update. Best way to do this is to first export the site views you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new site views via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of site views and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of site views with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Site Views', 2, '', '', 1, 3, '', 4),
(5, 'templates', 'welcome-to-the-list-view-of-templates', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a template by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new template.</p> <h3>Edit</h3> <p>You can edit templates in two ways.</p> <ul> <li>You can click on the box next to the template name and then click on the <button>Edit</button> button in the toolbar; this will open the template and if you have permission it will give you access to edit the values of a template.</li> <li>You can simply click on the template name; this will open the template and if you have permission it will give you access to edit the values of a template.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any template by clicking in the boxes next the template names and then click on the corresponding button of the task you want to perform. This will change the state of all the templates you’ve selected.</p> <p>If you have trashed a template it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed templates. To completely remove these templates from your system do the following: first select all the templates you want to permanently delete by clicking in the boxes next to the template names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the templates from the database. On the other hand if you would like to change the status of the template to publish, unpublish or archive, click in the boxes next to the template names and then click on the corresponding button of the task you want to perform. This will change the state of all the templates you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a template the system checks the template out to that user. A little lock will show up next to the template name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the templates that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the template names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the template, which will mean that it removes the template from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many templates at once by clicking in the boxes next the template names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the templates according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of templates. With them you can update and create many templates at once.</p> <h3>Export</h3> <p>The export option only exports the templates selected. So to export all templates you must change the limited number of templates that are being loaded to \"All\". The box that limits the number of templates being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the template records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the templates. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create templates or update existing templates. The way to update existing templates is to use the same id as the template you want to update. Best way to do this is to first export the templates you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new templates via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of templates and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of templates with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Templates', 2, '', '', 1, 4, '', 5),
(6, 'layouts', 'welcome-to-the-list-view-of-layouts', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a layout by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new layout.</p> <h3>Edit</h3> <p>You can edit layouts in two ways.</p> <ul> <li>You can click on the box next to the layout name and then click on the <button>Edit</button> button in the toolbar; this will open the layout and if you have permission it will give you access to edit the values of a layout.</li> <li>You can simply click on the layout name; this will open the layout and if you have permission it will give you access to edit the values of a layout.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any layout by clicking in the boxes next the layout names and then click on the corresponding button of the task you want to perform. This will change the state of all the layouts you’ve selected.</p> <p>If you have trashed a layout it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed layouts. To completely remove these layouts from your system do the following: first select all the layouts you want to permanently delete by clicking in the boxes next to the layout names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the layouts from the database. On the other hand if you would like to change the status of the layout to publish, unpublish or archive, click in the boxes next to the layout names and then click on the corresponding button of the task you want to perform. This will change the state of all the layouts you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a layout the system checks the layout out to that user. A little lock will show up next to the layout name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the layouts that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the layout names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the layout, which will mean that it removes the layout from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many layouts at once by clicking in the boxes next the layout names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the layouts according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of layouts. With them you can update and create many layouts at once.</p> <h3>Export</h3> <p>The export option only exports the layouts selected. So to export all layouts you must change the limited number of layouts that are being loaded to \"All\". The box that limits the number of layouts being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the layout records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the layouts. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create layouts or update existing layouts. The way to update existing layouts is to use the same id as the layout you want to update. Best way to do this is to first export the layouts you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new layouts via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of layouts and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of layouts with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Layouts', 2, '', '', 1, 3, '', 6),
(7, 'dynamic_gets', 'welcome-to-the-list-view-of-dynamic-gets', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a dynamic get by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new dynamic get.</p> <h3>Edit</h3> <p>You can edit dynamic gets in two ways.</p> <ul> <li>You can click on the box next to the dynamic get name and then click on the <button>Edit</button> button in the toolbar; this will open the dynamic get and if you have permission it will give you access to edit the values of a dynamic get.</li> <li>You can simply click on the dynamic get name; this will open the dynamic get and if you have permission it will give you access to edit the values of a dynamic get.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any dynamic get by clicking in the boxes next the dynamic get names and then click on the corresponding button of the task you want to perform. This will change the state of all the dynamic gets you’ve selected.</p> <p>If you have trashed a dynamic get it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed dynamic gets. To completely remove these dynamic gets from your system do the following: first select all the dynamic gets you want to permanently delete by clicking in the boxes next to the dynamic get names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the dynamic gets from the database. On the other hand if you would like to change the status of the dynamic get to publish, unpublish or archive, click in the boxes next to the dynamic get names and then click on the corresponding button of the task you want to perform. This will change the state of all the dynamic gets you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a dynamic get the system checks the dynamic get out to that user. A little lock will show up next to the dynamic get name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the dynamic gets that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the dynamic get names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the dynamic get, which will mean that it removes the dynamic get from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many dynamic gets at once by clicking in the boxes next the dynamic get names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the dynamic gets according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of dynamic gets. With them you can update and create many dynamic gets at once.</p> <h3>Export</h3> <p>The export option only exports the dynamic gets selected. So to export all dynamic gets you must change the limited number of dynamic gets that are being loaded to \"All\". The box that limits the number of dynamic gets being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the dynamic get records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the dynamic gets. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create dynamic gets or update existing dynamic gets. The way to update existing dynamic gets is to use the same id as the dynamic get you want to update. Best way to do this is to first export the dynamic gets you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new dynamic gets via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of dynamic gets and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of dynamic gets with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Dynamic Gets', 2, '', '', 1, 3, '', 7),
(8, 'snippets', 'welcome-to-the-list-view-of-snippets', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a snippet by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new snippet.</p> <h3>Edit</h3> <p>You can edit snippets in two ways.</p> <ul> <li>You can click on the box next to the snippet name and then click on the <button>Edit</button> button in the toolbar; this will open the snippet and if you have permission it will give you access to edit the values of a snippet.</li> <li>You can simply click on the snippet name; this will open the snippet and if you have permission it will give you access to edit the values of a snippet.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any snippet by clicking in the boxes next the snippet names and then click on the corresponding button of the task you want to perform. This will change the state of all the snippets you’ve selected.</p> <p>If you have trashed a snippet it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed snippets. To completely remove these snippets from your system do the following: first select all the snippets you want to permanently delete by clicking in the boxes next to the snippet names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the snippets from the database. On the other hand if you would like to change the status of the snippet to publish, unpublish or archive, click in the boxes next to the snippet names and then click on the corresponding button of the task you want to perform. This will change the state of all the snippets you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a snippet the system checks the snippet out to that user. A little lock will show up next to the snippet name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the snippets that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the snippet names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the snippet, which will mean that it removes the snippet from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many snippets at once by clicking in the boxes next the snippet names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the snippets according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of snippets. With them you can update and create many snippets at once.</p> <h3>Export</h3> <p>The export option only exports the snippets selected. So to export all snippets you must change the limited number of snippets that are being loaded to \"All\". The box that limits the number of snippets being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the snippet records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the snippets. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create snippets or update existing snippets. The way to update existing snippets is to use the same id as the snippet you want to update. Best way to do this is to first export the snippets you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new snippets via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of snippets and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of snippets with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Snippets', 2, '', '', 1, 3, '', 8),
(9, 'fields', 'welcome-to-the-list-view-of-fields', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a field by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new field.</p> <h3>Edit</h3> <p>You can edit fields in two ways.</p> <ul> <li>You can click on the box next to the field name and then click on the <button>Edit</button> button in the toolbar; this will open the field and if you have permission it will give you access to edit the values of a field.</li> <li>You can simply click on the field name; this will open the field and if you have permission it will give you access to edit the values of a field.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any field by clicking in the boxes next the field names and then click on the corresponding button of the task you want to perform. This will change the state of all the fields you’ve selected.</p> <p>If you have trashed a field it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed fields. To completely remove these fields from your system do the following: first select all the fields you want to permanently delete by clicking in the boxes next to the field names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the fields from the database. On the other hand if you would like to change the status of the field to publish, unpublish or archive, click in the boxes next to the field names and then click on the corresponding button of the task you want to perform. This will change the state of all the fields you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a field the system checks the field out to that user. A little lock will show up next to the field name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the fields that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the field names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the field, which will mean that it removes the field from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many fields at once by clicking in the boxes next the field names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the fields according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of fields. With them you can update and create many fields at once.</p> <h3>Export</h3> <p>The export option only exports the fields selected. So to export all fields you must change the limited number of fields that are being loaded to \"All\". The box that limits the number of fields being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the field records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the fields. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create fields or update existing fields. The way to update existing fields is to use the same id as the field you want to update. Best way to do this is to first export the fields you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new fields via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of fields and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of fields with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Fields', 2, '', '', 1, 3, '', 9),
(10, 'fieldtypes', 'welcome-to-the-list-view-of-fieldtypes', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a fieldtype by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new fieldtype.</p> <h3>Edit</h3> <p>You can edit fieldtypes in two ways.</p> <ul> <li>You can click on the box next to the fieldtype name and then click on the <button>Edit</button> button in the toolbar; this will open the fieldtype and if you have permission it will give you access to edit the values of a fieldtype.</li> <li>You can simply click on the fieldtype name; this will open the fieldtype and if you have permission it will give you access to edit the values of a fieldtype.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any fieldtype by clicking in the boxes next the fieldtype names and then click on the corresponding button of the task you want to perform. This will change the state of all the fieldtypes you’ve selected.</p> <p>If you have trashed a fieldtype it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed fieldtypes. To completely remove these fieldtypes from your system do the following: first select all the fieldtypes you want to permanently delete by clicking in the boxes next to the fieldtype names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the fieldtypes from the database. On the other hand if you would like to change the status of the fieldtype to publish, unpublish or archive, click in the boxes next to the fieldtype names and then click on the corresponding button of the task you want to perform. This will change the state of all the fieldtypes you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a fieldtype the system checks the fieldtype out to that user. A little lock will show up next to the fieldtype name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the fieldtypes that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the fieldtype names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the fieldtype, which will mean that it removes the fieldtype from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many fieldtypes at once by clicking in the boxes next the fieldtype names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the fieldtypes according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of fieldtypes. With them you can update and create many fieldtypes at once.</p> <h3>Export</h3> <p>The export option only exports the fieldtypes selected. So to export all fieldtypes you must change the limited number of fieldtypes that are being loaded to \"All\". The box that limits the number of fieldtypes being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the fieldtype records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the fieldtypes. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create fieldtypes or update existing fieldtypes. The way to update existing fieldtypes is to use the same id as the fieldtype you want to update. Best way to do this is to first export the fieldtypes you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new fieldtypes via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of fieldtypes and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of fieldtypes with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Fieldtypes', 2, '', '', 1, 3, '', 10),
(11, 'help_documents', 'welcome-to-the-list-view-of-help-documents', '', '<p>Here as in all Joomla backend list views you can perform all the common tasks, and more.</p> <h3>Create</h3> <p>You can create a help document by clicking on the <button>New</button> button in the toolbar, this will open a window where you can add all the needed values to create a new help document.</p> <h3>Edit</h3> <p>You can edit help documents in two ways.</p> <ul> <li>You can click on the box next to the help document name and then click on the <button>Edit</button> button in the toolbar; this will open the help document and if you have permission it will give you access to edit the values of a help document.</li> <li>You can simply click on the help document name; this will open the help document and if you have permission it will give you access to edit the values of a help document.</li> </ul> <h3>Edit State</h3> <p>You can publish, unpublish, archive, and trash any help document by clicking in the boxes next the help document names and then click on the corresponding button of the task you want to perform. This will change the state of all the help documents you’ve selected.</p> <p>If you have trashed a help document it is in the trash and can still be found in the database. To view items that are still in the trash change the “- Select Status –“ filter to Trashed. Here you will see the list of trashed help documents. To completely remove these help documents from your system do the following: first select all the help documents you want to permanently delete by clicking in the boxes next to the help document names and then click on the <button>Empty trash</button> button in the toolbar. This will permanently delete the help documents from the database. On the other hand if you would like to change the status of the help document to publish, unpublish or archive, click in the boxes next to the help document names and then click on the corresponding button of the task you want to perform. This will change the state of all the help documents you’ve selected.</p> <h3>Check-in</h3> <p>When another user on your Joomla website opens a help document the system checks the help document out to that user. A little lock will show up next to the help document name. When you hover over the lock it will show to you who checked it out and when.</p> <p>Component builder adds a nice feature to all its components that is called the auto check-in feature. This feature has a time setting that you can update in the component\'s global settings.</p> <p>If this feature has not yet checked-in any of the help documents that you as the administrator wants to open you can force a check-in by clicking in the boxes next to the help document names and then click on the <button>Check-in</button> button in the toolbar, or simply click on the little lock. This will then check in the help document, which will mean that it removes the help document from the user who checked it out before you. Remember that they will lose all changes they have made if they have not yet clicked save. This can cause very unpleasant circumstances, so only use this feature if you are absolutely sure you know what you are doing.</p> <h3>Batch Feature</h3> <p>You can use the Batch feature to update or copy many help documents at once by clicking in the boxes next the help document names and then click on the <button>Batch</button> button in the toolbar. This will open a popup window with multiple dropdown options of fields you can change with the batch feature. You can then select update or copy depending of your desired task and finally click on the <button>Process</button> button. Once completed this batch feature will have either copied or updated all the help documents according to the task you selected.</p> <h3>Export & Import</h3> <p>The export and import feature is some of the most exciting features to the list view of help documents. With them you can update and create many help documents at once.</p> <h3>Export</h3> <p>The export option only exports the help documents selected. So to export all help documents you must change the limited number of help documents that are being loaded to \"All\". The box that limits the number of help documents being loaded is found on the right top corner of the page. Simply change it from the number to “All” and the page should now reload with all the help document records from the database, excluding those in trash. If you want those also to load you must change the “- Select Status –“ filter to “All” as well. Now you can click on the tick box at the very top of the table. This should select all the help documents. Next click on the <button>Export Date</button> button in the toolbar. This should open a download window and you can select to save the excel file to your computer.</p> <h3>Import</h3> <p>The import option can be used to create help documents or update existing help documents. The way to update existing help documents is to use the same id as the help document you want to update. Best way to do this is to first export the help documents you want to update and then make the changes you have in mind in the excel document without removing or changing the id. To instead create new help documents via an import, simple leave the id field empty.</p> <p>So once you have your excel document ready you will again open the list view of help documents and click on the <button>Import Data</button> button in the toolbar. This will open a page where you can select the excel file on your computer as an upload, or on the server in a directory, or at any direct url to the excel document.</p> <p>Once you have the file selected you can click on the <button>Upload File</button> or <button>Get File</button> button depending on the method you have chosen. When file has successfully been uploaded or retrieved a new window will open where you can map the excel document headers of each column to the field names used in the database. Usually if you’re using an exported version of the excel document this mapping will be done for you, yet if you have changed any of the header names you may need to set these field relationships manually. There is an option to ignore a column in the case when you want to leave a field totally unchanged.</p> <p>When the field to column relationship has correctly been mapped you can click on the <button>continue</button> button at the bottom of the page. This should return you to the list view of help documents with a success message.</p> <h3>Debug</h3> <p>In the event that any of the above features did not work as expected, please read the error message carefully since it should usually give you enough information to why your request could not be processed. Subsequently if you are still not able to perform the request after making all needed corrections according to the error messages, then please contact your system administrator.</p>', '\"\"', 1, '', 2, 'Welcome to the List view of Help Documents', 2, '', '', 1, 3, '', 11);

--
-- Dumping data for table `#__componentbuilder_admin_fields`
--

INSERT INTO `#__componentbuilder_admin_fields` (`id`, `addfields`, `admin_view`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(111, '{\"0\":{\"field\":\"84\",\"list\":\"1\",\"order_list\":\"2\",\"sort\":\"1\",\"search\":\"1\",\"tab\":\"1\",\"alignment\":\"3\",\"order_edit\":\"1\"},\"1\":{\"field\":\"199\",\"list\":\"1\",\"order_list\":\"1\",\"title\":\"1\",\"sort\":\"1\",\"search\":\"1\",\"link\":\"1\",\"tab\":\"1\",\"alignment\":\"4\",\"order_edit\":\"1\"},\"2\":{\"field\":\"23\",\"list\":\"\",\"order_list\":\"0\",\"alias\":\"1\",\"search\":\"1\",\"tab\":\"1\",\"alignment\":\"4\",\"order_edit\":\"2\"},\"3\":{\"field\":\"203\",\"list\":\"2\",\"order_list\":\"0\",\"tab\":\"1\",\"alignment\":\"5\",\"order_edit\":\"1\"},\"4\":{\"field\":\"682\",\"list\":\"\",\"order_list\":\"0\",\"sort\":\"1\",\"search\":\"1\",\"filter\":\"1\",\"tab\":\"2\",\"alignment\":\"1\",\"order_edit\":\"1\"},\"5\":{\"field\":\"100\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"1\"},\"6\":{\"field\":\"196\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"2\"},\"7\":{\"field\":\"1011\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"3\"},\"8\":{\"field\":\"158\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"4\"},\"9\":{\"field\":\"280\",\"list\":\"\",\"order_list\":\"0\",\"tab\":\"2\",\"alignment\":\"2\",\"order_edit\":\"5\"}}', 109, 1, '2017-10-12 19:52:03', '2019-01-28 16:27:19', 7, '', '', '');

--
-- Dumping data for table `#__componentbuilder_admin_fields_conditions`
--

INSERT INTO `#__componentbuilder_admin_fields_conditions` (`id`, `addconditions`, `admin_view`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(111, '{\"addconditions0\":{\"target_field\":[\"1011\",\"100\",\"158\",\"196\",\"280\"],\"target_behavior\":\"1\",\"target_relation\":\"0\",\"match_field\":\"682\",\"match_behavior\":\"1\",\"match_options\":\"1|Yes\"}}', 109, 1, '2017-10-12 21:36:00', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_admin_views`
--

INSERT INTO `#__componentbuilder_component_admin_views` (`id`, `addadmin_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '{\"addadmin_views0\":{\"adminview\":\"109\",\"icomoon\":\"eye-open\",\"mainmenu\":\"1\",\"dashboard_add\":\"1\",\"dashboard_list\":\"1\",\"submenu\":\"1\",\"checkin\":\"1\",\"history\":\"1\",\"joomla_fields\":\"1\",\"metadata\":\"1\",\"access\":\"1\",\"port\":\"1\",\"filter\":\"2\",\"edit_create_site_view\":\"1\",\"order\":\"1\"}}', 25, 1, '2017-10-28 03:56:26', '2021-02-08 10:32:04', 7, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_site_views`
--

INSERT INTO `#__componentbuilder_component_site_views` (`id`, `addsite_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '{\"addsite_views0\":{\"siteview\":\"23\",\"menu\":\"1\",\"metadata\":\"1\",\"default_view\":\"1\",\"access\":\"1\",\"public_access\":\"1\"},\"addsite_views1\":{\"siteview\":\"25\",\"metadata\":\"1\",\"access\":\"1\"}}', 25, 1, '2017-10-28 03:56:26', '2020-02-27 21:32:04', 4, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_custom_admin_views`
--

INSERT INTO `#__componentbuilder_component_custom_admin_views` (`id`, `addcustom_admin_views`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_updates`
--

INSERT INTO `#__componentbuilder_component_updates` (`id`, `joomla_component`, `version_update`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, 25, '{\"version_update0\":{\"version\":\"2.0.0\",\"mysql\":\"ALTER TABLE `#__demo_look` ENGINE = InnoDB;\\r\\n\\r\\nALTER TABLE `#__demo_look` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.0.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update1\":{\"version\":\"2.0.2\",\"mysql\":\"ALTER TABLE `#__demo_look` CHANGE `image` `image` VARCHAR(255) NOT NULL DEFAULT \'\';\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.2.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update2\":{\"version\":\"2.0.3\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.0.3.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"},\"version_update3\":{\"version\":\"2.1.0\",\"mysql\":\"\",\"url\":\"https:\\/\\/git.vdm.dev\\/joomla\\/Demo-Component\\/archive\\/v2.1.0.zip\",\"update_server_adv\":\"0\",\"update_server_type\":\"component\",\"update_element\":\"\",\"update_state\":\"stable\",\"update_target_version\":\"3.*\",\"change_log\":\"\",\"update_client\":\"site\"}}', 1, '2017-10-28 03:56:26', '2022-05-27 05:23:46', 9, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_mysql_tweaks`
--

INSERT INTO `#__componentbuilder_component_mysql_tweaks` (`id`, `joomla_component`, `sql_tweak`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_custom_admin_menus`
--

INSERT INTO `#__componentbuilder_component_custom_admin_menus` (`id`, `addcustommenus`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_config`
--

INSERT INTO `#__componentbuilder_component_config` (`id`, `addconfig`, `joomla_component`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '', 25, 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_dashboard`
--

INSERT INTO `#__componentbuilder_component_dashboard` (`id`, `dashboard_tab`, `joomla_component`, `php_dashboard_methods`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `params`) VALUES
(27, '', 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_files_folders`
--

INSERT INTO `#__componentbuilder_component_files_folders` (`id`, `addfiles`, `addfolders`, `joomla_component`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `addfilesfullpath`, `addfoldersfullpath`) VALUES
(27, '', '', 25, '', 1, '2017-10-28 03:56:26', '0000-00-00 00:00:00', 2, '', '', '', '');

--
-- Dumping data for table `#__componentbuilder_component_placeholders`
--

INSERT INTO `#__componentbuilder_component_placeholders` (`id`, `addplaceholders`, `joomla_component`, `params`, `published`, `created`, `modified`) VALUES
(43, '{\"addplaceholders0\":{\"target\":\"[[[upload_max_filesize]]]\",\"value\":\"7M\"},\"addplaceholders1\":{\"target\":\"[[[post_max_size]]]\",\"value\":\"6M\"},\"addplaceholders2\":{\"target\":\"[[[max_execution_time]]]\",\"value\":\"10\"},\"addplaceholders3\":{\"target\":\"[[[max_input_vars]]]\",\"value\":\"1000\"},\"addplaceholders4\":{\"target\":\"[[[max_input_time]]]\",\"value\":\"10\"},\"addplaceholders5\":{\"target\":\"[[[memory_limit]]]\",\"value\":\"16M\"},\"addplaceholders6\":{\"target\":\"[[[environment_wiki_url]]]\",\"value\":\"#\"}}', 25, '', 1, '2024-07-27 13:02:05', '2024-07-27 20:26:43');

--
-- Dumping data for table `#__componentbuilder_snippet_type`
--

INSERT INTO `#__componentbuilder_snippet_type` (`id`, `name`, `description`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(1, 'Layout', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 1),
(2, 'Navigations', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 2),
(3, 'Elements', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 3),
(4, 'Common', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 4),
(5, 'JavaScript', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 5),
(6, 'Charts', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 6),
(7, 'Alerts', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 7),
(8, 'Badges', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 8),
(9, 'Breadcrumbs', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 9),
(10, 'Buttons', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 10),
(11, 'Button Groups', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 11),
(12, 'Button Modifiers', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 12),
(13, 'Cards', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 13),
(14, 'Carousel', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 14),
(15, 'Collapse', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 15),
(16, 'Dropdowns', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 16),
(17, 'Forms', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 17),
(18, 'Form Input Groups', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 18),
(19, 'Custom Forms', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 19),
(20, 'Grid', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 20),
(21, 'Images', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 21),
(22, 'Jumbotron', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 22),
(23, 'List Group', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 23),
(24, 'Media Objects', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 24),
(25, 'Modal', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 25),
(26, 'Navs', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 26),
(27, 'Navbar', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 27),
(28, 'Pagination', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 28),
(29, 'Popover', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 29),
(30, 'Progress', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 30),
(31, 'Scrollspy', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 31),
(32, 'Tables', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 32),
(33, 'Tooltips', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 33),
(34, 'Typography', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 34),
(35, 'Utility: Borders', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 35),
(36, 'Utility: Colors', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 36),
(37, 'Utility: Display', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 37),
(38, 'Utility: Flexbox', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 38),
(39, 'Utility: Misc', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 39),
(40, 'Utility: Positioning', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 40),
(41, 'Utility: Sizing', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 41),
(42, 'Utility: Spacing', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 42),
(43, 'Utility: Text', '', '', 1, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 1, '', 43);

--
-- Dumping data for table `#__componentbuilder_library_config`
--

INSERT INTO `#__componentbuilder_library_config` (`id`, `addconfig`, `library`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(1, '{\"addconfig0\":{\"field\":\"2635\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig1\":{\"field\":\"2636\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig2\":{\"field\":\"2639\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig3\":{\"field\":\"2637\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig4\":{\"field\":\"2638\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig7\":{\"field\":\"2640\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig6\":{\"field\":\"2641\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"},\"addconfig5\":{\"field\":\"2642\",\"custom_value\":\"\",\"tabname\":\"Icon Settings\"}}', 7, '', 1, '2019-10-03 09:55:37', '2019-10-03 16:41:01', 2, '', 1);

--
-- Dumping data for table `#__componentbuilder_library_files_folders_urls`
--

INSERT INTO `#__componentbuilder_library_files_folders_urls` (`id`, `addfiles`, `addfolders`, `addurls`, `library`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(2, '', '', '{\"addurls0\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/js\\/bootstrap.min.js\",\"type\":\"2\"},\"addurls1\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/css\\/bootstrap.min.css\",\"type\":\"2\"}}', 2, '', 1, '2017-11-25 16:17:36', '2018-05-02 23:29:05', 11, '', 2),
(3, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/css\\/uikit.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/js\\/uikit.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/js\\/uikit-icons.min.js\",\"type\":2}}', 3, '', 1, '2017-11-25 21:47:40', '2024-07-24 15:01:17', 12, '', 3),
(4, '{}', '{\"addfolders0\":{\"folder\":\"file_icon_vectors\",\"path\":\"\\/media\\/vector\",\"rename\":\"1\"}}', '{}', 7, '', 1, '2019-10-03 09:24:30', '2019-10-03 09:25:39', 2, '', 4),
(5, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/css\\/grapes.min.css\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/grapes.min.js\",\"type\":2}}', 8, '', 1, '2020-02-10 21:34:33', '2020-02-18 21:12:35', 5, '', 5),
(6, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/static.filestackapi.com\\/v3\\/filestack-0.1.10.js\",\"type\":2}}', 9, '', 1, '2020-02-18 21:13:16', '2020-02-18 21:14:11', 2, '', 5),
(7, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/vue\",\"type\":3}}', 10, '', 1, '2020-06-05 13:11:54', '0000-00-00 00:00:00', 1, '', 6),
(8, '{}', '{}', '{\"addurls2\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/1.10.21\\/js\\/jquery.dataTables.min.js\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/1.10.21\\/css\\/dataTables.uikit.min.css\",\"type\":2}}', 11, '', 1, '2020-06-27 21:34:44', '0000-00-00 00:00:00', 1, '', 7),
(9, '{}', '{}', '{\"addurls3\":{\"url\":\"http:\\/\\/code.jquery.com\\/ui\\/1.11.1\\/themes\\/smoothness\\/jquery-ui.css\",\"type\":2},\"addurls0\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/jquery-ui-timepicker-addon\\/1.6.3\\/jquery-ui-timepicker-addon.min.css\",\"type\":2},\"addurls1\":{\"url\":\"http:\\/\\/code.jquery.com\\/ui\\/1.11.1\\/jquery-ui.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/jquery-ui-timepicker-addon\\/1.6.3\\/jquery-ui-timepicker-addon.min.js\",\"type\":2}}', 12, '', 1, '2020-06-29 00:00:44', '2020-06-29 04:32:57', 4, '', 8),
(10, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/dt\\/jszip-2.5.0\\/dt-1.11.5\\/b-2.2.2\\/b-colvis-2.2.2\\/b-html5-2.2.2\\/b-print-2.2.2\\/cr-1.5.5\\/date-1.1.2\\/fc-4.0.2\\/fh-3.2.2\\/kt-2.6.4\\/r-2.2.9\\/rg-1.1.4\\/rr-1.2.8\\/sc-2.0.5\\/sb-1.3.2\\/sp-2.0.0\\/sl-1.3.4\\/sr-1.1.0\\/datatables.min.css\",\"type\":3},\"addurls1\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.1.36\\/pdfmake.min.js\",\"type\":3},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.1.36\\/vfs_fonts.js\",\"type\":3},\"addurls3\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/dt\\/jszip-2.5.0\\/dt-1.11.5\\/b-2.2.2\\/b-colvis-2.2.2\\/b-html5-2.2.2\\/b-print-2.2.2\\/cr-1.5.5\\/date-1.1.2\\/fc-4.0.2\\/fh-3.2.2\\/kt-2.6.4\\/r-2.2.9\\/rg-1.1.4\\/rr-1.2.8\\/sc-2.0.5\\/sb-1.3.2\\/sp-2.0.0\\/sl-1.3.4\\/sr-1.1.0\\/datatables.min.js\",\"type\":3}}', 13, '', 1, '2022-10-17 20:56:24', '0000-00-00 00:00:00', 1, '', 9),
(11, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/nouislider\\/dist\\/nouislider.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/nouislider\\/dist\\/nouislider.min.js\",\"type\":2}}', 14, '', 1, '2023-06-26 15:02:42', '2023-07-24 18:11:41', 3, '', 10),
(12, '{}', '{}', '{\"addurls4\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/bs5\\/jszip-3.10.1\\/dt-2.0.2\\/b-3.0.1\\/b-colvis-3.0.1\\/b-html5-3.0.1\\/b-print-3.0.1\\/cr-2.0.0\\/date-1.5.2\\/fc-5.0.0\\/fh-4.0.1\\/kt-2.12.0\\/r-3.0.0\\/rg-1.5.0\\/rr-1.5.0\\/sc-2.4.1\\/sb-1.7.0\\/sp-2.3.0\\/sl-2.0.0\\/sr-1.4.0\\/datatables.min.css\",\"type\":3},\"addurls1\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.2.7\\/pdfmake.min.js\",\"type\":3},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/pdfmake\\/0.2.7\\/vfs_fonts.js\",\"type\":3},\"addurls3\":{\"url\":\"https:\\/\\/cdn.datatables.net\\/v\\/bs5\\/jszip-3.10.1\\/dt-2.0.2\\/b-3.0.1\\/b-colvis-3.0.1\\/b-html5-3.0.1\\/b-print-3.0.1\\/cr-2.0.0\\/date-1.5.2\\/fc-5.0.0\\/fh-4.0.1\\/kt-2.12.0\\/r-3.0.0\\/rg-1.5.0\\/rr-1.5.0\\/sc-2.4.1\\/sb-1.7.0\\/sp-2.3.0\\/sl-2.0.0\\/sr-1.4.0\\/datatables.min.js\",\"type\":3}}', 15, '', 1, '2024-03-09 16:27:28', '2024-03-09 16:29:30', 2, '', 9);


CREATE TABLE IF NOT EXISTS `#__componentbuilder_external_code` (
	`target` VARCHAR(255) NOT NULL DEFAULT '',
	`hash` VARCHAR(64) NOT NULL DEFAULT '',
	PRIMARY KEY  (`target`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 DEFAULT COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;



--
-- Always insure this column name is large enough for long component and view names.
--
ALTER TABLE `#__assets` CHANGE `name` `name` VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'The unique name for the asset.';
