"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["payroll-pay_stub_transaction-PayStubTransactionViewController"],{7900:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PayStubTransactionViewController\": () => (/* binding */ PayStubTransactionViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass PayStubTransactionViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#pay_stub_transaction_view_container',\n\n\t\t\tstatus_array: null,\n\t\t\tcurrency_array: null,\n\t\t\tuser_status_array: null,\n\t\t\tuser_group_array: null,\n\t\t\ttype_array: null,\n\n\t\t\tuser_api: null,\n\t\t\tuser_group_api: null,\n\t\t\tcompany_api: null,\n\t\t\tpay_stub_entry_api: null,\n\n\t\t\tinclude_entries: true\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit() {\n\t\t//this._super('initialize' );\n\t\tthis.edit_view_tpl = 'PayStubTransactionEditView.html';\n\t\tthis.permission_id = 'pay_stub';\n\t\tthis.viewId = 'PayStubTransaction';\n\t\tthis.script_name = 'PayStubTransactionView';\n\t\tthis.table_name_key = 'pay_stub_transaction';\n\t\tthis.context_menu_name = $.i18n._( 'Pay Stub Transaction' );\n\t\tthis.navigation_label = $.i18n._( 'Pay Stub Transactions' );\n\n\t\tthis.api = TTAPI.APIPayStubTransaction;\n\t\tthis.currency_api = TTAPI.APICurrency;\n\t\tthis.remittance_source_account_api = TTAPI.APIRemittanceSourceAccount;\n\t\tthis.remittance_destination_account_api = TTAPI.APIRemittanceDestinationAccount;\n\t\tthis.user_api = TTAPI.APIUser;\n\t\tthis.pay_stub_entry_api = TTAPI.APIPayStubEntry;\n\t\tthis.user_group_api = TTAPI.APIUserGroup;\n\t\tthis.company_api = TTAPI.APICompany;\n\t\tthis.pay_period_api = TTAPI.APIPayPeriod;\n\n\t\tthis.initPermission();\n\t\tthis.render();\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitPermission() {\n\t\tsuper.initPermission();\n\n\t\tif ( PermissionManager.validate( this.permission_id, 'view' ) || PermissionManager.validate( this.permission_id, 'view_child' ) ) {\n\t\t\tthis.show_search_tab = true;\n\t\t} else {\n\t\t\tthis.show_search_tab = false;\n\t\t}\n\t}\n\n\tinitOptions( callBack ) {\n\t\tvar $this = this;\n\n\t\tthis.initDropDownOption( 'status', 'transaction_status_id' );\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\texclude: ['default'],\n\t\t\tinclude: [\n\t\t\t\t'view',\n\t\t\t\t'edit',\n\t\t\t\t'mass_edit',\n\t\t\t\t'save',\n\t\t\t\t'save_and_continue',\n\t\t\t\t'save_and_next',\n\t\t\t\t'cancel',\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Jump To' ),\n\t\t\t\t\tid: 'jump_to_header',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\taction_group_header: true,\n\t\t\t\t\tpermission_result: false // to hide it in legacy context menu and avoid errors in legacy parsers.\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'TimeSheet' ),\n\t\t\t\t\tid: 'timesheet',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Schedule' ),\n\t\t\t\t\tid: 'schedule',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Pay Stubs' ),\n\t\t\t\t\tid: 'pay_stub',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Pay Stub Amendments' ),\n\t\t\t\t\tid: 'pay_stub_amendment',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Edit Employee' ),\n\t\t\t\t\tid: 'edit_employee',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Edit Pay Period' ),\n\t\t\t\t\tid: 'edit_pay_period',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'jump_to',\n\t\t\t\t\tgroup: 'navigation',\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tsetCustomDefaultMenuIcon( id, context_btn, grid_selected_length ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'pay_stub_transaction':\n\t\t\tcase 'pay_stub':\n\t\t\t\tthis.setDefaultMenuViewIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t\tcase 'timesheet':\n\t\t\t\tthis.setDefaultMenuViewIcon( context_btn, grid_selected_length, 'punch' );\n\t\t\t\tbreak;\n\t\t\tcase 'schedule':\n\t\t\t\tthis.setDefaultMenuViewIcon( context_btn, grid_selected_length, 'schedule' );\n\t\t\t\tbreak;\n\t\t\tcase 'pay_stub_amendment':\n\t\t\t\tthis.setDefaultMenuViewIcon( context_btn, grid_selected_length, 'pay_stub_amendment' );\n\t\t\t\tbreak;\n\t\t\tcase 'edit_employee':\n\t\t\t\tthis.setDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length, 'user' );\n\t\t\t\tbreak;\n\t\t\tcase 'edit_pay_period':\n\t\t\t\tthis.setDefaultMenuEditPayPeriodIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetDefaultMenuEditPayPeriodIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( !this.editPermissionValidate( 'pay_period_schedule' ) ) {\n\t\t\tContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )\n\t\t}\n\t\tif ( grid_selected_length === 1 ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetDefaultMenuEditEmployeeIcon( context_btn, grid_selected_length ) {\n\t\tif ( !this.editChildPermissionValidate( 'user' ) ) {\n\t\t\tContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )\n\t\t}\n\n\t\tif ( grid_selected_length === 1 ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetDefaultMenuViewIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( pId === 'punch' || pId === 'schedule' || pId === 'pay_stub_amendment' ) {\n\t\t\tsuper.setDefaultMenuViewIcon( context_btn, grid_selected_length, pId );\n\t\t} else {\n\t\t\tif ( !this.viewPermissionValidate( pId ) || this.edit_only_mode ) {\n\t\t\t\tContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )\n\t\t\t}\n\n\t\t\tif ( grid_selected_length > 0 && this.viewOwnerOrChildPermissionValidate() ) {\n\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t\t} else {\n\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t\t}\n\t\t}\n\t}\n\n\tsetCustomEditMenuIcon( id, context_btn ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'import_icon':\n\t\t\t\tthis.setEditMenuImportIcon( context_btn );\n\t\t\t\tbreak;\n\t\t\tcase 'timesheet':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'punch' );\n\t\t\t\tbreak;\n\t\t\tcase 'schedule':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'schedule' );\n\t\t\t\tbreak;\n\t\t\tcase 'pay_stub_transaction':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'pay_stub_transaction' );\n\t\t\t\tbreak;\n\t\t\tcase 'pay_stub_amendment':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'pay_stub_amendment' );\n\t\t\t\tbreak;\n\t\t\tcase 'edit_employee':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'user' );\n\t\t\t\tbreak;\n\t\t\tcase 'edit_pay_period':\n\t\t\t\tthis.setEditMenuViewIcon( context_btn, 'pay_period_schedule' );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetDefaultMenuGeneratePayStubIcon( context_btn, grid_selected_length, pId ) {\n\n\t\tif ( grid_selected_length > 0 ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetCurrentEditRecordData() {\n\t\tthis.include_entries = true;\n\t\t//Set current edit record data to all widgets\n\t\tfor ( var key in this.current_edit_record ) {\n\t\t\tvar widget = this.edit_view_ui_dic[key];\n\t\t\tif ( Global.isSet( widget ) ) {\n\t\t\t\tswitch ( key ) {\n\t\t\t\t\tdefault:\n\t\t\t\t\t\twidget.setValue( this.current_edit_record[key] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.collectUIDataToCurrentEditRecord();\n\t\tthis.setEditViewDataDone();\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\n\t\tthis.edit_view_ui_dic.user_id.setEnabled( false );\n\t\tthis.edit_view_ui_dic.remittance_source_account_id.setEnabled( false );\n\t\tthis.edit_view_ui_dic.remittance_destination_account_id.setEnabled( false );\n\t\tthis.edit_view_ui_dic.currency_id.setEnabled( false );\n\t\tthis.edit_view_ui_dic.amount.setEnabled( false );\n\t\tthis.edit_view_ui_dic.confirmation_number.setEnabled( false );\n\t}\n\n\tonSaveClick( ignoreWarning ) {\n\t\tif ( this.is_mass_editing ) {\n\t\t\tthis.include_entries = false; // Note: not sure if we really need this, as a code search for this variable shows it only set in one other place, but not used. Was in original onSaveClick, so including it here for now.\n\t\t}\n\t\tsuper.onSaveClick( ignoreWarning );\n\t}\n\n\tonSaveAndContinue( ignoreWarning ) {\n\t\tvar $this = this;\n\t\tif ( !Global.isSet( ignoreWarning ) ) {\n\t\t\tignoreWarning = false;\n\t\t}\n\t\tthis.is_changed = false;\n\t\tthis.is_add = false;\n\t\tLocalCacheData.current_doing_context_action = 'save_and_continue';\n\t\tvar record = this.current_edit_record;\n\t\trecord = this.uniformVariable( record );\n\n\t\tthis.api['set' + this.api.key_name]( record, false, ignoreWarning, {\n\t\t\tonResult: function( result ) {\n\t\t\t\t$this.onSaveAndContinueResult( result );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonSaveAndContinueResult( result ) {\n\t\tvar $this = this;\n\t\tif ( result.isValid() ) {\n\t\t\tvar result_data = result.getResult();\n\t\t\tif ( result_data === true ) {\n\t\t\t\t$this.refresh_id = $this.current_edit_record.id;\n\n\t\t\t} else if ( TTUUID.isUUID( result_data ) && result_data != TTUUID.zero_id && result_data != TTUUID.not_exist_id ) {\n\t\t\t\t$this.refresh_id = result_data;\n\n\t\t\t}\n\t\t\t$this.search( false );\n\t\t\t// $this.editor.show_cover = false;\n\n\t\t\t$this.onSaveAndContinueDone( result );\n\t\t} else {\n\t\t\t$this.setErrorTips( result );\n\t\t\t$this.setErrorMenu();\n\t\t}\n\t}\n\n\t// onSaveAndNextResult( result ) {\n\t// \tvar $this = this;\n\t// \tif ( result.isValid() ) {\n\t// \t\tvar result_data = result.getResult();\n\t// \t\tif ( result_data === true ) {\n\t// \t\t\t$this.refresh_id = $this.current_edit_record.id;\n\t// \t\t} else if ( TTUUID.isUUID( result_data ) && result_data != TTUUID.zero_id && result_data != TTUUID.not_exist_id ) {\n\t// \t\t\t$this.refresh_id = result_data;\n\t// \t\t}\n\t// \t\t// $this.editor.show_cover = true;\n\t// \t\t$this.onRightArrowClick();\n\t// \t\t$this.search( false );\n\t// \t\t$this.onSaveAndNextDone( result );\n\t//\n\t// \t} else {\n\t// \t\t$this.setErrorTips( result );\n\t// \t\t$this.setErrorMenu();\n\t// \t}\n\t// },\n\n\tgetFilterColumnsFromDisplayColumns() {\n\t\tvar column_filter = {};\n\t\tcolumn_filter.pay_stub_transaction_date = true;\n\t\tcolumn_filter.pay_stub_start_date = true;\n\t\tcolumn_filter.pay_stub_end_date = true;\n\t\tcolumn_filter.id = true;\n\t\tcolumn_filter.status_id = true;\n\t\tcolumn_filter.is_owner = true;\n\t\tcolumn_filter.user_id = true;\n\t\tcolumn_filter.pay_stub_id = true;\n\t\tcolumn_filter.pay_period_id = true;\n\t\tcolumn_filter.pay_stub_run_id = true;\n\t\tcolumn_filter.currency_id = true;\n\t\tcolumn_filter.remittance_source_account_type_id = true;\n\t\t// Error: Unable to get property 'getGridParam' of undefined or null reference\n\t\tvar display_columns = [];\n\t\tif ( this.grid ) {\n\t\t\tdisplay_columns = this.grid.getGridParam( 'colModel' );\n\t\t}\n\n\t\tif ( display_columns ) {\n\t\t\tfor ( var i = 0; i < display_columns.length; i++ ) {\n\t\t\t\tcolumn_filter[display_columns[i].name] = true;\n\t\t\t}\n\t\t}\n\t\treturn column_filter;\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tvar $this = this;\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\n\t\tthis.current_edit_record[key] = c_value;\n\n\t\tif ( !doNotValidate ) {\n\t\t\tthis.validate();\n\t\t}\n\t}\n\n\tvalidate() {\n\t\tvar $this = this;\n\t\tvar record = {};\n\n\t\tif ( this.is_mass_editing ) {\n\t\t\tfor ( var key in this.edit_view_ui_dic ) {\n\n\t\t\t\tif ( !this.edit_view_ui_dic.hasOwnProperty( key ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tvar widget = this.edit_view_ui_dic[key];\n\t\t\t\tif ( Global.isSet( widget.isChecked ) ) {\n\t\t\t\t\tif ( widget.isChecked() && widget.getEnabled() ) {\n\t\t\t\t\t\trecord[key] = widget.getValue();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\trecord = this.current_edit_record;\n\t\t}\n\n\t\trecord = this.uniformVariable( record );\n\t\tthis.api['validate' + this.api.key_name]( record, {\n\t\t\tonResult: function( result ) {\n\t\t\t\t$this.validateResult( result );\n\t\t\t}\n\t\t} );\n\t}\n\n\tbuildEditViewUI() {\n\t\tsuper.buildEditViewUI();\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_pay_stub_transaction': { 'label': $.i18n._( 'Pay Stub Transaction' ) },\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.APIPayStub,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_pay_stub',\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\t\tvar tab_pay_stub_transaction = this.edit_view_tab.find( '#tab_pay_stub_transaction' );\n\t\tvar tab_pay_stub_transaction_column1 = tab_pay_stub_transaction.find( '.first-column' );\n\t\tvar form_item_input;\n\t\tthis.edit_view_tabs[0] = [];\n\t\tthis.edit_view_tabs[0].push( tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIUser,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_user',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: false,\n\t\t\tfield: 'user_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Employee' ), form_item_input, tab_pay_stub_transaction_column1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'status_id', set_empty: false } );\n\t\tform_item_input.setSourceData( $this.status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIRemittanceSourceAccount,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_remittance_source_account',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: false,\n\t\t\tfield: 'remittance_source_account_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Source Account' ), form_item_input, tab_pay_stub_transaction_column1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIRemittanceDestinationAccount,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_remittance_destination_account',\n\t\t\tshow_search_inputs: false,\n\t\t\tset_empty: false,\n\t\t\tfield: 'remittance_destination_account_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Destination Account' ), form_item_input, tab_pay_stub_transaction_column1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tfield: 'currency_id',\n\t\t\tset_empty: false,\n\t\t\tlayout_name: 'global_currency',\n\t\t\tallow_multiple_selection: false,\n\t\t\tshow_search_inputs: false,\n\t\t\tapi_class: TTAPI.APICurrency\n\t\t} );\n\t\t;\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Currency' ), form_item_input, tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'amount', width: 300 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Amount' ), form_item_input, tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\t\tform_item_input.TDatePicker( { field: 'transaction_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Transaction Date' ), form_item_input, tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'confirmation_number', width: 300 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Confirmation #' ), form_item_input, tab_pay_stub_transaction_column1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'note', width: 300 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Note' ), form_item_input, tab_pay_stub_transaction_column1 );\n\t}\n\n\tbuildSearchFields() {\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: 'transaction_status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tlayout_name: 'global_option_column',\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._( 'Source Account' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'remittance_source_account_id',\n\t\t\t\tlayout_name: 'global_remittance_source_account',\n\t\t\t\tapi_class: TTAPI.APIRemittanceSourceAccount,\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._( 'Pay Period' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'pay_period_id',\n\t\t\t\tlayout_name: 'global_Pay_period',\n\t\t\t\tapi_class: TTAPI.APIPayPeriod,\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._( 'Employee' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'user_id',\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\tlayout_name: 'global_user',\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._( 'Currency' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'currency_id',\n\t\t\t\tapi_class: TTAPI.APICurrency,\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tlayout_name: 'global_currency',\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._( 'Transaction Date' ),\n\t\t\t\tin_column: 2,\n\t\t\t\tfield: 'transaction_date',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\tadv_search: false,\n\t\t\t\tlayout_name: 'global_option_column',\n\t\t\t\tform_item_type: FormItemType.DATE_PICKER\n\t\t\t} )\n\n\t\t];\n\t}\n\n\tonCustomContextClick( id ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'timesheet':\n\t\t\tcase 'schedule':\n\t\t\tcase 'pay_stub_amendment':\n\t\t\tcase 'edit_employee':\n\t\t\tcase 'generate_pay_stub':\n\t\t\tcase 'pay_stub_transaction':\n\t\t\tcase 'edit_pay_period':\n\t\t\tcase 'pay_stub':\n\t\t\t\tthis.onNavigationClick( id );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tonViewClick( editId, noRefreshUI ) {\n\t\tthis.onNavigationClick( 'view' );\n\t}\n\n\tonNavigationClick( iconName ) {\n\t\tvar $this = this;\n\t\tvar grid_selected_id_array;\n\t\tvar filter = {};\n\t\tvar ids = [];\n\t\tvar user_ids = [];\n\t\tvar base_date;\n\t\tvar pay_period_ids = [];\n\t\tvar pay_stub_ids = [];\n\n\t\tif ( $this.edit_view && $this.current_edit_record.id ) {\n\t\t\tids.push( $this.current_edit_record.id );\n\t\t\tuser_ids.push( $this.current_edit_record.user_id );\n\t\t\tpay_period_ids.push( $this.current_edit_record.pay_period_id );\n\t\t\tpay_stub_ids.push( $this.current_edit_record.pay_stub_id );\n\t\t\tbase_date = $this.current_edit_record.pay_stub_start_date;\n\t\t} else {\n\t\t\tgrid_selected_id_array = this.getGridSelectIdArray();\n\t\t\t$.each( grid_selected_id_array, function( index, value ) {\n\t\t\t\tvar grid_selected_row = $this.getRecordFromGridById( value );\n\t\t\t\tids.push( grid_selected_row.id );\n\t\t\t\tuser_ids.push( grid_selected_row.user_id );\n\t\t\t\tpay_period_ids.push( grid_selected_row.pay_period_id );\n\t\t\t\tpay_stub_ids.push( grid_selected_row.pay_stub_id );\n\t\t\t\tbase_date = grid_selected_row.pay_stub_start_date;\n\t\t\t} );\n\t\t}\n\n\t\tvar args = { filter_data: { id: ids } };\n\n\t\tvar post_data;\n\t\tswitch ( iconName ) {\n\t\t\tcase 'pay_stub':\n\t\t\t\tfilter.filter_data = {};\n\t\t\t\tfilter.filter_data.id = { value: pay_stub_ids };\n\t\t\t\tfilter.select_date = base_date;\n\t\t\t\tGlobal.addViewTab( this.viewId, $.i18n._( 'Pay Stub Transactions' ), window.location.href );\n\t\t\t\tIndexViewController.goToView( 'PayStub', filter );\n\t\t\t\tbreak;\n\t\t\tcase 'edit_employee':\n\t\t\t\tif ( user_ids.length > 0 ) {\n\t\t\t\t\tIndexViewController.openEditView( this, 'Employee', user_ids[0] );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'edit_pay_period':\n\t\t\t\tif ( pay_period_ids.length > 0 ) {\n\t\t\t\t\tIndexViewController.openEditView( this, 'PayPeriods', pay_period_ids[0] );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'timesheet':\n\t\t\t\tif ( user_ids.length > 0 ) {\n\t\t\t\t\tfilter.user_id = user_ids[0];\n\t\t\t\t\tfilter.base_date = base_date;\n\t\t\t\t\tGlobal.addViewTab( $this.viewId, $.i18n._( 'Pay Stub Transactions' ), window.location.href );\n\t\t\t\t\tIndexViewController.goToView( 'TimeSheet', filter );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'schedule':\n\t\t\t\tfilter.filter_data = {};\n\t\t\t\tvar include_users = { value: user_ids };\n\t\t\t\tfilter.filter_data.include_user_ids = include_users;\n\t\t\t\tfilter.select_date = base_date;\n\t\t\t\tGlobal.addViewTab( this.viewId, $.i18n._( 'Pay Stub Transactions' ), window.location.href );\n\t\t\t\tIndexViewController.goToView( 'Schedule', filter );\n\t\t\t\tbreak;\n\t\t\tcase 'pay_stub_amendment':\n\t\t\t\tfilter.filter_data = {};\n\t\t\t\tfilter.filter_data.user_id = user_ids[0];\n\t\t\t\tfilter.filter_data.pay_period_id = pay_period_ids[0];\n\t\t\t\tGlobal.addViewTab( this.viewId, $.i18n._( 'Pay Stub Transactions' ), window.location.href );\n\t\t\t\tIndexViewController.goToView( 'PayStubAmendment', filter );\n\t\t\t\tbreak;\n\t\t\tcase 'view':\n\t\t\t\tthis.setCurrentEditViewState( 'view' );\n\t\t\t\tthis.openEditView();\n\t\t\t\tfilter.filter_data = {};\n\n\t\t\t\tvar grid_selected_id_array = this.getGridSelectIdArray();\n\t\t\t\tvar selectedId = grid_selected_id_array[0];\n\t\t\t\tfilter.filter_data.id = [selectedId];\n\n\t\t\t\tthis.api['get' + this.api.key_name]( filter, {\n\t\t\t\t\tonResult: function( result ) {\n\t\t\t\t\t\tvar result_data = result.getResult();\n\t\t\t\t\t\tif ( !result_data ) {\n\t\t\t\t\t\t\tresult_data = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresult_data = result_data[0];\n\n\t\t\t\t\t\tif ( !result_data ) {\n\t\t\t\t\t\t\tTAlertManager.showAlert( $.i18n._( 'Record does not exist' ) );\n\t\t\t\t\t\t\t$this.onCancelClick();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( $this.sub_view_mode && $this.parent_key ) {\n\t\t\t\t\t\t\tresult_data[$this.parent_key] = $this.parent_value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t$this.current_edit_record = result_data;\n\n\t\t\t\t\t\t$this.initEditView();\n\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tbreak;\n\t\t\tcase 'pay_stub_transaction':\n\t\t\t\tIndexViewController.openEditView( this, 'PayStubTransaction', user_ids[0] );\n\t\t\t\tbreak;\n\t\t}\n\n\t}\n\n}\n\nPayStubTransactionViewController.loadView = function() {\n\tGlobal.loadViewSource( 'PayStubTransaction', 'PayStubTransactionView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result, args );\n\t\tGlobal.contentContainer().html( template );\n\t} );\n\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNzkwMC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNQLDJCQUEyQjtBQUMzQixFQUFFLENBQUM7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLENBQUM7QUFDNUIsMEJBQTBCLENBQUM7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLENBQUM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsWUFBWSxDQUFDO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxZQUFZLENBQUM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksQ0FBQztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsWUFBWSxDQUFDO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxZQUFZLENBQUM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFlBQVksQ0FBQztBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9CQUFvQiw0QkFBNEI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsU0FBUyxDQUFDLG1DQUFtQztBQUM5RTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBLCtCQUErQix1Q0FBdUM7QUFDdEU7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSiw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSiw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBLGdDQUFnQyw4QkFBOEI7QUFDOUQsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0EsaUNBQWlDLDRCQUE0QjtBQUM3RCw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQSxnQ0FBZ0MsMkNBQTJDO0FBQzNFLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBLCtCQUErQiw0QkFBNEI7QUFDM0QsNkJBQTZCLENBQUM7QUFDOUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsR0FBRyxDQUFDO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGVBQWUsZUFBZTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQSxvQ0FBb0MsQ0FBQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyxDQUFDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7QUFDQTtBQUNBLG9DQUFvQyxDQUFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxDQUFDO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0NBQWdDLENBQUM7QUFDakM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0EsR0FBRzs7QUFFSCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS92aWV3cy9wYXlyb2xsL3BheV9zdHViX3RyYW5zYWN0aW9uL1BheVN0dWJUcmFuc2FjdGlvblZpZXdDb250cm9sbGVyLmpzP2RjYjUiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFBheVN0dWJUcmFuc2FjdGlvblZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNwYXlfc3R1Yl90cmFuc2FjdGlvbl92aWV3X2NvbnRhaW5lcicsXG5cblx0XHRcdHN0YXR1c19hcnJheTogbnVsbCxcblx0XHRcdGN1cnJlbmN5X2FycmF5OiBudWxsLFxuXHRcdFx0dXNlcl9zdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHR1c2VyX2dyb3VwX2FycmF5OiBudWxsLFxuXHRcdFx0dHlwZV9hcnJheTogbnVsbCxcblxuXHRcdFx0dXNlcl9hcGk6IG51bGwsXG5cdFx0XHR1c2VyX2dyb3VwX2FwaTogbnVsbCxcblx0XHRcdGNvbXBhbnlfYXBpOiBudWxsLFxuXHRcdFx0cGF5X3N0dWJfZW50cnlfYXBpOiBudWxsLFxuXG5cdFx0XHRpbmNsdWRlX2VudHJpZXM6IHRydWVcblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCgpIHtcblx0XHQvL3RoaXMuX3N1cGVyKCdpbml0aWFsaXplJyApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RwbCA9ICdQYXlTdHViVHJhbnNhY3Rpb25FZGl0Vmlldy5odG1sJztcblx0XHR0aGlzLnBlcm1pc3Npb25faWQgPSAncGF5X3N0dWInO1xuXHRcdHRoaXMudmlld0lkID0gJ1BheVN0dWJUcmFuc2FjdGlvbic7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdQYXlTdHViVHJhbnNhY3Rpb25WaWV3Jztcblx0XHR0aGlzLnRhYmxlX25hbWVfa2V5ID0gJ3BheV9zdHViX3RyYW5zYWN0aW9uJztcblx0XHR0aGlzLmNvbnRleHRfbWVudV9uYW1lID0gJC5pMThuLl8oICdQYXkgU3R1YiBUcmFuc2FjdGlvbicgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ1BheSBTdHViIFRyYW5zYWN0aW9ucycgKTtcblxuXHRcdHRoaXMuYXBpID0gVFRBUEkuQVBJUGF5U3R1YlRyYW5zYWN0aW9uO1xuXHRcdHRoaXMuY3VycmVuY3lfYXBpID0gVFRBUEkuQVBJQ3VycmVuY3k7XG5cdFx0dGhpcy5yZW1pdHRhbmNlX3NvdXJjZV9hY2NvdW50X2FwaSA9IFRUQVBJLkFQSVJlbWl0dGFuY2VTb3VyY2VBY2NvdW50O1xuXHRcdHRoaXMucmVtaXR0YW5jZV9kZXN0aW5hdGlvbl9hY2NvdW50X2FwaSA9IFRUQVBJLkFQSVJlbWl0dGFuY2VEZXN0aW5hdGlvbkFjY291bnQ7XG5cdFx0dGhpcy51c2VyX2FwaSA9IFRUQVBJLkFQSVVzZXI7XG5cdFx0dGhpcy5wYXlfc3R1Yl9lbnRyeV9hcGkgPSBUVEFQSS5BUElQYXlTdHViRW50cnk7XG5cdFx0dGhpcy51c2VyX2dyb3VwX2FwaSA9IFRUQVBJLkFQSVVzZXJHcm91cDtcblx0XHR0aGlzLmNvbXBhbnlfYXBpID0gVFRBUEkuQVBJQ29tcGFueTtcblx0XHR0aGlzLnBheV9wZXJpb2RfYXBpID0gVFRBUEkuQVBJUGF5UGVyaW9kO1xuXG5cdFx0dGhpcy5pbml0UGVybWlzc2lvbigpO1xuXHRcdHRoaXMucmVuZGVyKCk7XG5cdFx0dGhpcy5idWlsZENvbnRleHRNZW51KCk7XG5cblx0XHR0aGlzLmluaXREYXRhKCk7XG5cdH1cblxuXHRpbml0UGVybWlzc2lvbigpIHtcblx0XHRzdXBlci5pbml0UGVybWlzc2lvbigpO1xuXG5cdFx0aWYgKCBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggdGhpcy5wZXJtaXNzaW9uX2lkLCAndmlldycgKSB8fCBQZXJtaXNzaW9uTWFuYWdlci52YWxpZGF0ZSggdGhpcy5wZXJtaXNzaW9uX2lkLCAndmlld19jaGlsZCcgKSApIHtcblx0XHRcdHRoaXMuc2hvd19zZWFyY2hfdGFiID0gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zaG93X3NlYXJjaF90YWIgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRpbml0T3B0aW9ucyggY2FsbEJhY2sgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9uKCAnc3RhdHVzJywgJ3RyYW5zYWN0aW9uX3N0YXR1c19pZCcgKTtcblx0fVxuXG5cdGdldEN1c3RvbUNvbnRleHRNZW51TW9kZWwoKSB7XG5cdFx0dmFyIGNvbnRleHRfbWVudV9tb2RlbCA9IHtcblx0XHRcdGV4Y2x1ZGU6IFsnZGVmYXVsdCddLFxuXHRcdFx0aW5jbHVkZTogW1xuXHRcdFx0XHQndmlldycsXG5cdFx0XHRcdCdlZGl0Jyxcblx0XHRcdFx0J21hc3NfZWRpdCcsXG5cdFx0XHRcdCdzYXZlJyxcblx0XHRcdFx0J3NhdmVfYW5kX2NvbnRpbnVlJyxcblx0XHRcdFx0J3NhdmVfYW5kX25leHQnLFxuXHRcdFx0XHQnY2FuY2VsJyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0p1bXAgVG8nICksXG5cdFx0XHRcdFx0aWQ6ICdqdW1wX3RvX2hlYWRlcicsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdqdW1wX3RvJyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXBfaGVhZGVyOiB0cnVlLFxuXHRcdFx0XHRcdHBlcm1pc3Npb25fcmVzdWx0OiBmYWxzZSAvLyB0byBoaWRlIGl0IGluIGxlZ2FjeSBjb250ZXh0IG1lbnUgYW5kIGF2b2lkIGVycm9ycyBpbiBsZWdhY3kgcGFyc2Vycy5cblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1RpbWVTaGVldCcgKSxcblx0XHRcdFx0XHRpZDogJ3RpbWVzaGVldCcsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdqdW1wX3RvJyxcblx0XHRcdFx0XHRncm91cDogJ25hdmlnYXRpb24nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnU2NoZWR1bGUnICksXG5cdFx0XHRcdFx0aWQ6ICdzY2hlZHVsZScsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdqdW1wX3RvJyxcblx0XHRcdFx0XHRncm91cDogJ25hdmlnYXRpb24nLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnUGF5IFN0dWJzJyApLFxuXHRcdFx0XHRcdGlkOiAncGF5X3N0dWInLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAnanVtcF90bycsXG5cdFx0XHRcdFx0Z3JvdXA6ICduYXZpZ2F0aW9uJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1BheSBTdHViIEFtZW5kbWVudHMnICksXG5cdFx0XHRcdFx0aWQ6ICdwYXlfc3R1Yl9hbWVuZG1lbnQnLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAnanVtcF90bycsXG5cdFx0XHRcdFx0Z3JvdXA6ICduYXZpZ2F0aW9uJyxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0VkaXQgRW1wbG95ZWUnICksXG5cdFx0XHRcdFx0aWQ6ICdlZGl0X2VtcGxveWVlJyxcblx0XHRcdFx0XHRtZW51X2FsaWduOiAncmlnaHQnLFxuXHRcdFx0XHRcdGFjdGlvbl9ncm91cDogJ2p1bXBfdG8nLFxuXHRcdFx0XHRcdGdyb3VwOiAnbmF2aWdhdGlvbicsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdFZGl0IFBheSBQZXJpb2QnICksXG5cdFx0XHRcdFx0aWQ6ICdlZGl0X3BheV9wZXJpb2QnLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdyaWdodCcsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwOiAnanVtcF90bycsXG5cdFx0XHRcdFx0Z3JvdXA6ICduYXZpZ2F0aW9uJyxcblx0XHRcdFx0fVxuXHRcdFx0XVxuXHRcdH07XG5cblx0XHRyZXR1cm4gY29udGV4dF9tZW51X21vZGVsO1xuXHR9XG5cblx0c2V0Q3VzdG9tRGVmYXVsdE1lbnVJY29uKCBpZCwgY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoICkge1xuXHRcdHN3aXRjaCAoIGlkICkge1xuXHRcdFx0Y2FzZSAncGF5X3N0dWJfdHJhbnNhY3Rpb24nOlxuXHRcdFx0Y2FzZSAncGF5X3N0dWInOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3RpbWVzaGVldCc6XG5cdFx0XHRcdHRoaXMuc2V0RGVmYXVsdE1lbnVWaWV3SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCAncHVuY2gnICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2NoZWR1bGUnOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCwgJ3NjaGVkdWxlJyApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3BheV9zdHViX2FtZW5kbWVudCc6XG5cdFx0XHRcdHRoaXMuc2V0RGVmYXVsdE1lbnVWaWV3SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCAncGF5X3N0dWJfYW1lbmRtZW50JyApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2VkaXRfZW1wbG95ZWUnOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51RWRpdEVtcGxveWVlSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCAndXNlcicgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdlZGl0X3BheV9wZXJpb2QnOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51RWRpdFBheVBlcmlvZEljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCApO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRzZXREZWZhdWx0TWVudUVkaXRQYXlQZXJpb2RJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGgsIHBJZCApIHtcblx0XHRpZiAoICF0aGlzLmVkaXRQZXJtaXNzaW9uVmFsaWRhdGUoICdwYXlfcGVyaW9kX3NjaGVkdWxlJyApICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmhpZGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKVxuXHRcdH1cblx0XHRpZiAoIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoID09PSAxICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldERlZmF1bHRNZW51RWRpdEVtcGxveWVlSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoICkge1xuXHRcdGlmICggIXRoaXMuZWRpdENoaWxkUGVybWlzc2lvblZhbGlkYXRlKCAndXNlcicgKSApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5oaWRlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlIClcblx0XHR9XG5cblx0XHRpZiAoIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoID09PSAxICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldERlZmF1bHRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCwgcElkICkge1xuXHRcdGlmICggcElkID09PSAncHVuY2gnIHx8IHBJZCA9PT0gJ3NjaGVkdWxlJyB8fCBwSWQgPT09ICdwYXlfc3R1Yl9hbWVuZG1lbnQnICkge1xuXHRcdFx0c3VwZXIuc2V0RGVmYXVsdE1lbnVWaWV3SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCAhdGhpcy52aWV3UGVybWlzc2lvblZhbGlkYXRlKCBwSWQgKSB8fCB0aGlzLmVkaXRfb25seV9tb2RlICkge1xuXHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuaGlkZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApXG5cdFx0XHR9XG5cblx0XHRcdGlmICggZ3JpZF9zZWxlY3RlZF9sZW5ndGggPiAwICYmIHRoaXMudmlld093bmVyT3JDaGlsZFBlcm1pc3Npb25WYWxpZGF0ZSgpICkge1xuXHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldEN1c3RvbUVkaXRNZW51SWNvbiggaWQsIGNvbnRleHRfYnRuICkge1xuXHRcdHN3aXRjaCAoIGlkICkge1xuXHRcdFx0Y2FzZSAnaW1wb3J0X2ljb24nOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51SW1wb3J0SWNvbiggY29udGV4dF9idG4gKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd0aW1lc2hlZXQnOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCAncHVuY2gnICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2NoZWR1bGUnOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCAnc2NoZWR1bGUnICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncGF5X3N0dWJfdHJhbnNhY3Rpb24nOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51Vmlld0ljb24oIGNvbnRleHRfYnRuLCAncGF5X3N0dWJfdHJhbnNhY3Rpb24nICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncGF5X3N0dWJfYW1lbmRtZW50Jzpcblx0XHRcdFx0dGhpcy5zZXRFZGl0TWVudVZpZXdJY29uKCBjb250ZXh0X2J0biwgJ3BheV9zdHViX2FtZW5kbWVudCcgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdlZGl0X2VtcGxveWVlJzpcblx0XHRcdFx0dGhpcy5zZXRFZGl0TWVudVZpZXdJY29uKCBjb250ZXh0X2J0biwgJ3VzZXInICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnZWRpdF9wYXlfcGVyaW9kJzpcblx0XHRcdFx0dGhpcy5zZXRFZGl0TWVudVZpZXdJY29uKCBjb250ZXh0X2J0biwgJ3BheV9wZXJpb2Rfc2NoZWR1bGUnICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNldERlZmF1bHRNZW51R2VuZXJhdGVQYXlTdHViSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKSB7XG5cblx0XHRpZiAoIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoID4gMCApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXRDdXJyZW50RWRpdFJlY29yZERhdGEoKSB7XG5cdFx0dGhpcy5pbmNsdWRlX2VudHJpZXMgPSB0cnVlO1xuXHRcdC8vU2V0IGN1cnJlbnQgZWRpdCByZWNvcmQgZGF0YSB0byBhbGwgd2lkZ2V0c1xuXHRcdGZvciAoIHZhciBrZXkgaW4gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkICkge1xuXHRcdFx0dmFyIHdpZGdldCA9IHRoaXMuZWRpdF92aWV3X3VpX2RpY1trZXldO1xuXHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIHdpZGdldCApICkge1xuXHRcdFx0XHRzd2l0Y2ggKCBrZXkgKSB7XG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHdpZGdldC5zZXRWYWx1ZSggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5jb2xsZWN0VUlEYXRhVG9DdXJyZW50RWRpdFJlY29yZCgpO1xuXHRcdHRoaXMuc2V0RWRpdFZpZXdEYXRhRG9uZSgpO1xuXHR9XG5cblx0c2V0RWRpdFZpZXdEYXRhRG9uZSgpIHtcblx0XHRzdXBlci5zZXRFZGl0Vmlld0RhdGFEb25lKCk7XG5cblx0XHR0aGlzLmVkaXRfdmlld191aV9kaWMudXNlcl9pZC5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5yZW1pdHRhbmNlX3NvdXJjZV9hY2NvdW50X2lkLnNldEVuYWJsZWQoIGZhbHNlICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljLnJlbWl0dGFuY2VfZGVzdGluYXRpb25fYWNjb3VudF9pZC5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5jdXJyZW5jeV9pZC5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5hbW91bnQuc2V0RW5hYmxlZCggZmFsc2UgKTtcblx0XHR0aGlzLmVkaXRfdmlld191aV9kaWMuY29uZmlybWF0aW9uX251bWJlci5zZXRFbmFibGVkKCBmYWxzZSApO1xuXHR9XG5cblx0b25TYXZlQ2xpY2soIGlnbm9yZVdhcm5pbmcgKSB7XG5cdFx0aWYgKCB0aGlzLmlzX21hc3NfZWRpdGluZyApIHtcblx0XHRcdHRoaXMuaW5jbHVkZV9lbnRyaWVzID0gZmFsc2U7IC8vIE5vdGU6IG5vdCBzdXJlIGlmIHdlIHJlYWxseSBuZWVkIHRoaXMsIGFzIGEgY29kZSBzZWFyY2ggZm9yIHRoaXMgdmFyaWFibGUgc2hvd3MgaXQgb25seSBzZXQgaW4gb25lIG90aGVyIHBsYWNlLCBidXQgbm90IHVzZWQuIFdhcyBpbiBvcmlnaW5hbCBvblNhdmVDbGljaywgc28gaW5jbHVkaW5nIGl0IGhlcmUgZm9yIG5vdy5cblx0XHR9XG5cdFx0c3VwZXIub25TYXZlQ2xpY2soIGlnbm9yZVdhcm5pbmcgKTtcblx0fVxuXG5cdG9uU2F2ZUFuZENvbnRpbnVlKCBpZ25vcmVXYXJuaW5nICkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0aWYgKCAhR2xvYmFsLmlzU2V0KCBpZ25vcmVXYXJuaW5nICkgKSB7XG5cdFx0XHRpZ25vcmVXYXJuaW5nID0gZmFsc2U7XG5cdFx0fVxuXHRcdHRoaXMuaXNfY2hhbmdlZCA9IGZhbHNlO1xuXHRcdHRoaXMuaXNfYWRkID0gZmFsc2U7XG5cdFx0TG9jYWxDYWNoZURhdGEuY3VycmVudF9kb2luZ19jb250ZXh0X2FjdGlvbiA9ICdzYXZlX2FuZF9jb250aW51ZSc7XG5cdFx0dmFyIHJlY29yZCA9IHRoaXMuY3VycmVudF9lZGl0X3JlY29yZDtcblx0XHRyZWNvcmQgPSB0aGlzLnVuaWZvcm1WYXJpYWJsZSggcmVjb3JkICk7XG5cblx0XHR0aGlzLmFwaVsnc2V0JyArIHRoaXMuYXBpLmtleV9uYW1lXSggcmVjb3JkLCBmYWxzZSwgaWdub3JlV2FybmluZywge1xuXHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRcdCR0aGlzLm9uU2F2ZUFuZENvbnRpbnVlUmVzdWx0KCByZXN1bHQgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRvblNhdmVBbmRDb250aW51ZVJlc3VsdCggcmVzdWx0ICkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0aWYgKCByZXN1bHQuaXNWYWxpZCgpICkge1xuXHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdFx0aWYgKCByZXN1bHRfZGF0YSA9PT0gdHJ1ZSApIHtcblx0XHRcdFx0JHRoaXMucmVmcmVzaF9pZCA9ICR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQ7XG5cblx0XHRcdH0gZWxzZSBpZiAoIFRUVVVJRC5pc1VVSUQoIHJlc3VsdF9kYXRhICkgJiYgcmVzdWx0X2RhdGEgIT0gVFRVVUlELnplcm9faWQgJiYgcmVzdWx0X2RhdGEgIT0gVFRVVUlELm5vdF9leGlzdF9pZCApIHtcblx0XHRcdFx0JHRoaXMucmVmcmVzaF9pZCA9IHJlc3VsdF9kYXRhO1xuXG5cdFx0XHR9XG5cdFx0XHQkdGhpcy5zZWFyY2goIGZhbHNlICk7XG5cdFx0XHQvLyAgICAgJHRoaXMuZWRpdG9yLnNob3dfY292ZXIgPSBmYWxzZTtcblxuXHRcdFx0JHRoaXMub25TYXZlQW5kQ29udGludWVEb25lKCByZXN1bHQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuc2V0RXJyb3JUaXBzKCByZXN1bHQgKTtcblx0XHRcdCR0aGlzLnNldEVycm9yTWVudSgpO1xuXHRcdH1cblx0fVxuXG5cdC8vIG9uU2F2ZUFuZE5leHRSZXN1bHQoIHJlc3VsdCApIHtcblx0Ly8gXHR2YXIgJHRoaXMgPSB0aGlzO1xuXHQvLyBcdGlmICggcmVzdWx0LmlzVmFsaWQoKSApIHtcblx0Ly8gXHRcdHZhciByZXN1bHRfZGF0YSA9IHJlc3VsdC5nZXRSZXN1bHQoKTtcblx0Ly8gXHRcdGlmICggcmVzdWx0X2RhdGEgPT09IHRydWUgKSB7XG5cdC8vIFx0XHRcdCR0aGlzLnJlZnJlc2hfaWQgPSAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkO1xuXHQvLyBcdFx0fSBlbHNlIGlmICggVFRVVUlELmlzVVVJRCggcmVzdWx0X2RhdGEgKSAmJiByZXN1bHRfZGF0YSAhPSBUVFVVSUQuemVyb19pZCAmJiByZXN1bHRfZGF0YSAhPSBUVFVVSUQubm90X2V4aXN0X2lkICkge1xuXHQvLyBcdFx0XHQkdGhpcy5yZWZyZXNoX2lkID0gcmVzdWx0X2RhdGE7XG5cdC8vIFx0XHR9XG5cdC8vIFx0XHQvLyAgICAgJHRoaXMuZWRpdG9yLnNob3dfY292ZXIgPSB0cnVlO1xuXHQvLyBcdFx0JHRoaXMub25SaWdodEFycm93Q2xpY2soKTtcblx0Ly8gXHRcdCR0aGlzLnNlYXJjaCggZmFsc2UgKTtcblx0Ly8gXHRcdCR0aGlzLm9uU2F2ZUFuZE5leHREb25lKCByZXN1bHQgKTtcblx0Ly9cblx0Ly8gXHR9IGVsc2Uge1xuXHQvLyBcdFx0JHRoaXMuc2V0RXJyb3JUaXBzKCByZXN1bHQgKTtcblx0Ly8gXHRcdCR0aGlzLnNldEVycm9yTWVudSgpO1xuXHQvLyBcdH1cblx0Ly8gfSxcblxuXHRnZXRGaWx0ZXJDb2x1bW5zRnJvbURpc3BsYXlDb2x1bW5zKCkge1xuXHRcdHZhciBjb2x1bW5fZmlsdGVyID0ge307XG5cdFx0Y29sdW1uX2ZpbHRlci5wYXlfc3R1Yl90cmFuc2FjdGlvbl9kYXRlID0gdHJ1ZTtcblx0XHRjb2x1bW5fZmlsdGVyLnBheV9zdHViX3N0YXJ0X2RhdGUgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIucGF5X3N0dWJfZW5kX2RhdGUgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIuaWQgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIuc3RhdHVzX2lkID0gdHJ1ZTtcblx0XHRjb2x1bW5fZmlsdGVyLmlzX293bmVyID0gdHJ1ZTtcblx0XHRjb2x1bW5fZmlsdGVyLnVzZXJfaWQgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIucGF5X3N0dWJfaWQgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIucGF5X3BlcmlvZF9pZCA9IHRydWU7XG5cdFx0Y29sdW1uX2ZpbHRlci5wYXlfc3R1Yl9ydW5faWQgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIuY3VycmVuY3lfaWQgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIucmVtaXR0YW5jZV9zb3VyY2VfYWNjb3VudF90eXBlX2lkID0gdHJ1ZTtcblx0XHQvLyBFcnJvcjogVW5hYmxlIHRvIGdldCBwcm9wZXJ0eSAnZ2V0R3JpZFBhcmFtJyBvZiB1bmRlZmluZWQgb3IgbnVsbCByZWZlcmVuY2Vcblx0XHR2YXIgZGlzcGxheV9jb2x1bW5zID0gW107XG5cdFx0aWYgKCB0aGlzLmdyaWQgKSB7XG5cdFx0XHRkaXNwbGF5X2NvbHVtbnMgPSB0aGlzLmdyaWQuZ2V0R3JpZFBhcmFtKCAnY29sTW9kZWwnICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBkaXNwbGF5X2NvbHVtbnMgKSB7XG5cdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBkaXNwbGF5X2NvbHVtbnMubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdGNvbHVtbl9maWx0ZXJbZGlzcGxheV9jb2x1bW5zW2ldLm5hbWVdID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGNvbHVtbl9maWx0ZXI7XG5cdH1cblxuXHRvbkZvcm1JdGVtQ2hhbmdlKCB0YXJnZXQsIGRvTm90VmFsaWRhdGUgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR0aGlzLnNldElzQ2hhbmdlZCggdGFyZ2V0ICk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdGluZ0ZpZWxkc1doZW5Gb3JtQ2hhbmdlKCB0YXJnZXQgKTtcblx0XHR2YXIga2V5ID0gdGFyZ2V0LmdldEZpZWxkKCk7XG5cdFx0dmFyIGNfdmFsdWUgPSB0YXJnZXQuZ2V0VmFsdWUoKTtcblxuXHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFtrZXldID0gY192YWx1ZTtcblxuXHRcdGlmICggIWRvTm90VmFsaWRhdGUgKSB7XG5cdFx0XHR0aGlzLnZhbGlkYXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0dmFsaWRhdGUoKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgcmVjb3JkID0ge307XG5cblx0XHRpZiAoIHRoaXMuaXNfbWFzc19lZGl0aW5nICkge1xuXHRcdFx0Zm9yICggdmFyIGtleSBpbiB0aGlzLmVkaXRfdmlld191aV9kaWMgKSB7XG5cblx0XHRcdFx0aWYgKCAhdGhpcy5lZGl0X3ZpZXdfdWlfZGljLmhhc093blByb3BlcnR5KCBrZXkgKSApIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciB3aWRnZXQgPSB0aGlzLmVkaXRfdmlld191aV9kaWNba2V5XTtcblx0XHRcdFx0aWYgKCBHbG9iYWwuaXNTZXQoIHdpZGdldC5pc0NoZWNrZWQgKSApIHtcblx0XHRcdFx0XHRpZiAoIHdpZGdldC5pc0NoZWNrZWQoKSAmJiB3aWRnZXQuZ2V0RW5hYmxlZCgpICkge1xuXHRcdFx0XHRcdFx0cmVjb3JkW2tleV0gPSB3aWRnZXQuZ2V0VmFsdWUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVjb3JkID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkO1xuXHRcdH1cblxuXHRcdHJlY29yZCA9IHRoaXMudW5pZm9ybVZhcmlhYmxlKCByZWNvcmQgKTtcblx0XHR0aGlzLmFwaVsndmFsaWRhdGUnICsgdGhpcy5hcGkua2V5X25hbWVdKCByZWNvcmQsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHQkdGhpcy52YWxpZGF0ZVJlc3VsdCggcmVzdWx0ICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0YnVpbGRFZGl0Vmlld1VJKCkge1xuXHRcdHN1cGVyLmJ1aWxkRWRpdFZpZXdVSSgpO1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHR2YXIgdGFiX21vZGVsID0ge1xuXHRcdFx0J3RhYl9wYXlfc3R1Yl90cmFuc2FjdGlvbic6IHsgJ2xhYmVsJzogJC5pMThuLl8oICdQYXkgU3R1YiBUcmFuc2FjdGlvbicgKSB9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHRoaXMubmF2aWdhdGlvbi5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5U3R1Yixcblx0XHRcdGlkOiB0aGlzLnNjcmlwdF9uYW1lICsgJ19uYXZpZ2F0aW9uJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9wYXlfc3R1YicsXG5cdFx0XHRuYXZpZ2F0aW9uX21vZGU6IHRydWUsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWVcblx0XHR9ICk7XG5cblx0XHR0aGlzLnNldE5hdmlnYXRpb24oKTtcblxuXHRcdC8vVGFiIDAgc3RhcnRcblx0XHR2YXIgdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uJyApO1xuXHRcdHZhciB0YWJfcGF5X3N0dWJfdHJhbnNhY3Rpb25fY29sdW1uMSA9IHRhYl9wYXlfc3R1Yl90cmFuc2FjdGlvbi5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0O1xuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0gPSBbXTtcblx0XHR0aGlzLmVkaXRfdmlld190YWJzWzBdLnB1c2goIHRhYl9wYXlfc3R1Yl90cmFuc2FjdGlvbl9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElVc2VyLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3VzZXInLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogZmFsc2UsXG5cdFx0XHRmaWVsZDogJ3VzZXJfaWQnXG5cdFx0fSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRW1wbG95ZWUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdzdGF0dXNfaWQnLCBzZXRfZW1wdHk6IGZhbHNlIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMuc3RhdHVzX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdTdGF0dXMnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uX2NvbHVtbjEgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVJlbWl0dGFuY2VTb3VyY2VBY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3JlbWl0dGFuY2Vfc291cmNlX2FjY291bnQnLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiBmYWxzZSxcblx0XHRcdHNldF9lbXB0eTogZmFsc2UsXG5cdFx0XHRmaWVsZDogJ3JlbWl0dGFuY2Vfc291cmNlX2FjY291bnRfaWQnXG5cdFx0fSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU291cmNlIEFjY291bnQnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElSZW1pdHRhbmNlRGVzdGluYXRpb25BY2NvdW50LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3JlbWl0dGFuY2VfZGVzdGluYXRpb25fYWNjb3VudCcsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IGZhbHNlLFxuXHRcdFx0c2V0X2VtcHR5OiBmYWxzZSxcblx0XHRcdGZpZWxkOiAncmVtaXR0YW5jZV9kZXN0aW5hdGlvbl9hY2NvdW50X2lkJ1xuXHRcdH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0Rlc3RpbmF0aW9uIEFjY291bnQnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BheV9zdHViX3RyYW5zYWN0aW9uX2NvbHVtbjEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LkFDb21ib0JveCgge1xuXHRcdFx0ZmllbGQ6ICdjdXJyZW5jeV9pZCcsXG5cdFx0XHRzZXRfZW1wdHk6IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfY3VycmVuY3knLFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogZmFsc2UsXG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSUN1cnJlbmN5XG5cdFx0fSApO1xuXHRcdDtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0N1cnJlbmN5JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlfc3R1Yl90cmFuc2FjdGlvbl9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2Ftb3VudCcsIHdpZHRoOiAzMDAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnQW1vdW50JyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlfc3R1Yl90cmFuc2FjdGlvbl9jb2x1bW4xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkRBVEVfUElDS0VSICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlREYXRlUGlja2VyKCB7IGZpZWxkOiAndHJhbnNhY3Rpb25fZGF0ZScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnVHJhbnNhY3Rpb24gRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5X3N0dWJfdHJhbnNhY3Rpb25fY29sdW1uMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0SW5wdXQoIHsgZmllbGQ6ICdjb25maXJtYXRpb25fbnVtYmVyJywgd2lkdGg6IDMwMCB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdDb25maXJtYXRpb24gIycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5X3N0dWJfdHJhbnNhY3Rpb25fY29sdW1uMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0FSRUEgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRBcmVhKCB7IGZpZWxkOiAnbm90ZScsIHdpZHRoOiAzMDAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTm90ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5X3N0dWJfdHJhbnNhY3Rpb25fY29sdW1uMSApO1xuXHR9XG5cblx0YnVpbGRTZWFyY2hGaWVsZHMoKSB7XG5cdFx0c3VwZXIuYnVpbGRTZWFyY2hGaWVsZHMoKTtcblx0XHR0aGlzLnNlYXJjaF9maWVsZHMgPSBbXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdTdGF0dXMnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMSxcblx0XHRcdFx0ZmllbGQ6ICd0cmFuc2FjdGlvbl9zdGF0dXNfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1NvdXJjZSBBY2NvdW50JyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDIsXG5cdFx0XHRcdGZpZWxkOiAncmVtaXR0YW5jZV9zb3VyY2VfYWNjb3VudF9pZCcsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3JlbWl0dGFuY2Vfc291cmNlX2FjY291bnQnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVJlbWl0dGFuY2VTb3VyY2VBY2NvdW50LFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnUGF5IFBlcmlvZCcgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3BheV9wZXJpb2RfaWQnLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9QYXlfcGVyaW9kJyxcblx0XHRcdFx0YXBpX2NsYXNzOiBUVEFQSS5BUElQYXlQZXJpb2QsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdFbXBsb3llZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3VzZXJfaWQnLFxuXHRcdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyJyxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWFxuXHRcdFx0fSApLFxuXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnQ3VycmVuY3knICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICdjdXJyZW5jeV9pZCcsXG5cdFx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJQ3VycmVuY3ksXG5cdFx0XHRcdG11bHRpcGxlOiB0cnVlLFxuXHRcdFx0XHRiYXNpY19zZWFyY2g6IHRydWUsXG5cdFx0XHRcdGFkdl9zZWFyY2g6IGZhbHNlLFxuXHRcdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9jdXJyZW5jeScsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblxuXHRcdFx0bmV3IFNlYXJjaEZpZWxkKCB7XG5cdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ1RyYW5zYWN0aW9uIERhdGUnICksXG5cdFx0XHRcdGluX2NvbHVtbjogMixcblx0XHRcdFx0ZmllbGQ6ICd0cmFuc2FjdGlvbl9kYXRlJyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkRBVEVfUElDS0VSXG5cdFx0XHR9IClcblxuXHRcdF07XG5cdH1cblxuXHRvbkN1c3RvbUNvbnRleHRDbGljayggaWQgKSB7XG5cdFx0c3dpdGNoICggaWQgKSB7XG5cdFx0XHRjYXNlICd0aW1lc2hlZXQnOlxuXHRcdFx0Y2FzZSAnc2NoZWR1bGUnOlxuXHRcdFx0Y2FzZSAncGF5X3N0dWJfYW1lbmRtZW50Jzpcblx0XHRcdGNhc2UgJ2VkaXRfZW1wbG95ZWUnOlxuXHRcdFx0Y2FzZSAnZ2VuZXJhdGVfcGF5X3N0dWInOlxuXHRcdFx0Y2FzZSAncGF5X3N0dWJfdHJhbnNhY3Rpb24nOlxuXHRcdFx0Y2FzZSAnZWRpdF9wYXlfcGVyaW9kJzpcblx0XHRcdGNhc2UgJ3BheV9zdHViJzpcblx0XHRcdFx0dGhpcy5vbk5hdmlnYXRpb25DbGljayggaWQgKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0b25WaWV3Q2xpY2soIGVkaXRJZCwgbm9SZWZyZXNoVUkgKSB7XG5cdFx0dGhpcy5vbk5hdmlnYXRpb25DbGljayggJ3ZpZXcnICk7XG5cdH1cblxuXHRvbk5hdmlnYXRpb25DbGljayggaWNvbk5hbWUgKSB7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgZ3JpZF9zZWxlY3RlZF9pZF9hcnJheTtcblx0XHR2YXIgZmlsdGVyID0ge307XG5cdFx0dmFyIGlkcyA9IFtdO1xuXHRcdHZhciB1c2VyX2lkcyA9IFtdO1xuXHRcdHZhciBiYXNlX2RhdGU7XG5cdFx0dmFyIHBheV9wZXJpb2RfaWRzID0gW107XG5cdFx0dmFyIHBheV9zdHViX2lkcyA9IFtdO1xuXG5cdFx0aWYgKCAkdGhpcy5lZGl0X3ZpZXcgJiYgJHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApIHtcblx0XHRcdGlkcy5wdXNoKCAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkICk7XG5cdFx0XHR1c2VyX2lkcy5wdXNoKCAkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfaWQgKTtcblx0XHRcdHBheV9wZXJpb2RfaWRzLnB1c2goICR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucGF5X3BlcmlvZF9pZCApO1xuXHRcdFx0cGF5X3N0dWJfaWRzLnB1c2goICR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucGF5X3N0dWJfaWQgKTtcblx0XHRcdGJhc2VfZGF0ZSA9ICR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQucGF5X3N0dWJfc3RhcnRfZGF0ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Z3JpZF9zZWxlY3RlZF9pZF9hcnJheSA9IHRoaXMuZ2V0R3JpZFNlbGVjdElkQXJyYXkoKTtcblx0XHRcdCQuZWFjaCggZ3JpZF9zZWxlY3RlZF9pZF9hcnJheSwgZnVuY3Rpb24oIGluZGV4LCB2YWx1ZSApIHtcblx0XHRcdFx0dmFyIGdyaWRfc2VsZWN0ZWRfcm93ID0gJHRoaXMuZ2V0UmVjb3JkRnJvbUdyaWRCeUlkKCB2YWx1ZSApO1xuXHRcdFx0XHRpZHMucHVzaCggZ3JpZF9zZWxlY3RlZF9yb3cuaWQgKTtcblx0XHRcdFx0dXNlcl9pZHMucHVzaCggZ3JpZF9zZWxlY3RlZF9yb3cudXNlcl9pZCApO1xuXHRcdFx0XHRwYXlfcGVyaW9kX2lkcy5wdXNoKCBncmlkX3NlbGVjdGVkX3Jvdy5wYXlfcGVyaW9kX2lkICk7XG5cdFx0XHRcdHBheV9zdHViX2lkcy5wdXNoKCBncmlkX3NlbGVjdGVkX3Jvdy5wYXlfc3R1Yl9pZCApO1xuXHRcdFx0XHRiYXNlX2RhdGUgPSBncmlkX3NlbGVjdGVkX3Jvdy5wYXlfc3R1Yl9zdGFydF9kYXRlO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdHZhciBhcmdzID0geyBmaWx0ZXJfZGF0YTogeyBpZDogaWRzIH0gfTtcblxuXHRcdHZhciBwb3N0X2RhdGE7XG5cdFx0c3dpdGNoICggaWNvbk5hbWUgKSB7XG5cdFx0XHRjYXNlICdwYXlfc3R1Yic6XG5cdFx0XHRcdGZpbHRlci5maWx0ZXJfZGF0YSA9IHt9O1xuXHRcdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEuaWQgPSB7IHZhbHVlOiBwYXlfc3R1Yl9pZHMgfTtcblx0XHRcdFx0ZmlsdGVyLnNlbGVjdF9kYXRlID0gYmFzZV9kYXRlO1xuXHRcdFx0XHRHbG9iYWwuYWRkVmlld1RhYiggdGhpcy52aWV3SWQsICQuaTE4bi5fKCAnUGF5IFN0dWIgVHJhbnNhY3Rpb25zJyApLCB3aW5kb3cubG9jYXRpb24uaHJlZiApO1xuXHRcdFx0XHRJbmRleFZpZXdDb250cm9sbGVyLmdvVG9WaWV3KCAnUGF5U3R1YicsIGZpbHRlciApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2VkaXRfZW1wbG95ZWUnOlxuXHRcdFx0XHRpZiAoIHVzZXJfaWRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5vcGVuRWRpdFZpZXcoIHRoaXMsICdFbXBsb3llZScsIHVzZXJfaWRzWzBdICk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdlZGl0X3BheV9wZXJpb2QnOlxuXHRcdFx0XHRpZiAoIHBheV9wZXJpb2RfaWRzLmxlbmd0aCA+IDAgKSB7XG5cdFx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5vcGVuRWRpdFZpZXcoIHRoaXMsICdQYXlQZXJpb2RzJywgcGF5X3BlcmlvZF9pZHNbMF0gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3RpbWVzaGVldCc6XG5cdFx0XHRcdGlmICggdXNlcl9pZHMubGVuZ3RoID4gMCApIHtcblx0XHRcdFx0XHRmaWx0ZXIudXNlcl9pZCA9IHVzZXJfaWRzWzBdO1xuXHRcdFx0XHRcdGZpbHRlci5iYXNlX2RhdGUgPSBiYXNlX2RhdGU7XG5cdFx0XHRcdFx0R2xvYmFsLmFkZFZpZXdUYWIoICR0aGlzLnZpZXdJZCwgJC5pMThuLl8oICdQYXkgU3R1YiBUcmFuc2FjdGlvbnMnICksIHdpbmRvdy5sb2NhdGlvbi5ocmVmICk7XG5cdFx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5nb1RvVmlldyggJ1RpbWVTaGVldCcsIGZpbHRlciApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnc2NoZWR1bGUnOlxuXHRcdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEgPSB7fTtcblx0XHRcdFx0dmFyIGluY2x1ZGVfdXNlcnMgPSB7IHZhbHVlOiB1c2VyX2lkcyB9O1xuXHRcdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEuaW5jbHVkZV91c2VyX2lkcyA9IGluY2x1ZGVfdXNlcnM7XG5cdFx0XHRcdGZpbHRlci5zZWxlY3RfZGF0ZSA9IGJhc2VfZGF0ZTtcblx0XHRcdFx0R2xvYmFsLmFkZFZpZXdUYWIoIHRoaXMudmlld0lkLCAkLmkxOG4uXyggJ1BheSBTdHViIFRyYW5zYWN0aW9ucycgKSwgd2luZG93LmxvY2F0aW9uLmhyZWYgKTtcblx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5nb1RvVmlldyggJ1NjaGVkdWxlJywgZmlsdGVyICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncGF5X3N0dWJfYW1lbmRtZW50Jzpcblx0XHRcdFx0ZmlsdGVyLmZpbHRlcl9kYXRhID0ge307XG5cdFx0XHRcdGZpbHRlci5maWx0ZXJfZGF0YS51c2VyX2lkID0gdXNlcl9pZHNbMF07XG5cdFx0XHRcdGZpbHRlci5maWx0ZXJfZGF0YS5wYXlfcGVyaW9kX2lkID0gcGF5X3BlcmlvZF9pZHNbMF07XG5cdFx0XHRcdEdsb2JhbC5hZGRWaWV3VGFiKCB0aGlzLnZpZXdJZCwgJC5pMThuLl8oICdQYXkgU3R1YiBUcmFuc2FjdGlvbnMnICksIHdpbmRvdy5sb2NhdGlvbi5ocmVmICk7XG5cdFx0XHRcdEluZGV4Vmlld0NvbnRyb2xsZXIuZ29Ub1ZpZXcoICdQYXlTdHViQW1lbmRtZW50JywgZmlsdGVyICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndmlldyc6XG5cdFx0XHRcdHRoaXMuc2V0Q3VycmVudEVkaXRWaWV3U3RhdGUoICd2aWV3JyApO1xuXHRcdFx0XHR0aGlzLm9wZW5FZGl0VmlldygpO1xuXHRcdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEgPSB7fTtcblxuXHRcdFx0XHR2YXIgZ3JpZF9zZWxlY3RlZF9pZF9hcnJheSA9IHRoaXMuZ2V0R3JpZFNlbGVjdElkQXJyYXkoKTtcblx0XHRcdFx0dmFyIHNlbGVjdGVkSWQgPSBncmlkX3NlbGVjdGVkX2lkX2FycmF5WzBdO1xuXHRcdFx0XHRmaWx0ZXIuZmlsdGVyX2RhdGEuaWQgPSBbc2VsZWN0ZWRJZF07XG5cblx0XHRcdFx0dGhpcy5hcGlbJ2dldCcgKyB0aGlzLmFwaS5rZXlfbmFtZV0oIGZpbHRlciwge1xuXHRcdFx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHRcdFx0dmFyIHJlc3VsdF9kYXRhID0gcmVzdWx0LmdldFJlc3VsdCgpO1xuXHRcdFx0XHRcdFx0aWYgKCAhcmVzdWx0X2RhdGEgKSB7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdF9kYXRhID0gW107XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJlc3VsdF9kYXRhID0gcmVzdWx0X2RhdGFbMF07XG5cblx0XHRcdFx0XHRcdGlmICggIXJlc3VsdF9kYXRhICkge1xuXHRcdFx0XHRcdFx0XHRUQWxlcnRNYW5hZ2VyLnNob3dBbGVydCggJC5pMThuLl8oICdSZWNvcmQgZG9lcyBub3QgZXhpc3QnICkgKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMub25DYW5jZWxDbGljaygpO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICggJHRoaXMuc3ViX3ZpZXdfbW9kZSAmJiAkdGhpcy5wYXJlbnRfa2V5ICkge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRfZGF0YVskdGhpcy5wYXJlbnRfa2V5XSA9ICR0aGlzLnBhcmVudF92YWx1ZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0JHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCA9IHJlc3VsdF9kYXRhO1xuXG5cdFx0XHRcdFx0XHQkdGhpcy5pbml0RWRpdFZpZXcoKTtcblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ3BheV9zdHViX3RyYW5zYWN0aW9uJzpcblx0XHRcdFx0SW5kZXhWaWV3Q29udHJvbGxlci5vcGVuRWRpdFZpZXcoIHRoaXMsICdQYXlTdHViVHJhbnNhY3Rpb24nLCB1c2VyX2lkc1swXSApO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0fVxuXG59XG5cblBheVN0dWJUcmFuc2FjdGlvblZpZXdDb250cm9sbGVyLmxvYWRWaWV3ID0gZnVuY3Rpb24oKSB7XG5cdEdsb2JhbC5sb2FkVmlld1NvdXJjZSggJ1BheVN0dWJUcmFuc2FjdGlvbicsICdQYXlTdHViVHJhbnNhY3Rpb25WaWV3Lmh0bWwnLCBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdHZhciBhcmdzID0ge307XG5cdFx0dmFyIHRlbXBsYXRlID0gXy50ZW1wbGF0ZSggcmVzdWx0LCBhcmdzICk7XG5cdFx0R2xvYmFsLmNvbnRlbnRDb250YWluZXIoKS5odG1sKCB0ZW1wbGF0ZSApO1xuXHR9ICk7XG5cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7900\n")}}]);