TimeTrex/interface/html5/dist/company-payroll_remittance_agency-PayrollRemittanceAgencyEventViewController.bundle.js

1 line
60 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["company-payroll_remittance_agency-PayrollRemittanceAgencyEventViewController"],{542:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"PayrollRemittanceAgencyEventViewController\": () => (/* binding */ PayrollRemittanceAgencyEventViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass PayrollRemittanceAgencyEventViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#payroll_remittance_agency_event_view_container', //Must set el here and can only set string, so events can work\n\n\t\t\tuser_api: null,\n\t\t\tstatus_array: null,\n\t\t\taction_array: null,\n\t\t\tagency_array: null,\n\t\t\tpayment_frequency_array: null,\n\t\t\treport_frequency_array: null,\n\t\t\tcountry_array: null,\n\t\t\tprovince_array: null,\n\t\t\tdistrict_array: null,\n\n\t\t\tmonth_of_year_array: null,\n\t\t\tmonth_of_quarter_array: null,\n\t\t\tweek_interval_array: null,\n\t\t\tday_of_month_array: null,\n\t\t\tday_of_week_array: null,\n\n\t\t\tremittance_source_account_array: null,\n\t\t\tsub_event_view_controller: null,\n\n\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'PayrollRemittanceAgencyEventEditView.html';\n\t\tthis.permission_id = 'payroll_remittance_agency';\n\t\tthis.script_name = 'PayrollRemittanceAgencyEventView';\n\t\tthis.table_name_key = 'payroll_remittance_agency_event';\n\t\tthis.viewId = 'PayrollRemittanceAgencyEvent';\n\t\tthis.context_menu_name = $.i18n._( 'Remittance Agency Event' );\n\t\tthis.navigation_label = $.i18n._( 'Remittance Agency Event' );\n\t\tthis.api = TTAPI.APIPayrollRemittanceAgencyEvent;\n\t\tthis.user_group_api = TTAPI.APIUserGroup;\n\t\tthis.company_api = TTAPI.APICompany;\n\n\t\tthis.date_api = TTAPI.APITTDate;\n\t\tthis.api_user_report = TTAPI.APIUserReportData;\n\t\tthis.month_of_quarter_array = Global.buildRecordArray( { 1: 1, 2: 2, 3: 3 } );\n\n\t\tthis.render();\n\n\t\tif ( this.sub_view_mode ) {\n\t\t\tthis.buildContextMenu( true );\n\t\t} else {\n\t\t\tthis.buildContextMenu();\n\t\t}\n\n\t\t//call init data in parent view\n\t\tif ( !this.sub_view_mode ) {\n\t\t\tthis.initData();\n\t\t}\n\t}\n\n\t//override required because this is a subview in an edit view.\n\t_setGridSizeGridWidthOfSubViewMode() {\n\t\tthis.grid.setGridWidth( $( this.el ).parents( '.edit-view-tab' ).parent().parent().width() - 10 );\n\t}\n\n\t//Don't initOptions if edit_only_mode. Do it in sub views\n\tinitOptions() {\n\t\tvar $this = this;\n\n\t\tthis.initDropDownOption( 'status' );\n\t\tthis.initDropDownOption( 'frequency' );\n\n\t\tthis.api.getOptions( 'week_interval', {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\t\t\t\t$this.week_interval_array = res;\n\t\t\t}\n\n\t\t} );\n\t\tthis.date_api.getMonthOfYearArray( {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\t\t\t\t$this.month_of_year_array = res;\n\t\t\t}\n\t\t} );\n\t\tthis.date_api.getDayOfMonthArray( {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\t\t\t\t$this.day_of_month_array = Global.buildRecordArray( res );\n\t\t\t}\n\t\t} );\n\t\tthis.date_api.getDayOfWeekArray( {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\t\t\t\t$this.day_of_week_array = res;\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetTypeOptions() {\n\t\tvar $this = this;\n\t\tvar type_params = {\n\t\t\t'payroll_remittance_agency_id': this.edit_view_ui_dic.payroll_remittance_agency_id.getValue()\n\t\t};\n\n\t\tthis.api.getOptions( 'type', type_params, {\n\t\t\tonResult: function( res ) {\n\t\t\t\tres = res.getResult();\n\t\t\t\t$this.edit_view_ui_dic.type_id.setSourceData( Global.buildRecordArray( res ) );\n\n\t\t\t\t$this.edit_view_ui_dic.type_id.setSourceData( Global.buildRecordArray( res ) );\n\t\t\t\t//must update current edit record in case the previous type has been removed from list\n\t\t\t\t$this.current_edit_record.type_id = $this.edit_view_ui_dic.type_id.getValue();\n\n\t\t\t\tTTPromise.resolve( 'PayrollRemittanceAgencyEvent', 'updateUI' );\n\t\t\t}\n\t\t} );\n\t}\n\n\tgetReportOptions() {\n\t\tvar $this = this;\n\t\tthis.api_user_report.getUserReportData( { filter_data: { include_user_report_id: this.current_edit_record.user_report_data_id } }, {\n\t\t\tonResult: function( res ) {\n\t\t\t\t$this.edit_view_ui_dic.user_report_data_id.setSourceData( res.getResult() );\n\t\t\t}\n\t\t} );\n\t}\n\n\tsetEditViewDataDone() {\n\t\tsuper.setEditViewDataDone();\n\t\tthis.onFrequencyChange();\n\n\t\tif ( typeof this.current_edit_record.id == 'undefined' ) {\n\t\t\tthis.detachElement( 'enable_recalculate_dates' );\n\t\t}\n\n\t\tthis.getTypeOptions();\n\t\tthis.getReportOptions();\n\t\tthis.confirm_on_exit = false;\n\t}\n\n\tonFormItemChange( target, doNotValidate ) {\n\t\tthis.setIsChanged( target );\n\t\tthis.setMassEditingFieldsWhenFormChange( target );\n\t\tvar key = target.getField();\n\t\tvar c_value = target.getValue();\n\t\tDebug.Text( 'key: ' + key + ' value: ' + c_value, 'PayrollRemittanceAgencyEventViewController.js', 'PayrollRemittanceAgencyEventViewController', 'onFormItemChange', 10 );\n\t\tTTPromise.add( 'PayrollRemittanceAgencyEvent', 'updateUI' );\n\t\tswitch ( key ) {\n\t\t\tcase 'payroll_remittance_agency_id':\n\t\t\t\tthis.getTypeOptions(); //must be dynamically connected every time stuff changes.\n\t\t\t\tbreak;\n\t\t\tcase 'frequency_id':\n\t\t\t\tthis.onFrequencyChange( c_value );\n\t\t\t\tthis.current_edit_record[key] = c_value;\n\t\t\t\tthis.validate();\n\t\t\t\tthis.updateFutureDates();\n\t\t\t\tTTPromise.reject( 'PayrollRemittanceAgencyEvent', 'updateUI' );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tTTPromise.resolve( 'PayrollRemittanceAgencyEvent', 'updateUI' );\n\t\t\t\tbreak;\n\t\t}\n\n\t\tvar $this = this;\n\t\t// Hit when all promises are done...\n\t\tTTPromise.wait( 'PayrollRemittanceAgencyEvent', 'updateUI', function() {\n\t\t\t$this.onFrequencyChange();\n\t\t\t$this.current_edit_record[key] = c_value;\n\t\t\t$this.validate();\n\t\t\t$this.updateFutureDates();\n\t\t} );\n\t}\n\n\tupdateFutureDates() {\n\t\tDebug.Text( 'Updating remittance agency event dates.', null, null, null, 10 );\n\t\tvar $this = this;\n\t\tthis.api.calculateNextRunDate( this.current_edit_record, {\n\t\t\tonResult: function( result ) {\n\t\t\t\tresult = result.getResult();\n\t\t\t\t$this.edit_view_ui_dic.start_date.setValue( result.start_date );\n\t\t\t\t$this.edit_view_ui_dic.end_date.setValue( result.end_date );\n\t\t\t\t$this.edit_view_ui_dic.due_date.setValue( result.due_date );\n\t\t\t\t$this.edit_view_ui_dic.next_reminder_date.setValue( result.next_reminder_date );\n\t\t\t}\n\t\t} );\n\t}\n\n\tonFrequencyChange( arg ) {\n\t\tif ( !Global.isSet( arg ) ) {\n\n\t\t\tif ( !Global.isSet( this.current_edit_record['frequency_id'] ) ) {\n\t\t\t\tthis.current_edit_record['frequency_id'] = 10;\n\t\t\t}\n\n\t\t\targ = this.current_edit_record['frequency_id'];\n\t\t}\n\n\t\tDebug.Text( 'Selected Frequency: ' + arg, null, null, null, 10 );\n\t\tthis.detachElement( 'week' );\n\t\tthis.detachElement( 'primary_month' );\n\t\tthis.detachElement( 'primary_day_of_month' );\n\t\tthis.detachElement( 'secondary_month' );\n\t\tthis.detachElement( 'secondary_day_of_month' );\n\t\tthis.detachElement( 'day_of_week' );\n\t\tthis.detachElement( 'due_date_delay_days' );\n\t\tthis.detachElement( 'quarter_month' );\n\t\tthis.detachElement( 'pay_period_schedule_id' );\n\n\t\tif ( arg == 1000 ) { //each pay period\n\t\t\tthis.attachElement( 'pay_period_schedule_id' );\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t} else if ( arg == 2000 ) { //annually\n\t\t\tthis.attachElement( 'primary_month' );\n\t\t\tthis.edit_view_ui_dic.primary_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Month' );\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Day Of Month' );\n\t\t} else if ( arg == 2100 ) { //Year-To-Date\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Day Of Month' );\n\t\t\tthis.attachElement( 'primary_month' );\n\t\t\tthis.edit_view_ui_dic.primary_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Month' );\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t} else if ( arg == 2200 ) { //Semi-Annually\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Primary Day Of Month' );\n\t\t\tthis.attachElement( 'primary_month' );\n\t\t\tthis.edit_view_ui_dic.primary_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Primary Month' );\n\t\t\tthis.attachElement( 'secondary_month' );\n\t\t\tthis.attachElement( 'secondary_day_of_month' );\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t} else if ( arg == 3000 ) {//Quarterly\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Day Of Month' );\n\t\t\tthis.attachElement( 'quarter_month' );\n\t\t} else if ( arg == 4100 ) { //monthly\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Day Of Month' );\n\t\t} else if ( arg == 4200 ) { //semimonthly\n\t\t\tthis.attachElement( 'primary_day_of_month' );\n\t\t\tthis.edit_view_ui_dic.primary_day_of_month.parents( '.edit-view-form-item-div' ).find( '.edit-view-form-item-label' ).html( 'Primary Day Of Month' );\n\t\t\tthis.attachElement( 'secondary_day_of_month' );\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t} else if ( arg == 5100 ) { //weekly\n\t\t\tthis.attachElement( 'day_of_week' );\n\t\t} else if ( arg == 90100 || arg == 90200 ) { //On Hire/Termination\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t} else if ( arg == 90310 ) { //On Termination (Pay Period End Date)\n\t\t\tthis.attachElement( 'pay_period_schedule_id' );\n\t\t\tthis.attachElement( 'due_date_delay_days' );\n\t\t}\n\n\t\tthis.editFieldResize();\n\t}\n\n\tsetDefaultMenuMassEditIcon( context_btn, grid_selected_length ) {\n\t\tContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )\n\t}\n\n\tsetDefaultMenuSaveAndCopyIcon( context_btn, grid_selected_length ) {\n\t\tContextMenuManager.hideMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false )\n\t}\n\n\t/* jshint ignore:end */\n\n\t//Make sure this.current_edit_record is updated before validate\n\t// validate() {\n\t// \tvar $this = this;\n\t// \tvar record = {};\n\t// \tLocalCacheData.current_doing_context_action = 'validate';\n\t// \tif ( this.is_mass_editing ) {\n\t// \t\tfor ( var key in this.edit_view_ui_dic ) {\n\t// \t\t\tvar widget = this.edit_view_ui_dic[key];\n\t//\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\tif ( Global.isArray( this.current_edit_record.user_id ) && this.current_edit_record.user_id.length > 0 ) {\n\t// \t\t\trecord = [];\n\t// \t\t\t$.each( this.current_edit_record.user_id, function( index, value ) {\n\t//\n\t// \t\t\t\tvar commonRecord = Global.clone( $this.current_edit_record );\n\t// \t\t\t\tcommonRecord.user_id = value;\n\t// \t\t\t\trecord.push( commonRecord );\n\t//\n\t// \t\t\t} );\n\t// \t\t} else {\n\t// \t\t\trecord = this.current_edit_record;\n\t// \t\t}\n\t// \t}\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\tsetDefaultMenuImportIcon( context_btn, grid_selected_length, pId ) {\n\t}\n\n\tcopyAsNewResetIds( record ) {\n\t\trecord['id'] = '';\n\t\trecord['start_date'] = '';\n\t\trecord['end_date'] = '';\n\t\trecord['due_date'] = '';\n\t\trecord['last_due_date'] = '';\n\t\trecord['next_reminder_date'] = '';\n\t\trecord['last_reminder_date'] = '';\n\t\treturn record;\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\tsetEditMenuSaveAndContinueIcon( context_btn, pId ) {\n\t\tthis.saveAndContinueValidate( context_btn );\n\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditMenuSaveAndAddIcon( context_btn, pId ) {\n\t\tthis.saveAndNewValidate( context_btn );\n\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditMenuSaveAndCopyIcon( context_btn, pId ) {\n\t\tthis.saveAndContinueValidate( context_btn );\n\n\t\tif ( !this.current_edit_record || !this.current_edit_record.id ) {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tbuildEditViewUI() {\n\t\tsuper.buildEditViewUI();\n\t\tvar $this = this;\n\t\tvar form_item_input;\n\n\t\tvar tab_model = {\n\t\t\t'tab_payroll_remittance_agency_event': { 'label': $.i18n._( 'Remittance Agency Event' ) },\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.APIPayrollRemittanceAgencyEvent,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_payroll_remittance_agency',\n\t\t\tnavigation_mode: true,\n\t\t\tshow_search_inputs: true\n\t\t} );\n\n\t\tthis.setNavigation();\n\n\t\tvar tab_payroll_remittance_agency_event = this.edit_view_tab.find( '#tab_payroll_remittance_agency_event' );\n\t\tthis.edit_view_tabs[0] = [];\n\t\tthis.edit_view_tabs[0].push( tab_payroll_remittance_agency_event );\n\t\tvar tab_payroll_remittance_agency_event_column_1 = tab_payroll_remittance_agency_event.find( '.first-column' );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tapi_class: TTAPI.APIPayrollRemittanceAgency,\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_payroll_remittance_agency',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_empty: false,\n\t\t\tfield: 'payroll_remittance_agency_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Remittance Agency' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( {\n\t\t\tfield: 'status_id'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.status_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Status' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( {\n\t\t\tfield: 'type_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Type' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\t// Payment Frequency\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( {\n\t\t\tfield: 'frequency_id'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.frequency_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Frequency' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\t// Payment Frequency Month\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'primary_month' } );\n\t\tform_item_input.setSourceData( Global.buildRecordArray( $this.month_of_year_array ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Primary Month' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency Day Of Month\n\t\t// Day of the Month\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'primary_day_of_month' } );\n\t\tvar day_of_month_array = Global.addLastItemToArray( $this.day_of_month_array, -1, $.i18n._( '- Last Day Of Month -' ) );\n\t\tform_item_input.setSourceData( day_of_month_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Primary Day of Month' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency Month\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'secondary_month' } );\n\t\tform_item_input.setSourceData( Global.buildRecordArray( $this.month_of_year_array ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Secondary Month' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency Day Of Month\n\t\t// Day of the Month\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'secondary_day_of_month' } );\n\t\tform_item_input.setSourceData( day_of_month_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Secondary Day of Month' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency Week\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'week' } );\n\t\tform_item_input.setSourceData( Global.buildRecordArray( $this.week_interval_array ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Week' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency quarter Month\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'quarter_month' } );\n\t\tform_item_input.setSourceData( $this.month_of_quarter_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Month of Quarter' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Day of the week\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\n\t\tform_item_input.TComboBox( { field: 'day_of_week' } );\n\t\tform_item_input.setSourceData( Global.buildRecordArray( $this.day_of_week_array ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Day of week' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', 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.APIPayPeriodSchedule,\n\t\t\tallow_multiple_selection: true,\n\t\t\tlayout_name: 'global_pay_period_schedule',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_special_empty: true,\n\t\t\tset_any: true,\n\t\t\tfield: 'pay_period_schedule_id'\n\t\t} );\n\t\tform_item_input.setSourceData( $this.saved_report_array );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Pay Period Schedule' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency Days After Transaction Date\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\n\t\tform_item_input.TTextInput( { field: 'due_date_delay_days', width: 50 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Due Date Delay Days' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Effective Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\t\tform_item_input.TDatePicker( {\n\t\t\tfield: 'effective_date'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Effective Date' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\t//user to remind\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: true,\n\t\t\tset_empty: true,\n\t\t\tfield: 'reminder_user_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Send Reminder To' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.AWESOME_BOX );\n\t\tform_item_input.AComboBox( {\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_user_report_data',\n\t\t\tshow_search_inputs: true,\n\t\t\tset_default: true,\n\t\t\tfield: 'user_report_data_id'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Saved Report' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Payment Frequency reminder days\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_INPUT );\n\t\tform_item_input.TTextInput( { field: 'reminder_days', width: 50 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Reminder Days' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '' );\n\n\t\t//Note\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT_AREA );\n\t\tform_item_input.TTextArea( { field: 'note', width: '100%', rows: 5 } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Notes' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true, true );\n\t\tform_item_input.parent().width( '50%' );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.CHECKBOX );\n\t\tform_item_input.TCheckbox( { field: 'enable_recalculate_dates' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Recalculate Dates' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\t// Recalculate Dates From\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.DATE_PICKER );\n\t\tform_item_input.TDatePicker( {\n\t\t\tfield: 'recalculate_date'\n\t\t} );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Recalculate Dates From' ), form_item_input, tab_payroll_remittance_agency_event_column_1 );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'start_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Start Date' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'end_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'End Date' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'due_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Due Date' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'next_reminder_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Reminder Date' ), form_item_input, tab_payroll_remittance_agency_event_column_1, '', null, true );\n\n\t}\n\n}\n\nPayrollRemittanceAgencyEventViewController.loadSubView = function( container, beforeViewLoadedFun, afterViewLoadedFun ) {\n\tGlobal.loadViewSource( 'PayrollRemittanceAgencyEvent', 'SubPayrollRemittanceAgencyEventView.html', function( result ) {\n\t\tvar args = {};\n\t\tvar template = _.template( result );\n\t\tif ( Global.isSet( beforeViewLoadedFun ) ) {\n\t\t\tbeforeViewLoadedFun();\n\t\t}\n\n\t\tif ( Global.isSet( container ) ) {\n\t\t\tcontainer.html( template( args ) );\n\n\t\t\tif ( Global.isSet( afterViewLoadedFun ) ) {\n\t\t\t\tafterViewLoadedFun( sub_payroll_remittance_agency_event_view_controller );\n\t\t\t}\n\t\t}\n\t} );\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNTQyLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFPO0FBQ1AsMkJBQTJCO0FBQzNCLEVBQUUsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7OztBQUdBLElBQUk7O0FBRUo7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsQ0FBQztBQUM1QiwwQkFBMEIsQ0FBQztBQUMzQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDJEQUEyRCxtQkFBbUI7O0FBRTlFOztBQUVBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsQ0FBQztBQUMzQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQSw0Q0FBNEMsZUFBZSx3RUFBd0U7QUFDbkk7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQSxJQUFJLDBCQUEwQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksMEJBQTBCO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDBCQUEwQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUkseUJBQXlCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBLElBQUksMEJBQTBCO0FBQzlCO0FBQ0E7QUFDQSxJQUFJLDBCQUEwQjtBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksMEJBQTBCO0FBQzlCO0FBQ0EsSUFBSSwyQ0FBMkM7QUFDL0M7QUFDQSxJQUFJLDJCQUEyQjtBQUMvQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0Q0FBNEMsU0FBUyxDQUFDLHNDQUFzQztBQUM1RjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOztBQUVKOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQSwrQkFBK0IseUJBQXlCO0FBQ3hEO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixnQ0FBZ0M7QUFDL0Qsb0ZBQW9GLENBQUM7QUFDckY7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBLCtCQUErQiwyQkFBMkI7QUFDMUQ7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLGtDQUFrQztBQUNqRTtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBOztBQUVBLCtCQUErQixnQkFBZ0I7QUFDL0M7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTs7QUFFQSwrQkFBK0IseUJBQXlCO0FBQ3hEO0FBQ0EsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7O0FBRUEsK0JBQStCLHVCQUF1QjtBQUN0RDtBQUNBLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQSw2QkFBNkIsQ0FBQzs7QUFFOUI7O0FBRUE7O0FBRUEsZ0NBQWdDLDBDQUEwQztBQUMxRSw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSiw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0osNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQSxnQ0FBZ0Msb0NBQW9DO0FBQ3BFLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0EsK0JBQStCLHdDQUF3QztBQUN2RSw2QkFBNkIsQ0FBQztBQUM5Qjs7QUFFQTtBQUNBLCtCQUErQixvQ0FBb0M7QUFDbkUsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBLDJCQUEyQixzQkFBc0I7QUFDakQsNkJBQTZCLENBQUM7O0FBRTlCO0FBQ0EsMkJBQTJCLG9CQUFvQjtBQUMvQyw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DLDZCQUE2QixDQUFDOztBQUU5QjtBQUNBLDJCQUEyQiw4QkFBOEI7QUFDekQsNkJBQTZCLENBQUM7O0FBRTlCOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW50ZXJmYWNlL2h0bWw1L3ZpZXdzL2NvbXBhbnkvcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeS9QYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50Vmlld0NvbnRyb2xsZXIuanM/YzUyNCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudFZpZXdDb250cm9sbGVyIGV4dGVuZHMgQmFzZVZpZXdDb250cm9sbGVyIHtcblx0Y29uc3RydWN0b3IoIG9wdGlvbnMgPSB7fSApIHtcblx0XHRfLmRlZmF1bHRzKCBvcHRpb25zLCB7XG5cdFx0XHRlbDogJyNwYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50X3ZpZXdfY29udGFpbmVyJywgLy9NdXN0IHNldCBlbCBoZXJlIGFuZCBjYW4gb25seSBzZXQgc3RyaW5nLCBzbyBldmVudHMgY2FuIHdvcmtcblxuXHRcdFx0dXNlcl9hcGk6IG51bGwsXG5cdFx0XHRzdGF0dXNfYXJyYXk6IG51bGwsXG5cdFx0XHRhY3Rpb25fYXJyYXk6IG51bGwsXG5cdFx0XHRhZ2VuY3lfYXJyYXk6IG51bGwsXG5cdFx0XHRwYXltZW50X2ZyZXF1ZW5jeV9hcnJheTogbnVsbCxcblx0XHRcdHJlcG9ydF9mcmVxdWVuY3lfYXJyYXk6IG51bGwsXG5cdFx0XHRjb3VudHJ5X2FycmF5OiBudWxsLFxuXHRcdFx0cHJvdmluY2VfYXJyYXk6IG51bGwsXG5cdFx0XHRkaXN0cmljdF9hcnJheTogbnVsbCxcblxuXHRcdFx0bW9udGhfb2ZfeWVhcl9hcnJheTogbnVsbCxcblx0XHRcdG1vbnRoX29mX3F1YXJ0ZXJfYXJyYXk6IG51bGwsXG5cdFx0XHR3ZWVrX2ludGVydmFsX2FycmF5OiBudWxsLFxuXHRcdFx0ZGF5X29mX21vbnRoX2FycmF5OiBudWxsLFxuXHRcdFx0ZGF5X29mX3dlZWtfYXJyYXk6IG51bGwsXG5cblx0XHRcdHJlbWl0dGFuY2Vfc291cmNlX2FjY291bnRfYXJyYXk6IG51bGwsXG5cdFx0XHRzdWJfZXZlbnRfdmlld19jb250cm9sbGVyOiBudWxsLFxuXG5cblx0XHR9ICk7XG5cblx0XHRzdXBlciggb3B0aW9ucyApO1xuXHR9XG5cblx0aW5pdCggb3B0aW9ucyApIHtcblxuXHRcdC8vdGhpcy5fc3VwZXIoJ2luaXRpYWxpemUnLCBvcHRpb25zICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdHBsID0gJ1BheXJvbGxSZW1pdHRhbmNlQWdlbmN5RXZlbnRFZGl0Vmlldy5odG1sJztcblx0XHR0aGlzLnBlcm1pc3Npb25faWQgPSAncGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeSc7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50Vmlldyc7XG5cdFx0dGhpcy50YWJsZV9uYW1lX2tleSA9ICdwYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50Jztcblx0XHR0aGlzLnZpZXdJZCA9ICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50Jztcblx0XHR0aGlzLmNvbnRleHRfbWVudV9uYW1lID0gJC5pMThuLl8oICdSZW1pdHRhbmNlIEFnZW5jeSBFdmVudCcgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ1JlbWl0dGFuY2UgQWdlbmN5IEV2ZW50JyApO1xuXHRcdHRoaXMuYXBpID0gVFRBUEkuQVBJUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudDtcblx0XHR0aGlzLnVzZXJfZ3JvdXBfYXBpID0gVFRBUEkuQVBJVXNlckdyb3VwO1xuXHRcdHRoaXMuY29tcGFueV9hcGkgPSBUVEFQSS5BUElDb21wYW55O1xuXG5cdFx0dGhpcy5kYXRlX2FwaSA9IFRUQVBJLkFQSVRURGF0ZTtcblx0XHR0aGlzLmFwaV91c2VyX3JlcG9ydCA9IFRUQVBJLkFQSVVzZXJSZXBvcnREYXRhO1xuXHRcdHRoaXMubW9udGhfb2ZfcXVhcnRlcl9hcnJheSA9IEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCB7IDE6IDEsIDI6IDIsIDM6IDMgfSApO1xuXG5cdFx0dGhpcy5yZW5kZXIoKTtcblxuXHRcdGlmICggdGhpcy5zdWJfdmlld19tb2RlICkge1xuXHRcdFx0dGhpcy5idWlsZENvbnRleHRNZW51KCB0cnVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuYnVpbGRDb250ZXh0TWVudSgpO1xuXHRcdH1cblxuXHRcdC8vY2FsbCBpbml0IGRhdGEgaW4gcGFyZW50IHZpZXdcblx0XHRpZiAoICF0aGlzLnN1Yl92aWV3X21vZGUgKSB7XG5cdFx0XHR0aGlzLmluaXREYXRhKCk7XG5cdFx0fVxuXHR9XG5cblx0Ly9vdmVycmlkZSByZXF1aXJlZCBiZWNhdXNlIHRoaXMgaXMgYSBzdWJ2aWV3IGluIGFuIGVkaXQgdmlldy5cblx0X3NldEdyaWRTaXplR3JpZFdpZHRoT2ZTdWJWaWV3TW9kZSgpIHtcblx0XHR0aGlzLmdyaWQuc2V0R3JpZFdpZHRoKCAkKCB0aGlzLmVsICkucGFyZW50cyggJy5lZGl0LXZpZXctdGFiJyApLnBhcmVudCgpLnBhcmVudCgpLndpZHRoKCkgLSAxMCApO1xuXHR9XG5cblx0Ly9Eb24ndCBpbml0T3B0aW9ucyBpZiBlZGl0X29ubHlfbW9kZS4gRG8gaXQgaW4gc3ViIHZpZXdzXG5cdGluaXRPcHRpb25zKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbiggJ3N0YXR1cycgKTtcblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbiggJ2ZyZXF1ZW5jeScgKTtcblxuXHRcdHRoaXMuYXBpLmdldE9wdGlvbnMoICd3ZWVrX2ludGVydmFsJywge1xuXHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdHJlcyA9IHJlcy5nZXRSZXN1bHQoKTtcblx0XHRcdFx0JHRoaXMud2Vla19pbnRlcnZhbF9hcnJheSA9IHJlcztcblx0XHRcdH1cblxuXHRcdH0gKTtcblx0XHR0aGlzLmRhdGVfYXBpLmdldE1vbnRoT2ZZZWFyQXJyYXkoIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzICkge1xuXHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdCR0aGlzLm1vbnRoX29mX3llYXJfYXJyYXkgPSByZXM7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHRoaXMuZGF0ZV9hcGkuZ2V0RGF5T2ZNb250aEFycmF5KCB7XG5cdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0cmVzID0gcmVzLmdldFJlc3VsdCgpO1xuXHRcdFx0XHQkdGhpcy5kYXlfb2ZfbW9udGhfYXJyYXkgPSBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHRcdHRoaXMuZGF0ZV9hcGkuZ2V0RGF5T2ZXZWVrQXJyYXkoIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzICkge1xuXHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdCR0aGlzLmRheV9vZl93ZWVrX2FycmF5ID0gcmVzO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdGdldFR5cGVPcHRpb25zKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dmFyIHR5cGVfcGFyYW1zID0ge1xuXHRcdFx0J3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfaWQnOiB0aGlzLmVkaXRfdmlld191aV9kaWMucGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9pZC5nZXRWYWx1ZSgpXG5cdFx0fTtcblxuXHRcdHRoaXMuYXBpLmdldE9wdGlvbnMoICd0eXBlJywgdHlwZV9wYXJhbXMsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzICkge1xuXHRcdFx0XHRyZXMgPSByZXMuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdCR0aGlzLmVkaXRfdmlld191aV9kaWMudHlwZV9pZC5zZXRTb3VyY2VEYXRhKCBHbG9iYWwuYnVpbGRSZWNvcmRBcnJheSggcmVzICkgKTtcblxuXHRcdFx0XHQkdGhpcy5lZGl0X3ZpZXdfdWlfZGljLnR5cGVfaWQuc2V0U291cmNlRGF0YSggR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoIHJlcyApICk7XG5cdFx0XHRcdC8vbXVzdCB1cGRhdGUgY3VycmVudCBlZGl0IHJlY29yZCBpbiBjYXNlIHRoZSBwcmV2aW91cyB0eXBlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBsaXN0XG5cdFx0XHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQudHlwZV9pZCA9ICR0aGlzLmVkaXRfdmlld191aV9kaWMudHlwZV9pZC5nZXRWYWx1ZSgpO1xuXG5cdFx0XHRcdFRUUHJvbWlzZS5yZXNvbHZlKCAnUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudCcsICd1cGRhdGVVSScgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH1cblxuXHRnZXRSZXBvcnRPcHRpb25zKCkge1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0dGhpcy5hcGlfdXNlcl9yZXBvcnQuZ2V0VXNlclJlcG9ydERhdGEoIHsgZmlsdGVyX2RhdGE6IHsgaW5jbHVkZV91c2VyX3JlcG9ydF9pZDogdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfcmVwb3J0X2RhdGFfaWQgfSB9LCB7XG5cdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0JHRoaXMuZWRpdF92aWV3X3VpX2RpYy51c2VyX3JlcG9ydF9kYXRhX2lkLnNldFNvdXJjZURhdGEoIHJlcy5nZXRSZXN1bHQoKSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdHNldEVkaXRWaWV3RGF0YURvbmUoKSB7XG5cdFx0c3VwZXIuc2V0RWRpdFZpZXdEYXRhRG9uZSgpO1xuXHRcdHRoaXMub25GcmVxdWVuY3lDaGFuZ2UoKTtcblxuXHRcdGlmICggdHlwZW9mIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCA9PSAndW5kZWZpbmVkJyApIHtcblx0XHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ2VuYWJsZV9yZWNhbGN1bGF0ZV9kYXRlcycgKTtcblx0XHR9XG5cblx0XHR0aGlzLmdldFR5cGVPcHRpb25zKCk7XG5cdFx0dGhpcy5nZXRSZXBvcnRPcHRpb25zKCk7XG5cdFx0dGhpcy5jb25maXJtX29uX2V4aXQgPSBmYWxzZTtcblx0fVxuXG5cdG9uRm9ybUl0ZW1DaGFuZ2UoIHRhcmdldCwgZG9Ob3RWYWxpZGF0ZSApIHtcblx0XHR0aGlzLnNldElzQ2hhbmdlZCggdGFyZ2V0ICk7XG5cdFx0dGhpcy5zZXRNYXNzRWRpdGluZ0ZpZWxkc1doZW5Gb3JtQ2hhbmdlKCB0YXJnZXQgKTtcblx0XHR2YXIga2V5ID0gdGFyZ2V0LmdldEZpZWxkKCk7XG5cdFx0dmFyIGNfdmFsdWUgPSB0YXJnZXQuZ2V0VmFsdWUoKTtcblx0XHREZWJ1Zy5UZXh0KCAna2V5OiAnICsga2V5ICsgJyB2YWx1ZTogJyArIGNfdmFsdWUsICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50Vmlld0NvbnRyb2xsZXIuanMnLCAnUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudFZpZXdDb250cm9sbGVyJywgJ29uRm9ybUl0ZW1DaGFuZ2UnLCAxMCApO1xuXHRcdFRUUHJvbWlzZS5hZGQoICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50JywgJ3VwZGF0ZVVJJyApO1xuXHRcdHN3aXRjaCAoIGtleSApIHtcblx0XHRcdGNhc2UgJ3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfaWQnOlxuXHRcdFx0XHR0aGlzLmdldFR5cGVPcHRpb25zKCk7IC8vbXVzdCBiZSBkeW5hbWljYWxseSBjb25uZWN0ZWQgZXZlcnkgdGltZSBzdHVmZiBjaGFuZ2VzLlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2ZyZXF1ZW5jeV9pZCc6XG5cdFx0XHRcdHRoaXMub25GcmVxdWVuY3lDaGFuZ2UoIGNfdmFsdWUgKTtcblx0XHRcdFx0dGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkW2tleV0gPSBjX3ZhbHVlO1xuXHRcdFx0XHR0aGlzLnZhbGlkYXRlKCk7XG5cdFx0XHRcdHRoaXMudXBkYXRlRnV0dXJlRGF0ZXMoKTtcblx0XHRcdFx0VFRQcm9taXNlLnJlamVjdCggJ1BheXJvbGxSZW1pdHRhbmNlQWdlbmN5RXZlbnQnLCAndXBkYXRlVUknICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0VFRQcm9taXNlLnJlc29sdmUoICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50JywgJ3VwZGF0ZVVJJyApO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdC8vIEhpdCB3aGVuIGFsbCBwcm9taXNlcyBhcmUgZG9uZS4uLlxuXHRcdFRUUHJvbWlzZS53YWl0KCAnUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudCcsICd1cGRhdGVVSScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0JHRoaXMub25GcmVxdWVuY3lDaGFuZ2UoKTtcblx0XHRcdCR0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRba2V5XSA9IGNfdmFsdWU7XG5cdFx0XHQkdGhpcy52YWxpZGF0ZSgpO1xuXHRcdFx0JHRoaXMudXBkYXRlRnV0dXJlRGF0ZXMoKTtcblx0XHR9ICk7XG5cdH1cblxuXHR1cGRhdGVGdXR1cmVEYXRlcygpIHtcblx0XHREZWJ1Zy5UZXh0KCAnVXBkYXRpbmcgcmVtaXR0YW5jZSBhZ2VuY3kgZXZlbnQgZGF0ZXMuJywgbnVsbCwgbnVsbCwgbnVsbCwgMTAgKTtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdHRoaXMuYXBpLmNhbGN1bGF0ZU5leHRSdW5EYXRlKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQsIHtcblx0XHRcdG9uUmVzdWx0OiBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdFx0XHRyZXN1bHQgPSByZXN1bHQuZ2V0UmVzdWx0KCk7XG5cdFx0XHRcdCR0aGlzLmVkaXRfdmlld191aV9kaWMuc3RhcnRfZGF0ZS5zZXRWYWx1ZSggcmVzdWx0LnN0YXJ0X2RhdGUgKTtcblx0XHRcdFx0JHRoaXMuZWRpdF92aWV3X3VpX2RpYy5lbmRfZGF0ZS5zZXRWYWx1ZSggcmVzdWx0LmVuZF9kYXRlICk7XG5cdFx0XHRcdCR0aGlzLmVkaXRfdmlld191aV9kaWMuZHVlX2RhdGUuc2V0VmFsdWUoIHJlc3VsdC5kdWVfZGF0ZSApO1xuXHRcdFx0XHQkdGhpcy5lZGl0X3ZpZXdfdWlfZGljLm5leHRfcmVtaW5kZXJfZGF0ZS5zZXRWYWx1ZSggcmVzdWx0Lm5leHRfcmVtaW5kZXJfZGF0ZSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdG9uRnJlcXVlbmN5Q2hhbmdlKCBhcmcgKSB7XG5cdFx0aWYgKCAhR2xvYmFsLmlzU2V0KCBhcmcgKSApIHtcblxuXHRcdFx0aWYgKCAhR2xvYmFsLmlzU2V0KCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmRbJ2ZyZXF1ZW5jeV9pZCddICkgKSB7XG5cdFx0XHRcdHRoaXMuY3VycmVudF9lZGl0X3JlY29yZFsnZnJlcXVlbmN5X2lkJ10gPSAxMDtcblx0XHRcdH1cblxuXHRcdFx0YXJnID0gdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkWydmcmVxdWVuY3lfaWQnXTtcblx0XHR9XG5cblx0XHREZWJ1Zy5UZXh0KCAnU2VsZWN0ZWQgRnJlcXVlbmN5OiAnICsgYXJnLCBudWxsLCBudWxsLCBudWxsLCAxMCApO1xuXHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3dlZWsnICk7XG5cdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAncHJpbWFyeV9tb250aCcgKTtcblx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdwcmltYXJ5X2RheV9vZl9tb250aCcgKTtcblx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdzZWNvbmRhcnlfbW9udGgnICk7XG5cdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAnc2Vjb25kYXJ5X2RheV9vZl9tb250aCcgKTtcblx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdkYXlfb2Zfd2VlaycgKTtcblx0XHR0aGlzLmRldGFjaEVsZW1lbnQoICdkdWVfZGF0ZV9kZWxheV9kYXlzJyApO1xuXHRcdHRoaXMuZGV0YWNoRWxlbWVudCggJ3F1YXJ0ZXJfbW9udGgnICk7XG5cdFx0dGhpcy5kZXRhY2hFbGVtZW50KCAncGF5X3BlcmlvZF9zY2hlZHVsZV9pZCcgKTtcblxuXHRcdGlmICggYXJnID09IDEwMDAgKSB7IC8vZWFjaCBwYXkgcGVyaW9kXG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdwYXlfcGVyaW9kX3NjaGVkdWxlX2lkJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnZHVlX2RhdGVfZGVsYXlfZGF5cycgKTtcblx0XHR9IGVsc2UgaWYgKCBhcmcgPT0gMjAwMCApIHsgLy9hbm51YWxseVxuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncHJpbWFyeV9tb250aCcgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5wcmltYXJ5X21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdNb250aCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3ByaW1hcnlfZGF5X29mX21vbnRoJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljLnByaW1hcnlfZGF5X29mX21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdEYXkgT2YgTW9udGgnICk7XG5cdFx0fSBlbHNlIGlmICggYXJnID09IDIxMDAgKSB7IC8vWWVhci1Uby1EYXRlXG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdwcmltYXJ5X2RheV9vZl9tb250aCcgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5wcmltYXJ5X2RheV9vZl9tb250aC5wYXJlbnRzKCAnLmVkaXQtdmlldy1mb3JtLWl0ZW0tZGl2JyApLmZpbmQoICcuZWRpdC12aWV3LWZvcm0taXRlbS1sYWJlbCcgKS5odG1sKCAnRGF5IE9mIE1vbnRoJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncHJpbWFyeV9tb250aCcgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5wcmltYXJ5X21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdNb250aCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2R1ZV9kYXRlX2RlbGF5X2RheXMnICk7XG5cdFx0fSBlbHNlIGlmICggYXJnID09IDIyMDAgKSB7IC8vU2VtaS1Bbm51YWxseVxuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncHJpbWFyeV9kYXlfb2ZfbW9udGgnICk7XG5cdFx0XHR0aGlzLmVkaXRfdmlld191aV9kaWMucHJpbWFyeV9kYXlfb2ZfbW9udGgucGFyZW50cyggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWRpdicgKS5maW5kKCAnLmVkaXQtdmlldy1mb3JtLWl0ZW0tbGFiZWwnICkuaHRtbCggJ1ByaW1hcnkgRGF5IE9mIE1vbnRoJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAncHJpbWFyeV9tb250aCcgKTtcblx0XHRcdHRoaXMuZWRpdF92aWV3X3VpX2RpYy5wcmltYXJ5X21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdQcmltYXJ5IE1vbnRoJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnc2Vjb25kYXJ5X21vbnRoJyApO1xuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnc2Vjb25kYXJ5X2RheV9vZl9tb250aCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ2R1ZV9kYXRlX2RlbGF5X2RheXMnICk7XG5cdFx0fSBlbHNlIGlmICggYXJnID09IDMwMDAgKSB7Ly9RdWFydGVybHlcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3ByaW1hcnlfZGF5X29mX21vbnRoJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljLnByaW1hcnlfZGF5X29mX21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdEYXkgT2YgTW9udGgnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdxdWFydGVyX21vbnRoJyApO1xuXHRcdH0gZWxzZSBpZiAoIGFyZyA9PSA0MTAwICkgeyAvL21vbnRobHlcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3ByaW1hcnlfZGF5X29mX21vbnRoJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljLnByaW1hcnlfZGF5X29mX21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdEYXkgT2YgTW9udGgnICk7XG5cdFx0fSBlbHNlIGlmICggYXJnID09IDQyMDAgKSB7IC8vc2VtaW1vbnRobHlcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3ByaW1hcnlfZGF5X29mX21vbnRoJyApO1xuXHRcdFx0dGhpcy5lZGl0X3ZpZXdfdWlfZGljLnByaW1hcnlfZGF5X29mX21vbnRoLnBhcmVudHMoICcuZWRpdC12aWV3LWZvcm0taXRlbS1kaXYnICkuZmluZCggJy5lZGl0LXZpZXctZm9ybS1pdGVtLWxhYmVsJyApLmh0bWwoICdQcmltYXJ5IERheSBPZiBNb250aCcgKTtcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3NlY29uZGFyeV9kYXlfb2ZfbW9udGgnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdkdWVfZGF0ZV9kZWxheV9kYXlzJyApO1xuXHRcdH0gZWxzZSBpZiAoIGFyZyA9PSA1MTAwICkgeyAvL3dlZWtseVxuXHRcdFx0dGhpcy5hdHRhY2hFbGVtZW50KCAnZGF5X29mX3dlZWsnICk7XG5cdFx0fSBlbHNlIGlmICggYXJnID09IDkwMTAwIHx8IGFyZyA9PSA5MDIwMCApIHsgLy9PbiBIaXJlL1Rlcm1pbmF0aW9uXG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdkdWVfZGF0ZV9kZWxheV9kYXlzJyApO1xuXHRcdH0gZWxzZSBpZiAoIGFyZyA9PSA5MDMxMCApIHsgLy9PbiBUZXJtaW5hdGlvbiAoUGF5IFBlcmlvZCBFbmQgRGF0ZSlcblx0XHRcdHRoaXMuYXR0YWNoRWxlbWVudCggJ3BheV9wZXJpb2Rfc2NoZWR1bGVfaWQnICk7XG5cdFx0XHR0aGlzLmF0dGFjaEVsZW1lbnQoICdkdWVfZGF0ZV9kZWxheV9kYXlzJyApO1xuXHRcdH1cblxuXHRcdHRoaXMuZWRpdEZpZWxkUmVzaXplKCk7XG5cdH1cblxuXHRzZXREZWZhdWx0TWVudU1hc3NFZGl0SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoICkge1xuXHRcdENvbnRleHRNZW51TWFuYWdlci5oaWRlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlIClcblx0fVxuXG5cdHNldERlZmF1bHRNZW51U2F2ZUFuZENvcHlJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGggKSB7XG5cdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmhpZGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKVxuXHR9XG5cblx0LyoganNoaW50IGlnbm9yZTplbmQgKi9cblxuXHQvL01ha2Ugc3VyZSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgaXMgdXBkYXRlZCBiZWZvcmUgdmFsaWRhdGVcblx0Ly8gdmFsaWRhdGUoKSB7XG5cdC8vIFx0dmFyICR0aGlzID0gdGhpcztcblx0Ly8gXHR2YXIgcmVjb3JkID0ge307XG5cdC8vIFx0TG9jYWxDYWNoZURhdGEuY3VycmVudF9kb2luZ19jb250ZXh0X2FjdGlvbiA9ICd2YWxpZGF0ZSc7XG5cdC8vIFx0aWYgKCB0aGlzLmlzX21hc3NfZWRpdGluZyApIHtcblx0Ly8gXHRcdGZvciAoIHZhciBrZXkgaW4gdGhpcy5lZGl0X3ZpZXdfdWlfZGljICkge1xuXHQvLyBcdFx0XHR2YXIgd2lkZ2V0ID0gdGhpcy5lZGl0X3ZpZXdfdWlfZGljW2tleV07XG5cdC8vXG5cdC8vIFx0XHRcdGlmICggR2xvYmFsLmlzU2V0KCB3aWRnZXQuaXNDaGVja2VkICkgKSB7XG5cdC8vIFx0XHRcdFx0aWYgKCB3aWRnZXQuaXNDaGVja2VkKCkgJiYgd2lkZ2V0LmdldEVuYWJsZWQoKSApIHtcblx0Ly8gXHRcdFx0XHRcdHJlY29yZFtrZXldID0gd2lkZ2V0LmdldFZhbHVlKCk7XG5cdC8vIFx0XHRcdFx0fVxuXHQvLyBcdFx0XHR9XG5cdC8vIFx0XHR9XG5cdC8vIFx0fSBlbHNlIHtcblx0Ly8gXHRcdGlmICggR2xvYmFsLmlzQXJyYXkoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC51c2VyX2lkICkgJiYgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfaWQubGVuZ3RoID4gMCApIHtcblx0Ly8gXHRcdFx0cmVjb3JkID0gW107XG5cdC8vIFx0XHRcdCQuZWFjaCggdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnVzZXJfaWQsIGZ1bmN0aW9uKCBpbmRleCwgdmFsdWUgKSB7XG5cdC8vXG5cdC8vIFx0XHRcdFx0dmFyIGNvbW1vblJlY29yZCA9IEdsb2JhbC5jbG9uZSggJHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCApO1xuXHQvLyBcdFx0XHRcdGNvbW1vblJlY29yZC51c2VyX2lkID0gdmFsdWU7XG5cdC8vIFx0XHRcdFx0cmVjb3JkLnB1c2goIGNvbW1vblJlY29yZCApO1xuXHQvL1xuXHQvLyBcdFx0XHR9ICk7XG5cdC8vIFx0XHR9IGVsc2Uge1xuXHQvLyBcdFx0XHRyZWNvcmQgPSB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQ7XG5cdC8vIFx0XHR9XG5cdC8vIFx0fVxuXHQvLyBcdHRoaXMuYXBpWyd2YWxpZGF0ZScgKyB0aGlzLmFwaS5rZXlfbmFtZV0oIHJlY29yZCwge1xuXHQvLyBcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdC8vIFx0XHRcdCR0aGlzLnZhbGlkYXRlUmVzdWx0KCByZXN1bHQgKTtcblx0Ly8gXHRcdH1cblx0Ly8gXHR9ICk7XG5cdC8vIH0sXG5cblx0c2V0RGVmYXVsdE1lbnVJbXBvcnRJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGgsIHBJZCApIHtcblx0fVxuXG5cdGNvcHlBc05ld1Jlc2V0SWRzKCByZWNvcmQgKSB7XG5cdFx0cmVjb3JkWydpZCddID0gJyc7XG5cdFx0cmVjb3JkWydzdGFydF9kYXRlJ10gPSAnJztcblx0XHRyZWNvcmRbJ2VuZF9kYXRlJ10gPSAnJztcblx0XHRyZWNvcmRbJ2R1ZV9kYXRlJ10gPSAnJztcblx0XHRyZWNvcmRbJ2xhc3RfZHVlX2RhdGUnXSA9ICcnO1xuXHRcdHJlY29yZFsnbmV4dF9yZW1pbmRlcl9kYXRlJ10gPSAnJztcblx0XHRyZWNvcmRbJ2xhc3RfcmVtaW5kZXJfZGF0ZSddID0gJyc7XG5cdFx0cmV0dXJuIHJlY29yZDtcblx0fVxuXG5cdG9uQ3VzdG9tQ29udGV4dENsaWNrKCBpZCApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2ltcG9ydF9pY29uJzpcblx0XHRcdFx0dGhpcy5vbkltcG9ydENsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNldEVkaXRNZW51U2F2ZUFuZENvbnRpbnVlSWNvbiggY29udGV4dF9idG4sIHBJZCApIHtcblx0XHR0aGlzLnNhdmVBbmRDb250aW51ZVZhbGlkYXRlKCBjb250ZXh0X2J0biApO1xuXG5cdFx0aWYgKCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkIHx8ICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldEVkaXRNZW51U2F2ZUFuZEFkZEljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0dGhpcy5zYXZlQW5kTmV3VmFsaWRhdGUoIGNvbnRleHRfYnRuICk7XG5cblx0XHRpZiAoICF0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgfHwgIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdE1lbnVTYXZlQW5kQ29weUljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0dGhpcy5zYXZlQW5kQ29udGludWVWYWxpZGF0ZSggY29udGV4dF9idG4gKTtcblxuXHRcdGlmICggIXRoaXMuY3VycmVudF9lZGl0X3JlY29yZCB8fCAhdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRidWlsZEVkaXRWaWV3VUkoKSB7XG5cdFx0c3VwZXIuYnVpbGRFZGl0Vmlld1VJKCk7XG5cdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHR2YXIgZm9ybV9pdGVtX2lucHV0O1xuXG5cdFx0dmFyIHRhYl9tb2RlbCA9IHtcblx0XHRcdCd0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudCc6IHsgJ2xhYmVsJzogJC5pMThuLl8oICdSZW1pdHRhbmNlIEFnZW5jeSBFdmVudCcgKSB9LFxuXHRcdFx0J3RhYl9hdWRpdCc6IHRydWUsXG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHRoaXMubmF2aWdhdGlvbi5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudCxcblx0XHRcdGlkOiB0aGlzLnNjcmlwdF9uYW1lICsgJ19uYXZpZ2F0aW9uJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5Jyxcblx0XHRcdG5hdmlnYXRpb25fbW9kZTogdHJ1ZSxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZVxuXHRcdH0gKTtcblxuXHRcdHRoaXMuc2V0TmF2aWdhdGlvbigpO1xuXG5cdFx0dmFyIHRhYl9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50ID0gdGhpcy5lZGl0X3ZpZXdfdGFiLmZpbmQoICcjdGFiX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfZXZlbnQnICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdGFic1swXSA9IFtdO1xuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfZXZlbnQgKTtcblx0XHR2YXIgdGFiX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfZXZlbnRfY29sdW1uXzEgPSB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudC5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVBheXJvbGxSZW1pdHRhbmNlQWdlbmN5LFxuXHRcdFx0YWxsb3dfbXVsdGlwbGVfc2VsZWN0aW9uOiBmYWxzZSxcblx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3knLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlLFxuXHRcdFx0c2V0X2VtcHR5OiBmYWxzZSxcblx0XHRcdGZpZWxkOiAncGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9pZCdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdSZW1pdHRhbmNlIEFnZW5jeScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7XG5cdFx0XHRmaWVsZDogJ3N0YXR1c19pZCdcblx0XHR9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnN0YXR1c19hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU3RhdHVzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50X2NvbHVtbl8xICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHtcblx0XHRcdGZpZWxkOiAndHlwZV9pZCdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUeXBlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50X2NvbHVtbl8xICk7XG5cblx0XHQvLyBQYXltZW50IEZyZXF1ZW5jeVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCgge1xuXHRcdFx0ZmllbGQ6ICdmcmVxdWVuY3lfaWQnXG5cdFx0fSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCAkdGhpcy5mcmVxdWVuY3lfYXJyYXkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0ZyZXF1ZW5jeScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSApO1xuXG5cdFx0Ly8gUGF5bWVudCBGcmVxdWVuY3kgTW9udGhcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdwcmltYXJ5X21vbnRoJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoIEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCAkdGhpcy5tb250aF9vZl95ZWFyX2FycmF5ICkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1ByaW1hcnkgTW9udGgnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfZXZlbnRfY29sdW1uXzEsICcnLCBudWxsLCB0cnVlICk7XG5cblx0XHQvLyBQYXltZW50IEZyZXF1ZW5jeSBEYXkgT2YgTW9udGhcblx0XHQvLyBEYXkgb2YgdGhlIE1vbnRoXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAncHJpbWFyeV9kYXlfb2ZfbW9udGgnIH0gKTtcblx0XHR2YXIgZGF5X29mX21vbnRoX2FycmF5ID0gR2xvYmFsLmFkZExhc3RJdGVtVG9BcnJheSggJHRoaXMuZGF5X29mX21vbnRoX2FycmF5LCAtMSwgJC5pMThuLl8oICctIExhc3QgRGF5IE9mIE1vbnRoIC0nICkgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggZGF5X29mX21vbnRoX2FycmF5ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdQcmltYXJ5IERheSBvZiBNb250aCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IE1vbnRoXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnc2Vjb25kYXJ5X21vbnRoJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoIEdsb2JhbC5idWlsZFJlY29yZEFycmF5KCAkdGhpcy5tb250aF9vZl95ZWFyX2FycmF5ICkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1NlY29uZGFyeSBNb250aCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IERheSBPZiBNb250aFxuXHRcdC8vIERheSBvZiB0aGUgTW9udGhcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UQ29tYm9Cb3goIHsgZmllbGQ6ICdzZWNvbmRhcnlfZGF5X29mX21vbnRoJyB9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoIGRheV9vZl9tb250aF9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU2Vjb25kYXJ5IERheSBvZiBNb250aCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IFdlZWtcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3dlZWsnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoICR0aGlzLndlZWtfaW50ZXJ2YWxfYXJyYXkgKSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnV2VlaycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IHF1YXJ0ZXIgTW9udGhcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkNPTUJPX0JPWCApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRDb21ib0JveCggeyBmaWVsZDogJ3F1YXJ0ZXJfbW9udGgnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggJHRoaXMubW9udGhfb2ZfcXVhcnRlcl9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnTW9udGggb2YgUXVhcnRlcicgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIERheSBvZiB0aGUgd2Vla1xuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ09NQk9fQk9YICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAnZGF5X29mX3dlZWsnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuc2V0U291cmNlRGF0YSggR2xvYmFsLmJ1aWxkUmVjb3JkQXJyYXkoICR0aGlzLmRheV9vZl93ZWVrX2FycmF5ICkgKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0RheSBvZiB3ZWVrJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50X2NvbHVtbl8xLCAnJywgbnVsbCwgdHJ1ZSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFwaV9jbGFzczogVFRBUEkuQVBJUGF5UGVyaW9kU2NoZWR1bGUsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IHRydWUsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9wYXlfcGVyaW9kX3NjaGVkdWxlJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9zcGVjaWFsX2VtcHR5OiB0cnVlLFxuXHRcdFx0c2V0X2FueTogdHJ1ZSxcblx0XHRcdGZpZWxkOiAncGF5X3BlcmlvZF9zY2hlZHVsZV9pZCdcblx0XHR9ICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LnNldFNvdXJjZURhdGEoICR0aGlzLnNhdmVkX3JlcG9ydF9hcnJheSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUGF5IFBlcmlvZCBTY2hlZHVsZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IERheXMgQWZ0ZXIgVHJhbnNhY3Rpb24gRGF0ZVxuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUICk7XG5cblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ2R1ZV9kYXRlX2RlbGF5X2RheXMnLCB3aWR0aDogNTAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnRHVlIERhdGUgRGVsYXkgRGF5cycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIEVmZmVjdGl2ZSBEYXRlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5EQVRFX1BJQ0tFUiApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5URGF0ZVBpY2tlcigge1xuXHRcdFx0ZmllbGQ6ICdlZmZlY3RpdmVfZGF0ZSdcblx0XHR9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdFZmZlY3RpdmUgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSApO1xuXG5cdFx0Ly91c2VyIHRvIHJlbWluZFxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSVVzZXIsXG5cdFx0XHRhbGxvd19tdWx0aXBsZV9zZWxlY3Rpb246IGZhbHNlLFxuXHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfdXNlcicsXG5cdFx0XHRzaG93X3NlYXJjaF9pbnB1dHM6IHRydWUsXG5cdFx0XHRzZXRfZW1wdHk6IHRydWUsXG5cdFx0XHRmaWVsZDogJ3JlbWluZGVyX3VzZXJfaWQnXG5cdFx0fSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU2VuZCBSZW1pbmRlciBUbycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5BV0VTT01FX0JPWCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5BQ29tYm9Cb3goIHtcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF91c2VyX3JlcG9ydF9kYXRhJyxcblx0XHRcdHNob3dfc2VhcmNoX2lucHV0czogdHJ1ZSxcblx0XHRcdHNldF9kZWZhdWx0OiB0cnVlLFxuXHRcdFx0ZmllbGQ6ICd1c2VyX3JlcG9ydF9kYXRhX2lkJ1xuXHRcdH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ1NhdmVkIFJlcG9ydCcgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFBheW1lbnQgRnJlcXVlbmN5IHJlbWluZGVyIGRheXNcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFRfSU5QVVQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHRJbnB1dCggeyBmaWVsZDogJ3JlbWluZGVyX2RheXMnLCB3aWR0aDogNTAgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUmVtaW5kZXIgRGF5cycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycgKTtcblxuXHRcdC8vTm90ZVxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVF9BUkVBICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0QXJlYSggeyBmaWVsZDogJ25vdGUnLCB3aWR0aDogJzEwMCUnLCByb3dzOiA1IH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ05vdGVzJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9wYXlyb2xsX3JlbWl0dGFuY2VfYWdlbmN5X2V2ZW50X2NvbHVtbl8xLCAnJywgbnVsbCwgdHJ1ZSwgdHJ1ZSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5wYXJlbnQoKS53aWR0aCggJzUwJScgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuQ0hFQ0tCT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENoZWNrYm94KCB7IGZpZWxkOiAnZW5hYmxlX3JlY2FsY3VsYXRlX2RhdGVzJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdSZWNhbGN1bGF0ZSBEYXRlcycgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdC8vIFJlY2FsY3VsYXRlIERhdGVzIEZyb21cblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLkRBVEVfUElDS0VSICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlREYXRlUGlja2VyKCB7XG5cdFx0XHRmaWVsZDogJ3JlY2FsY3VsYXRlX2RhdGUnXG5cdFx0fSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUmVjYWxjdWxhdGUgRGF0ZXMgRnJvbScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSApO1xuXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0KCB7IGZpZWxkOiAnc3RhcnRfZGF0ZScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnU3RhcnQgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dCggeyBmaWVsZDogJ2VuZF9kYXRlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdFbmQgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dCggeyBmaWVsZDogJ2R1ZV9kYXRlJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdEdWUgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHRcdGZvcm1faXRlbV9pbnB1dCA9IEdsb2JhbC5sb2FkV2lkZ2V0QnlOYW1lKCBGb3JtSXRlbVR5cGUuVEVYVCApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5UVGV4dCggeyBmaWVsZDogJ25leHRfcmVtaW5kZXJfZGF0ZScgfSApO1xuXHRcdHRoaXMuYWRkRWRpdEZpZWxkVG9Db2x1bW4oICQuaTE4bi5fKCAnUmVtaW5kZXIgRGF0ZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfcGF5cm9sbF9yZW1pdHRhbmNlX2FnZW5jeV9ldmVudF9jb2x1bW5fMSwgJycsIG51bGwsIHRydWUgKTtcblxuXHR9XG5cbn1cblxuUGF5cm9sbFJlbWl0dGFuY2VBZ2VuY3lFdmVudFZpZXdDb250cm9sbGVyLmxvYWRTdWJWaWV3ID0gZnVuY3Rpb24oIGNvbnRhaW5lciwgYmVmb3JlVmlld0xvYWRlZEZ1biwgYWZ0ZXJWaWV3TG9hZGVkRnVuICkge1xuXHRHbG9iYWwubG9hZFZpZXdTb3VyY2UoICdQYXlyb2xsUmVtaXR0YW5jZUFnZW5jeUV2ZW50JywgJ1N1YlBheXJvbGxSZW1pdHRhbmNlQWdlbmN5RXZlbnRWaWV3Lmh0bWwnLCBmdW5jdGlvbiggcmVzdWx0ICkge1xuXHRcdHZhciBhcmdzID0ge307XG5cdFx0dmFyIHRlbXBsYXRlID0gXy50ZW1wbGF0ZSggcmVzdWx0ICk7XG5cdFx0aWYgKCBHbG9iYWwuaXNTZXQoIGJlZm9yZVZpZXdMb2FkZWRGdW4gKSApIHtcblx0XHRcdGJlZm9yZVZpZXdMb2FkZWRGdW4oKTtcblx0XHR9XG5cblx0XHRpZiAoIEdsb2JhbC5pc1NldCggY29udGFpbmVyICkgKSB7XG5cdFx0XHRjb250YWluZXIuaHRtbCggdGVtcGxhdGUoIGFyZ3MgKSApO1xuXG5cdFx0XHRpZiAoIEdsb2JhbC5pc1NldCggYWZ0ZXJWaWV3TG9hZGVkRnVuICkgKSB7XG5cdFx0XHRcdGFmdGVyVmlld0xvYWRlZEZ1biggc3ViX3BheXJvbGxfcmVtaXR0YW5jZV9hZ2VuY3lfZXZlbnRfdmlld19jb250cm9sbGVyICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///542\n")}}]);