TimeTrex/interface/html5/dist/company-department-DepartmentViewController.bundle.js

1 line
44 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["company-department-DepartmentViewController"],{6993:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DepartmentViewController\": () => (/* binding */ DepartmentViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass DepartmentViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#department_view_container',\n\n\t\t\tuser_group_selection_type_id_array: null,\n\t\t\tuser_title_selection_type_id_array: null,\n\t\t\tuser_punch_branch_selection_type_id_array: null,\n\t\t\tuser_default_department_selection_type_id_array: null,\n\n\t\t\tuser_group_array: null,\n\n\t\t\tstatus_array: null\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'DepartmentEditView.html';\n\t\tthis.permission_id = 'department';\n\t\tthis.viewId = 'Department';\n\t\tthis.script_name = 'DepartmentView';\n\t\tthis.table_name_key = 'department';\n\t\tthis.context_menu_name = $.i18n._( 'Departments' );\n\t\tthis.navigation_label = $.i18n._( 'Department' );\n\t\tthis.api = TTAPI.APIDepartment;\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tthis.user_group_api = TTAPI.APIUserGroup;\n\t\t}\n\n\t\tthis.render();\n\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitOptions() {\n\t\tvar $this = this;\n\n\t\tlet options = [\n\t\t\t{ option_name: 'status', api: this.api }\n\t\t];\n\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\n\t\t\toptions.push(\n\t\t\t\t{ option_name: 'user_group_selection_type_id', api: this.api },\n\t\t\t\t{ option_name: 'user_title_selection_type_id', api: this.api },\n\t\t\t\t{ option_name: 'user_punch_branch_selection_type_id', api: this.api },\n\t\t\t\t{ option_name: 'user_default_department_selection_type_id', api: this.api },\n\t\t\t);\n\n\t\t\tthis.user_group_api.getUserGroup( '', false, false, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tres = res.getResult();\n\t\t\t\t\tres = Global.buildTreeRecord( res );\n\t\t\t\t\t$this.user_group_array = res;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.initDropDownOptions( options );\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\n\t\tthis.current_edit_record[key] = target.getValue();\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tif ( key === 'user_group_selection_type_id' ) {\n\t\t\t\tthis.onEmployeeGroupSelectionTypeChange();\n\t\t\t}\n\t\t\tif ( key === 'user_title_selection_type_id' ) {\n\t\t\t\tthis.onEmployeeTitleSelectionTypeChange();\n\t\t\t}\n\t\t\tif ( key === 'user_punch_branch_selection_type_id' ) {\n\t\t\t\tthis.onEmployeePunchBranchSelectionTypeChange();\n\t\t\t}\n\t\t\tif ( key === 'user_default_department_selection_type_id' ) {\n\t\t\t\tthis.onEmployeeDefaultDepartmentSelectionTypeChange();\n\t\t\t}\n\t\t}\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tonEmployeeGroupSelectionTypeChange() {\n\t\tif ( this.current_edit_record['user_group_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['user_group_ids'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['user_group_ids'].setEnabled( true );\n\t\t}\n\t}\n\n\tonEmployeeTitleSelectionTypeChange() {\n\t\tif ( this.current_edit_record['user_title_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['user_title_ids'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['user_title_ids'].setEnabled( true );\n\t\t}\n\t}\n\n\tonEmployeePunchBranchSelectionTypeChange() {\n\t\tif ( this.current_edit_record['user_punch_branch_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['user_punch_branch_ids'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['user_punch_branch_ids'].setEnabled( true );\n\t\t}\n\t}\n\n\tonEmployeeDefaultDepartmentSelectionTypeChange() {\n\t\tif ( this.current_edit_record['user_default_department_selection_type_id'] == 10 ) {\n\t\t\tthis.edit_view_ui_dic['user_default_department_ids'].setEnabled( false );\n\t\t} else {\n\t\t\tthis.edit_view_ui_dic['user_default_department_ids'].setEnabled( true );\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_department': { 'label': $.i18n._( 'Department' ) },\n\t\t\t'tab_employee_criteria': {\n\t\t\t\t'label': $.i18n._( 'Employee Criteria' ),\n\t\t\t\t'init_callback': 'initSubEmployeeCriteriaView',\n\t\t\t\t'html_template': this.getDepartmentEmployeeCriteriaTabHtml(),\n\t\t\t},\n\t\t\t'tab_audit': true,\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APIDepartment,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_department',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\t//Tab 0 start\n\n\t\tvar tab_department = this.edit_view_tab.find( '#tab_department' );\n\n\t\tvar tab_department_column1 = tab_department.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_department_column1 );\n\n\t\t//Status\n\n\t\tvar form_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'status_id' } );\n\t\tform_item_input.setSourceData( $this.status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_department_column1, '' );\n\n\t\t//Name\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'name', width: '100%' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Name' ), form_item_input, tab_department_column1 );\n\t\tform_item_input.parent().width( '45%' );\n\n\t\t// Code\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'manual_id', width: 65 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Code' ), form_item_input, tab_department_column1 );\n\n\t\t//Allowed GEO Fences\n\t\tif ( Global.getProductEdition() >= 20 ) {\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\t\tform_item_input.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIGEOFence,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_geo_fence',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'geo_fence_ids'\n\t\t\t} );\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Allowed GEO Fences' ), form_item_input, tab_department_column1 );\n\t\t}\n\n\t\t//Tags\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TAG_INPUT );\n\n\t\tform_item_input.TTagInput( { field: 'tag', object_type_id: 120 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Tags' ), form_item_input, tab_department_column1, '', null, null, true );\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\t//Tab 1 start employee criteria\n\t\t\tvar tab_employee_criteria = this.edit_view_tab.find( '#tab_employee_criteria' );\n\t\t\tvar tab_employee_criteria_column1 = tab_employee_criteria.find( '.first-column' );\n\t\t\tthis.edit_view_tabs[1] = [];\n\t\t\tthis.edit_view_tabs[1].push( tab_employee_criteria_column1 );\n\n\t\t\t//User Groups\n\t\t\tvar v_box = $( '<div class=\\'v-box\\'></div>' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'user_group_selection_type_id' } );\n\t\t\tform_item_input.setSourceData( $this.user_group_selection_type_id_array );\n\n\t\t\tvar form_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '<div class=\\'clear-both-div\\'></div>' );\n\n\t\t\t//Selection\n\t\t\tvar form_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\ttree_mode: true,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_tree_column',\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'user_group_ids'\n\t\t\t} );\n\t\t\tform_item_input_1.setSourceData( $this.user_group_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Employee Groups' ), [form_item_input, form_item_input_1], tab_employee_criteria_column1, '', v_box, false, true );\n\n\t\t\t// User Titles\n\t\t\tv_box = $( '<div class=\\'v-box\\'></div>' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'user_title_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.user_title_selection_type_id_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '<div class=\\'clear-both-div\\'></div>' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.UserTitle,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_user_title',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'user_title_ids'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Employee Titles' ), [form_item_input, form_item_input_1], tab_employee_criteria_column1, '', v_box, false, true );\n\n\t\t\t// User Punch Branches\n\t\t\tv_box = $( '<div class=\\'v-box\\'></div>' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'user_punch_branch_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.user_punch_branch_selection_type_id_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '<div class=\\'clear-both-div\\'></div>' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.Branch,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_user_punch_branch',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'user_punch_branch_ids'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Punch Branch' ), [form_item_input, form_item_input_1], tab_employee_criteria_column1, '', v_box, false, true );\n\n\t\t\t// User Default Department\n\t\t\tv_box = $( '<div class=\\'v-box\\'></div>' );\n\n\t\t\t//Selection Type\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\t\tform_item_input.TComboBox( { field: 'user_default_department_selection_type_id', set_empty: false } );\n\t\t\tform_item_input.setSourceData( $this.user_default_department_selection_type_id_array );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input, $.i18n._( 'Selection Type' ) );\n\n\t\t\tv_box.append( form_item );\n\t\t\tv_box.append( '<div class=\\'clear-both-div\\'></div>' );\n\n\t\t\t//Selection\n\t\t\tform_item_input_1 = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\n\t\t\tform_item_input_1.AComboBox( {\n\t\t\t\tapi_class: TTAPI.Department,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_user_default_department',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'user_default_department_ids'\n\t\t\t} );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_1, $.i18n._( 'Selection' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\t// Include Default Department\n\t\t\tvar form_item_input_2 = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\n\t\t\tform_item_input_2.TCheckbox( { field: 'include_user_default_department_id' } );\n\n\t\t\tform_item = this.putInputToInsideFormItem( form_item_input_2, $.i18n._( 'Include This Department' ) );\n\n\t\t\tv_box.append( form_item );\n\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Default Department' ), [form_item_input, form_item_input_1, form_item_input_2], tab_employee_criteria_column1, '', v_box, false, true );\n\n\t\t\t// Include Employees\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\t\tform_item_input.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'include_user_ids'\n\t\t\t} );\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Include Employees' ), form_item_input, tab_employee_criteria_column1 );\n\n\t\t\t// Exclude Employees\n\t\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\t\tform_item_input.AComboBox( {\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tallow_multiple_selection: true,\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tshow_search_inputs: true,\n\t\t\t\tset_empty: true,\n\t\t\t\tfield: 'exclude_user_ids'\n\t\t\t} );\n\t\t\tthis.addEditFieldToColumn( $.i18n._( 'Exclude Employees' ), form_item_input, tab_employee_criteria_column1, '' );\n\t\t}\n\t}\n\n\tbuildSearchFields() {\n\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Status' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Name' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'name',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Tags' ),\n\t\t\t\tfield: 'tag',\n\t\t\t\tbasic_search: true,\n\t\t\t\tin_column: 1,\n\t\t\t\tform_item_type: FormItemType.TAG_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Code' ),\n\t\t\t\tfield: 'manual_id',\n\t\t\t\tbasic_search: true,\n\t\t\t\tin_column: 2,\n\t\t\t\tobject_type_id: 120,\n\t\t\t\tform_item_type: FormItemType.TEXT_INPUT\n\t\t\t} ),\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Created By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'created_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} ),\n\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Updated By' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'updated_by',\n\t\t\t\tlayout_name: 'global_user',\n\t\t\t\tapi_class: TTAPI.APIUser,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tform_item_type: FormItemType.AWESOME_BOX\n\t\t\t} )\n\t\t];\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: [],\n\t\t\tinclude: [\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Import' ),\n\t\t\t\t\tid: 'import_icon',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'import_export',\n\t\t\t\t\tgroup: 'other',\n\t\t\t\t\tvue_icon: 'tticon tticon-file_download_black_24dp',\n\t\t\t\t\tpermission_result: PermissionManager.checkTopLevelPermission( 'ImportCSVDepartment' ),\n\t\t\t\t\tsort_order: 9010\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tonCustomContextClick( id ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'import_icon':\n\t\t\t\tthis.onImportClick();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tonImportClick() {\n\t\tvar $this = this;\n\n\t\tIndexViewController.openWizard( 'ImportCSVWizard', 'Department', function() {\n\t\t\t$this.search();\n\t\t} );\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tthis.onEmployeeGroupSelectionTypeChange();\n\t\t\tthis.onEmployeeTitleSelectionTypeChange();\n\t\t\tthis.onEmployeePunchBranchSelectionTypeChange();\n\t\t\tthis.onEmployeeDefaultDepartmentSelectionTypeChange();\n\t\t}\n\t}\n\n\tinitSubEmployeeCriteriaView() {\n\t\tif ( ( Global.getProductEdition() >= 20 ) ) {\n\t\t\tthis.edit_view_tab.find( '#tab_employee_criteria' ).find( '.first-column' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'none' );\n\t\t} else {\n\t\t\tthis.edit_view_tab.find( '#tab_employee_criteria' ).find( '.first-column' ).css( 'display', 'none' );\n\t\t\tthis.edit_view.find( '.permission-defined-div' ).css( 'display', 'block' );\n\t\t\tthis.edit_view.find( '.permission-message' ).html( Global.getUpgradeMessage() );\n\t\t}\n\t}\n\n\tgetDepartmentEmployeeCriteriaTabHtml() {\n\t\treturn `\n\t\t<div id=\"tab_employee_criteria\" class=\"edit-view-tab-outside\">\n\t\t\t<div class=\"edit-view-tab\" id=\"tab_employee_criteria_content_div\">\n\t\t\t\t<div class=\"first-column full-width-column\"></div>\n\t\t\t\t<div class=\"save-and-continue-div permission-defined-div\">\n\t\t\t\t\t<span class=\"message permission-message\"></span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>`;\n\t}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNjk5My5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQLDJCQUEyQjtBQUMzQixFQUFFLENBQUM7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixDQUFDO0FBQzVCLDBCQUEwQixDQUFDO0FBQzNCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7O0FBR0E7O0FBRUE7QUFDQSxNQUFNLDREQUE0RDtBQUNsRSxNQUFNLDREQUE0RDtBQUNsRSxNQUFNLG1FQUFtRTtBQUN6RSxNQUFNLHlFQUF5RTtBQUMvRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsdUJBQXVCLFNBQVMsQ0FBQyx5QkFBeUI7QUFDMUQ7QUFDQSxhQUFhLENBQUM7QUFDZDtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7O0FBRUo7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSwrQkFBK0IscUJBQXFCO0FBQ3BEO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7O0FBRUEsZ0NBQWdDLCtCQUErQjtBQUMvRCw2QkFBNkIsQ0FBQztBQUM5Qjs7QUFFQTs7QUFFQTs7QUFFQSxnQ0FBZ0MsZ0NBQWdDO0FBQ2hFLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw4QkFBOEIsQ0FBQztBQUMvQjs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixvQ0FBb0M7QUFDbkUsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGVBQWUsQ0FBQzs7QUFFaEI7QUFDQTtBQUNBLGdDQUFnQyx3Q0FBd0M7QUFDeEU7O0FBRUEsbUVBQW1FLENBQUM7O0FBRXBFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsaUVBQWlFLENBQUM7O0FBRWxFOztBQUVBLDhCQUE4QixDQUFDOztBQUUvQjtBQUNBLFdBQVcsQ0FBQzs7QUFFWjtBQUNBO0FBQ0EsZ0NBQWdDLDBEQUEwRDtBQUMxRjs7QUFFQSwrREFBK0QsQ0FBQzs7QUFFaEU7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTCxpRUFBaUUsQ0FBQzs7QUFFbEU7O0FBRUEsOEJBQThCLENBQUM7O0FBRS9CO0FBQ0EsV0FBVyxDQUFDOztBQUVaO0FBQ0E7QUFDQSxnQ0FBZ0MsaUVBQWlFO0FBQ2pHOztBQUVBLCtEQUErRCxDQUFDOztBQUVoRTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMLGlFQUFpRSxDQUFDOztBQUVsRTs7QUFFQSw4QkFBOEIsQ0FBQzs7QUFFL0I7QUFDQSxXQUFXLENBQUM7O0FBRVo7QUFDQTtBQUNBLGdDQUFnQyx1RUFBdUU7QUFDdkc7O0FBRUEsK0RBQStELENBQUM7O0FBRWhFO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUwsaUVBQWlFLENBQUM7O0FBRWxFOztBQUVBO0FBQ0E7O0FBRUEsa0NBQWtDLDhDQUE4Qzs7QUFFaEYsaUVBQWlFLENBQUM7O0FBRWxFOztBQUVBLDhCQUE4QixDQUFDOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsOEJBQThCLENBQUM7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw4QkFBOEIsQ0FBQztBQUMvQjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLENBQUM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL2NvbXBhbnkvZGVwYXJ0bWVudC9EZXBhcnRtZW50Vmlld0NvbnRyb2xsZXIuanM/Y2E4ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRGVwYXJ0bWVudFZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNkZXBhcnRtZW50X3ZpZXdfY29udGFpbmVyJyxcblxuXHRcdFx0dXNlcl9ncm91cF9zZWxlY3Rpb25fdHlwZV9pZF9hcnJheTogbnVsbCxcblx0XHRcdHVzZXJfdGl0bGVfc2VsZWN0aW9uX3R5cGVfaWRfYXJyYXk6IG51bGwsXG5cdFx0XHR1c2VyX3B1bmNoX2JyYW5jaF9zZWxlY3Rpb25fdHlwZV9pZF9hcnJheTogbnVsbCxcblx0XHRcdHVzZXJfZGVmYXVsdF9kZXBhcnRtZW50X3NlbGVjdGlvbl90eXBlX2lkX2FycmF5OiBudWxsLFxuXG5cdFx0XHR1c2VyX2dyb3VwX2FycmF5OiBudWxsLFxuXG5cdFx0XHRzdGF0dXNfYXJyYXk6IG51bGxcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJywgb3B0aW9ucyApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RwbCA9ICdEZXBhcnRtZW50RWRpdFZpZXcuaHRtbCc7XG5cdFx0dGhpcy5wZXJtaXNzaW9uX2lkID0gJ2RlcGFydG1lbnQnO1xuXHRcdHRoaXMudmlld0lkID0gJ0RlcGFydG1lbnQnO1xuXHRcdHRoaXMuc2NyaXB0X25hbWUgPSAnRGVwYXJ0bWVudFZpZXcnO1xuXHRcdHRoaXMudGFibGVfbmFtZV9rZXkgPSAnZGVwYXJ0bWVudCc7XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnRGVwYXJ0bWVudHMnICk7XG5cdFx0dGhpcy5uYXZpZ2F0aW9uX2xhYmVsID0gJC5pMThuLl8oICdEZXBhcnRtZW50JyApO1xuXHRcdHRoaXMuYXBpID0gVFRBUEkuQVBJRGVwYXJ0bWVudDtcblx0XHRpZiAoICggR2xvYmFsLmdldFByb2R1Y3RFZGl0aW9uKCkgPj0gMjAgKSApIHtcblx0XHRcdHRoaXMudXNlcl9ncm91cF9hcGkgPSBUVEFQSS5BUElVc2VyR3JvdXA7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZW5kZXIoKTtcblxuXHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSgpO1xuXG5cdFx0dGhpcy5pbml0RGF0YSgpO1xuXHR9XG5cblx0aW5pdE9wdGlvbnMoKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdGxldCBvcHRpb25zID0gW1xuXHRcdFx0eyBvcHRpb25fbmFtZTogJ3N0YXR1cycsIGFwaTogdGhpcy5hcGkgfVxuXHRcdF07XG5cblxuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXG5cdFx0XHRvcHRpb25zLnB1c2goXG5cdFx0XHRcdHsgb3B0aW9uX25hbWU6ICd1c2VyX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0XHR7IG9wdGlvbl9uYW1lOiAndXNlcl90aXRsZV9zZWxlY3Rpb25fdHlwZV9pZCcsIGFwaTogdGhpcy5hcGkgfSxcblx0XHRcdFx0eyBvcHRpb25fbmFtZTogJ3VzZXJfcHVuY2hfYnJhbmNoX3NlbGVjdGlvbl90eXBlX2lkJywgYXBpOiB0aGlzLmFwaSB9LFxuXHRcdFx0XHR7IG9wdGlvbl9uYW1lOiAndXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfc2VsZWN0aW9uX3R5cGVfaWQnLCBhcGk6IHRoaXMuYXBpIH0sXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLnVzZXJfZ3JvdXBfYXBpLmdldFVzZXJHcm91cCggJycsIGZhbHNlLCBmYWxzZSwge1xuXHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdFx0cmVzID0gR2xvYmFsLmJ1aWxkVHJlZVJlY29yZCggcmVzICk7XG5cdFx0XHRcdFx0JHRoaXMudXNlcl9ncm91cF9hcnJheSA9IHJlcztcblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9ucyggb3B0aW9ucyApO1xuXHR9XG5cblx0b25Gb3JtSXRlbUNoYW5nZSggdGFyZ2V0LCBkb05vdFZhbGlkYXRlICkge1xuXG5cdFx0dGhpcy5zZXRJc0NoYW5nZWQoIHRhcmdldCApO1xuXHRcdHRoaXMuc2V0TWFzc0VkaXRpbmdGaWVsZHNXaGVuRm9ybUNoYW5nZSggdGFyZ2V0ICk7XG5cdFx0dmFyIGtleSA9IHRhcmdldC5nZXRGaWVsZCgpO1xuXG5cdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gPSB0YXJnZXQuZ2V0VmFsdWUoKTtcblxuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0aWYgKCBrZXkgPT09ICd1c2VyX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkJyApIHtcblx0XHRcdFx0dGhpcy5vbkVtcGxveWVlR3JvdXBTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGtleSA9PT0gJ3VzZXJfdGl0bGVfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0XHR0aGlzLm9uRW1wbG95ZWVUaXRsZVNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHRcdGlmICgga2V5ID09PSAndXNlcl9wdW5jaF9icmFuY2hfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0XHR0aGlzLm9uRW1wbG95ZWVQdW5jaEJyYW5jaFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHRcdGlmICgga2V5ID09PSAndXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfc2VsZWN0aW9uX3R5cGVfaWQnICkge1xuXHRcdFx0XHR0aGlzLm9uRW1wbG95ZWVEZWZhdWx0RGVwYXJ0bWVudFNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICFkb05vdFZhbGlkYXRlICkge1xuXHRcdFx0dGhpcy52YWxpZGF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdG9uRW1wbG95ZWVHcm91cFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ3VzZXJfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfaWQnXSA9PSAxMCApIHtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndXNlcl9ncm91cF9pZHMnXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VzZXJfZ3JvdXBfaWRzJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdG9uRW1wbG95ZWVUaXRsZVNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ3VzZXJfdGl0bGVfc2VsZWN0aW9uX3R5cGVfaWQnXSA9PSAxMCApIHtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndXNlcl90aXRsZV9pZHMnXS5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VzZXJfdGl0bGVfaWRzJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdG9uRW1wbG95ZWVQdW5jaEJyYW5jaFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ3VzZXJfcHVuY2hfYnJhbmNoX3NlbGVjdGlvbl90eXBlX2lkJ10gPT0gMTAgKSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VzZXJfcHVuY2hfYnJhbmNoX2lkcyddLnNldEVuYWJsZWQoIGZhbHNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndXNlcl9wdW5jaF9icmFuY2hfaWRzJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdG9uRW1wbG95ZWVEZWZhdWx0RGVwYXJ0bWVudFNlbGVjdGlvblR5cGVDaGFuZ2UoKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ3VzZXJfZGVmYXVsdF9kZXBhcnRtZW50X3NlbGVjdGlvbl90eXBlX2lkJ10gPT0gMTAgKSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWNbJ3VzZXJfZGVmYXVsdF9kZXBhcnRtZW50X2lkcyddLnNldEVuYWJsZWQoIGZhbHNlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpY1sndXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfaWRzJ10uc2V0RW5hYmxlZCggdHJ1ZSApO1xuXHRcdH1cblx0fVxuXG5cdGJ1aWxkRWRpdFZpZXdVSSgpIHtcblxuXHRcdHN1cGVyLmJ1aWxkRWRpdFZpZXdVSSgpO1xuXG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdHZhciB0YWJfbW9kZWwgPSB7XG5cdFx0XHQndGFiX2RlcGFydG1lbnQnOiB7ICdsYWJlbCc6ICQuaTE4bi5fKCAnRGVwYXJ0bWVudCcgKSB9LFxuXHRcdFx0J3RhYl9lbXBsb3llZV9jcml0ZXJpYSc6IHtcblx0XHRcdFx0J2xhYmVsJzogJC5pMThuLl8oICdFbXBsb3llZSBDcml0ZXJpYScgKSxcblx0XHRcdFx0J2luaXRfY2FsbGJhY2snOiAnaW5pdFN1YkVtcGxveWVlQ3JpdGVyaWFWaWV3Jyxcblx0XHRcdFx0J2h0bWxfdGVtcGxhdGUnOiB0aGlzLmdldERlcGFydG1lbnRFbXBsb3llZUNyaXRlcmlhVGFiSHRtbCgpLFxuXHRcdFx0fSxcblx0XHRcdCd0YWJfYXVkaXQnOiB0cnVlLFxuXHRcdH07XG5cdFx0dGhpcy5zZXRUYWJNb2RlbCggdGFiX21vZGVsICk7XG5cblx0XHR0aGlzLm5hdmlnYXRpb24uQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSURlcGFydG1lbnQsXG5cdFx0XHRpZDogdGhpcy5zY3JpcHRfbmFtZSArICdfbmF2aWdhdGlvbicsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfZGVwYXJ0bWVudCcsXG5cdFx0XHRuYXZpZ2F0aW9uX21vZGU6IHRydWUsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWVcblx0XHR9ICk7XG5cblx0XHR0aGlzLnNldE5hdmlnYXRpb24oKTtcblxuXHRcdC8vVGFiIDAgc3RhcnRcblxuXHRcdHZhciB0YWJfZGVwYXJ0bWVudCA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9kZXBhcnRtZW50JyApO1xuXG5cdFx0dmFyIHRhYl9kZXBhcnRtZW50X2NvbHVtbjEgPSB0YWJfZGVwYXJ0bWVudC5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX2RlcGFydG1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly9TdGF0dXNcblxuXHRcdHZhciBmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdzdGF0dXNfaWQnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuc3RhdHVzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGF0dXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RlcGFydG1lbnRfY29sdW1uMSwgJycgKTtcblxuXHRcdC8vTmFtZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9JTlBVVCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICduYW1lJywgd2lkdGg6ICcxMDAlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdOYW1lJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9kZXBhcnRtZW50X2NvbHVtbjEgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQucGFyZW50KCkud2lkdGgoICc0NSUnICk7XG5cblx0XHQvLyBDb2RlXG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dElucHV0KCB7IGZpZWxkOiAnbWFudWFsX2lkJywgd2lkdGg6IDY1IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0NvZGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RlcGFydG1lbnRfY29sdW1uMSApO1xuXG5cdFx0Ly9BbGxvd2VkIEdFTyBGZW5jZXNcblx0XHRpZiAoIEdsb2JhbC5nZXRQcm9kdWN0RWRpdGlvbigpID49IDIwICkge1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSUdFT0ZlbmNlLFxuXHRcdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX2dlb19mZW5jZScsXG5cdFx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ2dlb19mZW5jZV9pZHMnXG5cdFx0XHR9ICk7XG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0FsbG93ZWQgR0VPIEZlbmNlcycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfZGVwYXJ0bWVudF9jb2x1bW4xICk7XG5cdFx0fVxuXG5cdFx0Ly9UYWdzXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5UQUdfSU5QVVQgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGFnSW5wdXQoIHsgZmllbGQ6ICd0YWcnLCBvYmplY3RfdHlwZV9pZDogMTIwIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1RhZ3MnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2RlcGFydG1lbnRfY29sdW1uMSwgJycsIG51bGwsIG51bGwsIHRydWUgKTtcblxuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0Ly9UYWIgMSBzdGFydCBlbXBsb3llZSBjcml0ZXJpYVxuXHRcdFx0dmFyIHRhYl9lbXBsb3llZV9jcml0ZXJpYSA9IHRoaXMuZWRpdF92aWV3X3RhYi5maW5kKCAnI3RhYl9lbXBsb3llZV9jcml0ZXJpYScgKTtcblx0XHRcdHZhciB0YWJfZW1wbG95ZWVfY3JpdGVyaWFfY29sdW1uMSA9IHRhYl9lbXBsb3llZV9jcml0ZXJpYS5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMV0gPSBbXTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMV0ucHVzaCggdGFiX2VtcGxveWVlX2NyaXRlcmlhX2NvbHVtbjEgKTtcblxuXHRcdFx0Ly9Vc2VyIEdyb3Vwc1xuXHRcdFx0dmFyIHZfYm94ID0gJCggJzxkaXYgY2xhc3M9XFwndi1ib3hcXCc+PC9kaXY+JyApO1xuXG5cdFx0XHQvL1NlbGVjdGlvbiBUeXBlXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3VzZXJfZ3JvdXBfc2VsZWN0aW9uX3R5cGVfaWQnIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy51c2VyX2dyb3VwX3NlbGVjdGlvbl90eXBlX2lkX2FycmF5ICk7XG5cblx0XHRcdHZhciBmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ1NlbGVjdGlvbiBUeXBlJyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHR2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb25cblx0XHRcdHZhciBmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRcdHRyZWVfbW9kZTogdHJ1ZSxcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF90cmVlX2NvbHVtbicsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICd1c2VyX2dyb3VwX2lkcydcblx0XHRcdH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLnNldFNvdXJjZURhdGEoICR0aGlzLnVzZXJfZ3JvdXBfYXJyYXkgKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ1NlbGVjdGlvbicgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VtcGxveWVlIEdyb3VwcycgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWJfZW1wbG95ZWVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBVc2VyIFRpdGxlc1xuXHRcdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAndXNlcl90aXRsZV9zZWxlY3Rpb25fdHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnVzZXJfdGl0bGVfc2VsZWN0aW9uX3R5cGVfaWRfYXJyYXkgKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dCwgJC5pMThuLl8oICdTZWxlY3Rpb24gVHlwZScgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXHRcdFx0dl9ib3guYXBwZW5kKCAnPGRpdiBjbGFzcz1cXCdjbGVhci1ib3RoLWRpdlxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMSA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEuQUNvbWJvQm94KCB7XG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuVXNlclRpdGxlLFxuXHRcdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXJfdGl0bGUnLFxuXHRcdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRcdHNldF9lbXB0eTogdHJ1ZSxcblx0XHRcdFx0ZmllbGQ6ICd1c2VyX3RpdGxlX2lkcydcblx0XHRcdH0gKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ1NlbGVjdGlvbicgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0VtcGxveWVlIFRpdGxlcycgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWJfZW1wbG95ZWVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBVc2VyIFB1bmNoIEJyYW5jaGVzXG5cdFx0XHR2X2JveCA9ICQoICc8ZGl2IGNsYXNzPVxcJ3YtYm94XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb24gVHlwZVxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICd1c2VyX3B1bmNoX2JyYW5jaF9zZWxlY3Rpb25fdHlwZV9pZCcsIHNldF9lbXB0eTogZmFsc2UgfSApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnVzZXJfcHVuY2hfYnJhbmNoX3NlbGVjdGlvbl90eXBlX2lkX2FycmF5ICk7XG5cblx0XHRcdGZvcm1faXRlbSA9IHRoaXMucHV0SW5wdXRUb0luc2lkZUZvcm1JdGVtKCBmb3JtX2l0ZW1faW5wdXQsICQuaTE4bi5fKCAnU2VsZWN0aW9uIFR5cGUnICkgKTtcblxuXHRcdFx0dl9ib3guYXBwZW5kKCBmb3JtX2l0ZW0gKTtcblx0XHRcdHZfYm94LmFwcGVuZCggJzxkaXYgY2xhc3M9XFwnY2xlYXItYm90aC1kaXZcXCc+PC9kaXY+JyApO1xuXG5cdFx0XHQvL1NlbGVjdGlvblxuXHRcdFx0Zm9ybV9pdGVtX2lucHV0XzEgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xLkFDb21ib0JveCgge1xuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkJyYW5jaCxcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyX3B1bmNoX2JyYW5jaCcsXG5cdFx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ3VzZXJfcHVuY2hfYnJhbmNoX2lkcydcblx0XHRcdH0gKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8xLCAkLmkxOG4uXyggJ1NlbGVjdGlvbicgKSApO1xuXG5cdFx0XHR2X2JveC5hcHBlbmQoIGZvcm1faXRlbSApO1xuXG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1B1bmNoIEJyYW5jaCcgKSwgW2Zvcm1faXRlbV9pbnB1dCwgZm9ybV9pdGVtX2lucHV0XzFdLCB0YWJfZW1wbG95ZWVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBVc2VyIERlZmF1bHQgRGVwYXJ0bWVudFxuXHRcdFx0dl9ib3ggPSAkKCAnPGRpdiBjbGFzcz1cXCd2LWJveFxcJz48L2Rpdj4nICk7XG5cblx0XHRcdC8vU2VsZWN0aW9uIFR5cGVcblx0XHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAndXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfc2VsZWN0aW9uX3R5cGVfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy51c2VyX2RlZmF1bHRfZGVwYXJ0bWVudF9zZWxlY3Rpb25fdHlwZV9pZF9hcnJheSApO1xuXG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0LCAkLmkxOG4uXyggJ1NlbGVjdGlvbiBUeXBlJyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cdFx0XHR2X2JveC5hcHBlbmQoICc8ZGl2IGNsYXNzPVxcJ2NsZWFyLWJvdGgtZGl2XFwnPjwvZGl2PicgKTtcblxuXHRcdFx0Ly9TZWxlY3Rpb25cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8xID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXRfMS5BQ29tYm9Cb3goIHtcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5EZXBhcnRtZW50LFxuXHRcdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXJfZGVmYXVsdF9kZXBhcnRtZW50Jyxcblx0XHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRcdGZpZWxkOiAndXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfaWRzJ1xuXHRcdFx0fSApO1xuXG5cdFx0XHRmb3JtX2l0ZW0gPSB0aGlzLnB1dElucHV0VG9JbnNpZGVGb3JtSXRlbSggZm9ybV9pdGVtX2lucHV0XzEsICQuaTE4bi5fKCAnU2VsZWN0aW9uJyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdC8vIEluY2x1ZGUgRGVmYXVsdCBEZXBhcnRtZW50XG5cdFx0XHR2YXIgZm9ybV9pdGVtX2lucHV0XzIgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNIRUNLQk9YICk7XG5cblx0XHRcdGZvcm1faXRlbV9pbnB1dF8yLlRDaGVja2JveCggeyBmaWVsZDogJ2luY2x1ZGVfdXNlcl9kZWZhdWx0X2RlcGFydG1lbnRfaWQnIH0gKTtcblxuXHRcdFx0Zm9ybV9pdGVtID0gdGhpcy5wdXRJbnB1dFRvSW5zaWRlRm9ybUl0ZW0oIGZvcm1faXRlbV9pbnB1dF8yLCAkLmkxOG4uXyggJ0luY2x1ZGUgVGhpcyBEZXBhcnRtZW50JyApICk7XG5cblx0XHRcdHZfYm94LmFwcGVuZCggZm9ybV9pdGVtICk7XG5cblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRGVmYXVsdCBEZXBhcnRtZW50JyApLCBbZm9ybV9pdGVtX2lucHV0LCBmb3JtX2l0ZW1faW5wdXRfMSwgZm9ybV9pdGVtX2lucHV0XzJdLCB0YWJfZW1wbG95ZWVfY3JpdGVyaWFfY29sdW1uMSwgJycsIHZfYm94LCBmYWxzZSwgdHJ1ZSApO1xuXG5cdFx0XHQvLyBJbmNsdWRlIEVtcGxveWVlc1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdFx0c2V0X2VtcHR5OiB0cnVlLFxuXHRcdFx0XHRmaWVsZDogJ2luY2x1ZGVfdXNlcl9pZHMnXG5cdFx0XHR9ICk7XG5cdFx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0luY2x1ZGUgRW1wbG95ZWVzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9lbXBsb3llZV9jcml0ZXJpYV9jb2x1bW4xICk7XG5cblx0XHRcdC8vIEV4Y2x1ZGUgRW1wbG95ZWVzXG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJVXNlcixcblx0XHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiB0cnVlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRcdGZpZWxkOiAnZXhjbHVkZV91c2VyX2lkcydcblx0XHRcdH0gKTtcblx0XHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRXhjbHVkZSBFbXBsb3llZXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX2VtcGxveWVlX2NyaXRlcmlhX2NvbHVtbjEsICcnICk7XG5cdFx0fVxuXHR9XG5cblx0YnVpbGRTZWFyY2hGaWVsZHMoKSB7XG5cblx0XHRzdXBlci5idWlsZFNlYXJjaEZpZWxkcygpO1xuXHRcdHRoaXMuc2VhcmNoX2ZpZWxkcyA9IFtcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1N0YXR1cycgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3N0YXR1c19pZCcsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnTmFtZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ25hbWUnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVRcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1RhZ3MnICksXG5cdFx0XHRcdGZpZWxkOiAndGFnJyxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuVEFHX0lOUFVUXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnQ29kZScgKSxcblx0XHRcdFx0ZmllbGQ6ICdtYW51YWxfaWQnLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0b2JqZWN0X3R5cGVfaWQ6IDEyMCxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnQ3JlYXRlZCBCeScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRmaWVsZDogJ2NyZWF0ZWRfYnknLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVXBkYXRlZCBCeScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAyLFxuXHRcdFx0XHRmaWVsZDogJ3VwZGF0ZWRfYnknLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApXG5cdFx0XTtcblx0fVxuXG5cdGdldEN1c3RvbUNvbnRleHRNZW51TW9kZWwoKSB7XG5cdFx0dmFyIGNvbnRleHRfbWVudV9tb2RlbCA9IHtcblx0XHRcdGV4Y2x1ZGU6IFtdLFxuXHRcdFx0aW5jbHVkZTogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnSW1wb3J0JyApLFxuXHRcdFx0XHRcdGlkOiAnaW1wb3J0X2ljb24nLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAnaW1wb3J0X2V4cG9ydCcsXG5cdFx0XHRcdFx0Z3JvdXA6ICdvdGhlcicsXG5cdFx0XHRcdFx0dnVlX2ljb246ICd0dGljb24gdHRpY29uLWZpbGVfZG93bmxvYWRfYmxhY2tfMjRkcCcsXG5cdFx0XHRcdFx0cGVybWlzc2lvbl9yZXN1bHQ6IFBlcm1pc3Npb25NYW5hZ2VyLmNoZWNrVG9wTGV2ZWxQZXJtaXNzaW9uKCAnSW1wb3J0Q1NWRGVwYXJ0bWVudCcgKSxcblx0XHRcdFx0XHRzb3J0X29yZGVyOiA5MDEwXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9O1xuXG5cdFx0cmV0dXJuIGNvbnRleHRfbWVudV9tb2RlbDtcblx0fVxuXG5cdG9uQ3VzdG9tQ29udGV4dENsaWNrKCBpZCApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2ltcG9ydF9pY29uJzpcblx0XHRcdFx0dGhpcy5vbkltcG9ydENsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdG9uSW1wb3J0Q2xpY2soKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdEluZGV4Vmlld0NvbnRyb2xsZXIub3BlbldpemFyZCggJ0ltcG9ydENTVldpemFyZCcsICdEZXBhcnRtZW50JywgZnVuY3Rpb24oKSB7XG5cdFx0XHQkdGhpcy5zZWFyY2goKTtcblx0XHR9ICk7XG5cdH1cblxuXHRzZXRFZGl0Vmlld0RhdGFEb25lKCkge1xuXHRcdHN1cGVyLnNldEVkaXRWaWV3RGF0YURvbmUoKTtcblxuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0dGhpcy5vbkVtcGxveWVlR3JvdXBTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0XHR0aGlzLm9uRW1wbG95ZWVUaXRsZVNlbGVjdGlvblR5cGVDaGFuZ2UoKTtcblx0XHRcdHRoaXMub25FbXBsb3llZVB1bmNoQnJhbmNoU2VsZWN0aW9uVHlwZUNoYW5nZSgpO1xuXHRcdFx0dGhpcy5vbkVtcGxveWVlRGVmYXVsdERlcGFydG1lbnRTZWxlY3Rpb25UeXBlQ2hhbmdlKCk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdFN1YkVtcGxveWVlQ3JpdGVyaWFWaWV3KCkge1xuXHRcdGlmICggKCBHbG9iYWwuZ2V0UHJvZHVjdEVkaXRpb24oKSA+PSAyMCApICkge1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX2VtcGxveWVlX2NyaXRlcmlhJyApLmZpbmQoICcuZmlyc3QtY29sdW1uJyApLmNzcyggJ2Rpc3BsYXknLCAnYmxvY2snICk7XG5cdFx0XHR0aGlzLmVkaXRfdmlldy5maW5kKCAnLnBlcm1pc3Npb24tZGVmaW5lZC1kaXYnICkuY3NzKCAnZGlzcGxheScsICdub25lJyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRfdmlld190YWIuZmluZCggJyN0YWJfZW1wbG95ZWVfY3JpdGVyaWEnICkuZmluZCggJy5maXJzdC1jb2x1bW4nICkuY3NzKCAnZGlzcGxheScsICdub25lJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXcuZmluZCggJy5wZXJtaXNzaW9uLWRlZmluZWQtZGl2JyApLmNzcyggJ2Rpc3BsYXknLCAnYmxvY2snICk7XG5cdFx0XHR0aGlzLmVkaXRfdmlldy5maW5kKCAnLnBlcm1pc3Npb24tbWVzc2FnZScgKS5odG1sKCBHbG9iYWwuZ2V0VXBncmFkZU1lc3NhZ2UoKSApO1xuXHRcdH1cblx0fVxuXG5cdGdldERlcGFydG1lbnRFbXBsb3llZUNyaXRlcmlhVGFiSHRtbCgpIHtcblx0XHRyZXR1cm4gYFxuXHRcdDxkaXYgaWQ9XCJ0YWJfZW1wbG95ZWVfY3JpdGVyaWFcIiBjbGFzcz1cImVkaXQtdmlldy10YWItb3V0c2lkZVwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImVkaXQtdmlldy10YWJcIiBpZD1cInRhYl9lbXBsb3llZV9jcml0ZXJpYV9jb250ZW50X2RpdlwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmlyc3QtY29sdW1uIGZ1bGwtd2lkdGgtY29sdW1uXCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJzYXZlLWFuZC1jb250aW51ZS1kaXYgcGVybWlzc2lvbi1kZWZpbmVkLWRpdlwiPlxuXHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwibWVzc2FnZSBwZXJtaXNzaW9uLW1lc3NhZ2VcIj48L3NwYW4+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+YDtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///6993\n")}}]);