TimeTrex/interface/html5/dist/my_account-notification-NotificationViewController.bundle.js

1 line
47 KiB
JavaScript

"use strict";(self.webpackChunktimetrex=self.webpackChunktimetrex||[]).push([["my_account-notification-NotificationViewController"],{2159:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"NotificationViewController\": () => (/* binding */ NotificationViewController)\n/* harmony export */ });\n/* provided dependency */ var _ = __webpack_require__(9050);\n/* provided dependency */ var $ = __webpack_require__(9755);\nclass NotificationViewController extends BaseViewController {\n\tconstructor( options = {} ) {\n\t\t_.defaults( options, {\n\t\t\tel: '#notification_view_container',\n\n\t\t\tis_viewing: null,\n\t\t\tstatus_id_array: null,\n\t\t\ttype_id_array: null\n\n\t\t} );\n\n\t\tsuper( options );\n\t}\n\n\tinit( options ) {\n\t\t//this._super('initialize', options );\n\t\tthis.edit_view_tpl = 'NotificationEditView.html';\n\t\tthis.permission_id = 'notification';\n\t\tthis.viewId = 'Notification';\n\t\tthis.script_name = 'NotificationView';\n\t\tthis.table_name_key = 'Notification';\n\t\tthis.navigate_link = '';\n\t\tthis.selected_payload = {};\n\t\tthis.context_menu_name = $.i18n._( 'Notifications' );\n\t\tthis.navigation_label = $.i18n._( 'Notification' );\n\t\tthis.api = TTAPI.APINotification;\n\n\t\tthis.is_viewing = false;\n\n\t\tthis.render();\n\t\tthis.buildContextMenu();\n\n\t\tthis.initData();\n\t}\n\n\tinitOptions() {\n\t\tthis.initDropDownOption( 'type', 'type_id', this.api );\n\t\tthis.initDropDownOption( 'status', 'status_id', this.api );\n\t}\n\n\tonGridDblClickRow( e ) {\n\t\t// shorten it's path as its only ever a view click\n\t\tProgressBar.showOverlay();\n\t\tthis.onViewClick();\n\t\tthis.setDefaultMenu( true );\n\t}\n\n\tgetFilterColumnsFromDisplayColumns() {\n\t\tvar column_filter = {};\n\n\t\tcolumn_filter.id = true;\n\t\tcolumn_filter.object_id = true;\n\t\tcolumn_filter.payload_data = true;\n\t\tcolumn_filter.status_id = true;\n\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\tvar len = display_columns.length;\n\n\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\tvar column_info = display_columns[i];\n\t\t\t\tcolumn_filter[column_info.name] = true;\n\t\t\t}\n\t\t}\n\n\t\treturn column_filter;\n\t}\n\n\tsetGridCellBackGround() {\n\t\tvar data = this.grid.getGridParam( 'data' );\n\n\t\t//Error: TypeError: data is undefined in /interface/html5/framework/jquery.min.js?v=7.4.6-20141027-074127 line 2 > eval line 70\n\t\tif ( !data ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar len = data.length;\n\n\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\tvar item = data[i];\n\n\t\t\tif ( item.status_id == 10 ) {\n\t\t\t\t$( 'tr[id=\\'' + item.id + '\\'] td' ).css( 'font-weight', 'bold' );\n\t\t\t}\n\t\t}\n\t}\n\n\tgetCustomContextMenuModel() {\n\t\tvar context_menu_model = {\n\t\t\tgroups: {\n\t\t\t\tother: {\n\t\t\t\t\tlabel: $.i18n._( 'Other' ),\n\t\t\t\t\tid: this.script_name + 'other',\n\t\t\t\t\tsort_order: 9000\n\t\t\t\t},\n\t\t\t\tmark: {\n\t\t\t\t\tlabel: $.i18n._( 'Mark' ),\n\t\t\t\t\tid: this.viewId + 'mark',\n\t\t\t\t\tsort_order: 8000\n\t\t\t\t}\n\t\t\t},\n\t\t\texclude: [\n\t\t\t\t'save_and_continue',\n\t\t\t\t'save_and_next',\n\t\t\t\t'save_and_new',\n\t\t\t\t'save_and_copy',\n\t\t\t\t'save',\n\t\t\t\t'copy',\n\t\t\t\t'copy_as_new',\n\t\t\t\t'edit',\n\t\t\t\t'new_add',\n\t\t\t\t'add',\n\t\t\t\t'mass_edit',\n\t\t\t\t'export_excel',\n\t\t\t\t'delete_and_next'\n\n\t\t\t],\n\t\t\tinclude: [\n\t\t\t\t'view',\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Jump To' ),\n\t\t\t\t\tid: 'navigate',\n\t\t\t\t\tvue_icon: 'tticon tticon-north_east_black_24dp',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\tpermission_result: true,\n\t\t\t\t\tpermission: 8200,\n\t\t\t\t\tsort_order: 8100\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: '', //Empty label. vue_icon is displayed instead of text.\n\t\t\t\t\tid: 'other_header',\n\t\t\t\t\tmenu_align: 'right',\n\t\t\t\t\taction_group: 'other',\n\t\t\t\t\taction_group_header: true,\n\t\t\t\t\tvue_icon: 'tticon tticon-more_vert_black_24dp',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Mark: Read' ),\n\t\t\t\t\tid: 'read',\n\t\t\t\t\tmenu_align: 'left',\n\t\t\t\t\taction_group: 'mark',\n\t\t\t\t\tpermission_result: true,\n\t\t\t\t\tpermission: null,\n\t\t\t\t\tsort_order: 8000\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: $.i18n._( 'Mark: UnRead' ),\n\t\t\t\t\tid: 'unread',\n\t\t\t\t\tmenu_align: 'left',\n\t\t\t\t\taction_group: 'mark',\n\t\t\t\t\tpermission_result: true,\n\t\t\t\t\tpermission: null,\n\t\t\t\t\tsort_order: 8100\n\t\t\t\t},\n\t\t\t]\n\t\t};\n\n\t\treturn context_menu_model;\n\t}\n\n\tonCustomContextClick( id, context_btn ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'close_misc':\n\t\t\tcase 'cancel':\n\t\t\t\tthis.onCancelClick();\n\t\t\t\tbreak;\n\t\t\tcase 'read':\n\t\t\t\tthis.onReadClick();\n\t\t\t\tbreak;\n\t\t\tcase 'unread':\n\t\t\t\tthis.onUnReadClick();\n\t\t\t\tbreak;\n\t\t\tcase 'navigate':\n\t\t\t\tthis.onNavigateClick();\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\toncancelClick() {\n\t\tthis.removeEditView();\n\t}\n\n\tonReadClick() {\n\t\tvar notification_ids = [];\n\t\tif ( this.is_viewing && this.current_edit_record ) {\n\t\t\tnotification_ids.push( this.current_edit_record.id );\n\t\t} else {\n\t\t\tnotification_ids = this.getGridSelectIdArray();\n\t\t}\n\n\t\tif ( notification_ids.length > 0 ) {\n\t\t\tvar $this = this;\n\n\t\t\tthis.api['setNotificationStatus']( notification_ids, 20, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tif ( $this.is_viewing ) {\n\t\t\t\t\t\t$this.removeEditView();\n\t\t\t\t\t}\n\t\t\t\t\t$this.search( false );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tonUnReadClick() {\n\t\tvar notification_ids = [];\n\t\tif ( this.is_viewing && this.current_edit_record ) {\n\t\t\tnotification_ids.push( this.current_edit_record.id );\n\t\t} else {\n\t\t\tnotification_ids = this.getGridSelectIdArray();\n\t\t}\n\n\t\tif ( notification_ids.length > 0 ) {\n\t\t\tvar $this = this;\n\n\t\t\tthis.api['setNotificationStatus']( notification_ids, 10, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\tif ( $this.is_viewing ) {\n\t\t\t\t\t\t$this.removeEditView();\n\t\t\t\t\t}\n\t\t\t\t\t$this.search( false );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t}\n\n\tonNavigateClick() {\n\t\tif ( this.navigate_link !== '' ) {\n\t\t\t// If viewing a notification the view needs to be closed for window.location to work correctly for links that open another onViewClick view.\n\t\t\tif ( this.is_viewing == true ) {\n\t\t\t\tthis.onCancelClick();\n\t\t\t}\n\n\t\t\tif ( this.navigate_link === 'open_view' ) {\n\t\t\t\tfor ( let i = 0; i < this.selected_payload.timetrex.event.length; i++ ) {\n\t\t\t\t\tif ( this.selected_payload.timetrex.event[i].type === 'open_view' || this.selected_payload.timetrex.event[i].type === 'open_view_immediate' ) {\n\t\t\t\t\t\tNotificationConsumer.openViewLinkedToNotification( this.selected_payload.timetrex.event[i] );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( this.selected_payload.link_target && this.selected_payload.link_target === '_blank' ) {\n\t\t\t\t\twindow.open(\n\t\t\t\t\t\tthis.navigate_link,\n\t\t\t\t\t\t'_blank'\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\twindow.location = this.navigate_link;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetNavigateLink() {\n\t\tthis.navigate_link = '';\n\n\t\tvar data = this.grid.getGridParam( 'data' );\n\n\t\tif ( !data ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar notification_ids = [];\n\n\t\tif ( this.current_edit_record && this.current_edit_record.id ) {\n\t\t\tnotification_ids.push( this.current_edit_record.id );\n\t\t} else {\n\t\t\tnotification_ids = this.getGridSelectIdArray();\n\t\t}\n\n\t\tif ( notification_ids.length === 1 ) {\n\t\t\tvar len = data.length;\n\n\t\t\tfor ( var i = 0; i < len; i++ ) {\n\t\t\t\tvar item = data[i];\n\n\t\t\t\tif ( item.id === notification_ids[0] ) {\n\t\t\t\t\t//Check if payload has an \"open_view\" or \"open_view_immediate\" event for opening and passing data to a edit view.\n\t\t\t\t\tif ( item.payload_data.timetrex !== undefined && item.payload_data.timetrex.event !== undefined ) {\n\t\t\t\t\t\tfor ( let i = 0; i < item.payload_data.timetrex.event.length; i++ ) {\n\t\t\t\t\t\t\tif ( item.payload_data.timetrex.event[i].type === 'open_view' || item.payload_data.timetrex.event[i].type === 'open_view_immediate' ) {\n\t\t\t\t\t\t\t\tthis.navigate_link = 'open_view';\n\t\t\t\t\t\t\t\tthis.selected_payload = item.payload_data;\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ( item.payload_data.link !== undefined && item.payload_data.link !== '' ) {\n\t\t\t\t\t\t//Normal navigation link found.\n\t\t\t\t\t\tthis.navigate_link = item.payload_data.link;\n\t\t\t\t\t\tthis.selected_payload = item.payload_data;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.navigate_link = '';\n\t\tthis.selected_payload = {};\n\t\treturn false;\n\t}\n\n\tinitEditView() {\n\t\tif ( this.current_edit_record && this.current_edit_record.status_id == 10 ) {\n\t\t\tvar $this = this;\n\n\t\t\t//Set current notification being viewed as read.\n\t\t\t$this.current_edit_record.status_id = 20;\n\t\t\tthis.api['setNotificationStatus']( [this.current_edit_record.id], 20, {\n\t\t\t\tonResult: function( res ) {\n\t\t\t\t\t$this.search( false );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tsuper.initEditView();\n\t}\n\n\tsetCustomDefaultMenuIcon( id, context_btn, grid_selected_length ) {\n\t\tswitch ( id ) {\n\t\t\tcase 'read':\n\t\t\t\tthis.setDefaultMenuReadIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t\tcase 'unread':\n\t\t\t\tthis.setDefaultMenuUnReadIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t\tcase 'navigate':\n\t\t\t\tthis.setDefaultMenuNavigateIcon( context_btn, grid_selected_length );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetCustomEditMenuIcon( id, context_btn ) {\n\t\tswitch ( id ) {\n\t\t\tcase'navigate':\n\t\t\t\tthis.setDefaultMenuNavigateIcon( context_btn );\n\t\t\t\tbreak;\n\t\t\tcase'read':\n\t\t\t\tthis.setEditMenuReadIcon( context_btn );\n\t\t\t\tbreak;\n\t\t\tcase'unread':\n\t\t\t\tthis.setEditMenuUnReadIcon( context_btn );\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tsetDefaultMenuDeleteAndNextIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( this.is_viewing ) {\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\tsetEditMenuDeleteAndNextIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( this.is_viewing ) {\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\tsetDefaultMenuDeleteIcon( context_btn, grid_selected_length, pId ) {\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\tsetEditMenuDeleteIcon( context_btn, grid_selected_length, pId ) {\n\n\t\tif ( this.is_viewing ) {\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\n\t\tif ( this.is_viewing == false && 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\tsetDefaultMenuCancelIcon( context_btn, pId ) {\n\t\tif ( this.is_viewing ) {\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\tsetDefaultMenuReadIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( grid_selected_length >= 1 ) {\n\t\t\t//Check if any notifications are unread.\n\t\t\tvar selected_items = this.getSelectedItems();\n\t\t\tfor ( var i = 0; i < selected_items.length; i++ ) {\n\t\t\t\tif ( selected_items[i] !== null && selected_items[i].status_id == 10 ) {\n\t\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetDefaultMenuUnReadIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( grid_selected_length >= 1 ) {\n\t\t\t//Check if any notifications are read.\n\t\t\tvar selected_items = this.getSelectedItems();\n\t\t\tfor ( var i = 0; i < selected_items.length; i++ ) {\n\t\t\t\tif ( selected_items[i] !== null && selected_items[i].status_id == 20 ) {\n\t\t\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, true );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetDefaultMenuNavigateIcon( context_btn, grid_selected_length, pId ) {\n\t\tif ( this.is_viewing == true || grid_selected_length === 1 ) {\n\t\t\t// check a link is set in the payload data\n\t\t\tif ( this.setNavigateLink() == true ) {\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} else {\n\t\t\tContextMenuManager.disableMenuItem( this.determineContextMenuMountAttributes().id, context_btn.id, false );\n\t\t}\n\t}\n\n\tsetEditMenuReadIcon( context_btn ) {\n\t\t//Because the notification view closes when clicking \"Mark Read / Unread\" this icon will always be disabled as the message is always read when viewed.\n\t\t//But may be needed in the future.\n\t\tif ( this.current_edit_record && this.current_edit_record.status_id == 10 ) {\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\tsetEditMenuUnReadIcon( context_btn ) {\n\t\tif ( this.current_edit_record && this.current_edit_record.status_id == 20 ) {\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\tbuildEditViewUI() {\n\n\t\tsuper.buildEditViewUI();\n\t\tvar $this = this;\n\n\t\tvar tab_model = {\n\t\t\t'tab_notification': { 'label': $.i18n._( 'Notification' ) }\n\t\t};\n\t\tthis.setTabModel( tab_model );\n\n\t\tvar form_item_input;\n\n\t\tthis.navigation.AComboBox( {\n\t\t\tapi_class: TTAPI.APINotification,\n\t\t\tid: this.script_name + '_navigation',\n\t\t\tallow_multiple_selection: false,\n\t\t\tlayout_name: 'global_notification',\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_notification = $( '#tab_notification' );\n\n\t\tvar tab_notification_column1 = tab_notification.find( '.first-column' );\n\n\t\tthis.edit_view_tabs[0] = [];\n\n\t\tthis.edit_view_tabs[0].push( tab_notification_column1 );\n\n\t\t// Type\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.COMBO_BOX );\n\t\tform_item_input.TComboBox( { field: 'type_id' } );\n\t\tform_item_input.setSourceData( Global.addFirstItemToArray( $this.type_array ) );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Type' ), form_item_input, tab_notification_column1, '' );\n\n\t\t// Date\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'created_date' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Date' ), form_item_input, tab_notification_column1, '' );\n\n\t\t// Title\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'title_long' } );\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Title' ), form_item_input, tab_notification_column1, '' );\n\n\t\t// Body\n\t\tform_item_input = Global.loadWidgetByName( FormItemType.TEXT );\n\t\tform_item_input.TText( { field: 'body_long_text' } );\n\t\tform_item_input.off( 'click' ).on( \"click\", function() {\n\t\t\t$this.onNavigateClick();\n\t\t});\n\t\tthis.addEditFieldToColumn( $.i18n._( 'Message' ), form_item_input, tab_notification_column1, '' );\n\t}\n\n\tbuildSearchFields() {\n\t\tsuper.buildSearchFields();\n\t\tthis.search_fields = [\n\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Status' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'status_id',\n\t\t\t\tmultiple: true,\n\t\t\t\tbasic_search: true,\n\t\t\t\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\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Type' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'type_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\t\t\tnew SearchField( {\n\t\t\t\tlabel: $.i18n._( 'Title' ),\n\t\t\t\tin_column: 1,\n\t\t\t\tfield: 'title_long',\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.TEXT_INPUT\n\t\t\t} )\n\n\t\t];\n\t}\n\n\t// Search is triggered when a notification is marked as read, unread or deleted.\n\t// Search also pulls in new notifications if any have been created which makes it a good time to update the notification bell.\n\tsearch( set_default_menu, page_action, page_number, callBack ) {\n\t\tsuper.search( set_default_menu, page_action, page_number, callBack );\n\t\tif ( Global.UNIT_TEST_MODE == false ) {\n\t\t\tNotificationConsumer.getUnreadNotifications();\n\t\t}\n\t}\n\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ25ELDZCQUE2QixDQUFDOztBQUU5QjtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQjtBQUNqRCw2QkFBNkIsQ0FBQzs7QUFFOUI7QUFDQTtBQUNBLDJCQUEyQiwwQkFBMEI7QUFDckQ7QUFDQTtBQUNBLEdBQUc7QUFDSCw2QkFBNkIsQ0FBQztBQUM5Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsQ0FBQztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxXQUFXLENBQUM7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2ludGVyZmFjZS9odG1sNS92aWV3cy9teV9hY2NvdW50L25vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25WaWV3Q29udHJvbGxlci5qcz81NzYyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25WaWV3Q29udHJvbGxlciBleHRlbmRzIEJhc2VWaWV3Q29udHJvbGxlciB7XG5cdGNvbnN0cnVjdG9yKCBvcHRpb25zID0ge30gKSB7XG5cdFx0Xy5kZWZhdWx0cyggb3B0aW9ucywge1xuXHRcdFx0ZWw6ICcjbm90aWZpY2F0aW9uX3ZpZXdfY29udGFpbmVyJyxcblxuXHRcdFx0aXNfdmlld2luZzogbnVsbCxcblx0XHRcdHN0YXR1c19pZF9hcnJheTogbnVsbCxcblx0XHRcdHR5cGVfaWRfYXJyYXk6IG51bGxcblxuXHRcdH0gKTtcblxuXHRcdHN1cGVyKCBvcHRpb25zICk7XG5cdH1cblxuXHRpbml0KCBvcHRpb25zICkge1xuXHRcdC8vdGhpcy5fc3VwZXIoJ2luaXRpYWxpemUnLCBvcHRpb25zICk7XG5cdFx0dGhpcy5lZGl0X3ZpZXdfdHBsID0gJ05vdGlmaWNhdGlvbkVkaXRWaWV3Lmh0bWwnO1xuXHRcdHRoaXMucGVybWlzc2lvbl9pZCA9ICdub3RpZmljYXRpb24nO1xuXHRcdHRoaXMudmlld0lkID0gJ05vdGlmaWNhdGlvbic7XG5cdFx0dGhpcy5zY3JpcHRfbmFtZSA9ICdOb3RpZmljYXRpb25WaWV3Jztcblx0XHR0aGlzLnRhYmxlX25hbWVfa2V5ID0gJ05vdGlmaWNhdGlvbic7XG5cdFx0dGhpcy5uYXZpZ2F0ZV9saW5rID0gJyc7XG5cdFx0dGhpcy5zZWxlY3RlZF9wYXlsb2FkID0ge307XG5cdFx0dGhpcy5jb250ZXh0X21lbnVfbmFtZSA9ICQuaTE4bi5fKCAnTm90aWZpY2F0aW9ucycgKTtcblx0XHR0aGlzLm5hdmlnYXRpb25fbGFiZWwgPSAkLmkxOG4uXyggJ05vdGlmaWNhdGlvbicgKTtcblx0XHR0aGlzLmFwaSA9IFRUQVBJLkFQSU5vdGlmaWNhdGlvbjtcblxuXHRcdHRoaXMuaXNfdmlld2luZyA9IGZhbHNlO1xuXG5cdFx0dGhpcy5yZW5kZXIoKTtcblx0XHR0aGlzLmJ1aWxkQ29udGV4dE1lbnUoKTtcblxuXHRcdHRoaXMuaW5pdERhdGEoKTtcblx0fVxuXG5cdGluaXRPcHRpb25zKCkge1xuXHRcdHRoaXMuaW5pdERyb3BEb3duT3B0aW9uKCAndHlwZScsICd0eXBlX2lkJywgdGhpcy5hcGkgKTtcblx0XHR0aGlzLmluaXREcm9wRG93bk9wdGlvbiggJ3N0YXR1cycsICdzdGF0dXNfaWQnLCB0aGlzLmFwaSApO1xuXHR9XG5cblx0b25HcmlkRGJsQ2xpY2tSb3coIGUgKSB7XG5cdFx0Ly8gc2hvcnRlbiBpdCdzIHBhdGggYXMgaXRzIG9ubHkgZXZlciBhIHZpZXcgY2xpY2tcblx0XHRQcm9ncmVzc0Jhci5zaG93T3ZlcmxheSgpO1xuXHRcdHRoaXMub25WaWV3Q2xpY2soKTtcblx0XHR0aGlzLnNldERlZmF1bHRNZW51KCB0cnVlICk7XG5cdH1cblxuXHRnZXRGaWx0ZXJDb2x1bW5zRnJvbURpc3BsYXlDb2x1bW5zKCkge1xuXHRcdHZhciBjb2x1bW5fZmlsdGVyID0ge307XG5cblx0XHRjb2x1bW5fZmlsdGVyLmlkID0gdHJ1ZTtcblx0XHRjb2x1bW5fZmlsdGVyLm9iamVjdF9pZCA9IHRydWU7XG5cdFx0Y29sdW1uX2ZpbHRlci5wYXlsb2FkX2RhdGEgPSB0cnVlO1xuXHRcdGNvbHVtbl9maWx0ZXIuc3RhdHVzX2lkID0gdHJ1ZTtcblxuXHRcdC8vIEVycm9yOiBVbmFibGUgdG8gZ2V0IHByb3BlcnR5ICdnZXRHcmlkUGFyYW0nIG9mIHVuZGVmaW5lZCBvciBudWxsIHJlZmVyZW5jZVxuXHRcdHZhciBkaXNwbGF5X2NvbHVtbnMgPSBbXTtcblx0XHRpZiAoIHRoaXMuZ3JpZCApIHtcblx0XHRcdGRpc3BsYXlfY29sdW1ucyA9IHRoaXMuZ3JpZC5nZXRHcmlkUGFyYW0oICdjb2xNb2RlbCcgKTtcblx0XHR9XG5cblx0XHRpZiAoIGRpc3BsYXlfY29sdW1ucyApIHtcblx0XHRcdHZhciBsZW4gPSBkaXNwbGF5X2NvbHVtbnMubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyApIHtcblx0XHRcdFx0dmFyIGNvbHVtbl9pbmZvID0gZGlzcGxheV9jb2x1bW5zW2ldO1xuXHRcdFx0XHRjb2x1bW5fZmlsdGVyW2NvbHVtbl9pbmZvLm5hbWVdID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29sdW1uX2ZpbHRlcjtcblx0fVxuXG5cdHNldEdyaWRDZWxsQmFja0dyb3VuZCgpIHtcblx0XHR2YXIgZGF0YSA9IHRoaXMuZ3JpZC5nZXRHcmlkUGFyYW0oICdkYXRhJyApO1xuXG5cdFx0Ly9FcnJvcjogVHlwZUVycm9yOiBkYXRhIGlzIHVuZGVmaW5lZCBpbiAvaW50ZXJmYWNlL2h0bWw1L2ZyYW1ld29yay9qcXVlcnkubWluLmpzP3Y9Ny40LjYtMjAxNDEwMjctMDc0MTI3IGxpbmUgMiA+IGV2YWwgbGluZSA3MFxuXHRcdGlmICggIWRhdGEgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dmFyIGxlbiA9IGRhdGEubGVuZ3RoO1xuXG5cdFx0Zm9yICggdmFyIGkgPSAwOyBpIDwgbGVuOyBpKysgKSB7XG5cdFx0XHR2YXIgaXRlbSA9IGRhdGFbaV07XG5cblx0XHRcdGlmICggaXRlbS5zdGF0dXNfaWQgPT0gMTAgKSB7XG5cdFx0XHRcdCQoICd0cltpZD1cXCcnICsgaXRlbS5pZCArICdcXCddIHRkJyApLmNzcyggJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnICk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Z2V0Q3VzdG9tQ29udGV4dE1lbnVNb2RlbCgpIHtcblx0XHR2YXIgY29udGV4dF9tZW51X21vZGVsID0ge1xuXHRcdFx0Z3JvdXBzOiB7XG5cdFx0XHRcdG90aGVyOiB7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnT3RoZXInICksXG5cdFx0XHRcdFx0aWQ6IHRoaXMuc2NyaXB0X25hbWUgKyAnb3RoZXInLFxuXHRcdFx0XHRcdHNvcnRfb3JkZXI6IDkwMDBcblx0XHRcdFx0fSxcblx0XHRcdFx0bWFyazoge1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ01hcmsnICksXG5cdFx0XHRcdFx0aWQ6IHRoaXMudmlld0lkICsgJ21hcmsnLFxuXHRcdFx0XHRcdHNvcnRfb3JkZXI6IDgwMDBcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGV4Y2x1ZGU6IFtcblx0XHRcdFx0J3NhdmVfYW5kX2NvbnRpbnVlJyxcblx0XHRcdFx0J3NhdmVfYW5kX25leHQnLFxuXHRcdFx0XHQnc2F2ZV9hbmRfbmV3Jyxcblx0XHRcdFx0J3NhdmVfYW5kX2NvcHknLFxuXHRcdFx0XHQnc2F2ZScsXG5cdFx0XHRcdCdjb3B5Jyxcblx0XHRcdFx0J2NvcHlfYXNfbmV3Jyxcblx0XHRcdFx0J2VkaXQnLFxuXHRcdFx0XHQnbmV3X2FkZCcsXG5cdFx0XHRcdCdhZGQnLFxuXHRcdFx0XHQnbWFzc19lZGl0Jyxcblx0XHRcdFx0J2V4cG9ydF9leGNlbCcsXG5cdFx0XHRcdCdkZWxldGVfYW5kX25leHQnXG5cblx0XHRcdF0sXG5cdFx0XHRpbmNsdWRlOiBbXG5cdFx0XHRcdCd2aWV3Jyxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ0p1bXAgVG8nICksXG5cdFx0XHRcdFx0aWQ6ICduYXZpZ2F0ZScsXG5cdFx0XHRcdFx0dnVlX2ljb246ICd0dGljb24gdHRpY29uLW5vcnRoX2Vhc3RfYmxhY2tfMjRkcCcsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRwZXJtaXNzaW9uX3Jlc3VsdDogdHJ1ZSxcblx0XHRcdFx0XHRwZXJtaXNzaW9uOiA4MjAwLFxuXHRcdFx0XHRcdHNvcnRfb3JkZXI6IDgxMDBcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAnJywgLy9FbXB0eSBsYWJlbC4gdnVlX2ljb24gaXMgZGlzcGxheWVkIGluc3RlYWQgb2YgdGV4dC5cblx0XHRcdFx0XHRpZDogJ290aGVyX2hlYWRlcicsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ3JpZ2h0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdvdGhlcicsXG5cdFx0XHRcdFx0YWN0aW9uX2dyb3VwX2hlYWRlcjogdHJ1ZSxcblx0XHRcdFx0XHR2dWVfaWNvbjogJ3R0aWNvbiB0dGljb24tbW9yZV92ZXJ0X2JsYWNrXzI0ZHAnLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnTWFyazogUmVhZCcgKSxcblx0XHRcdFx0XHRpZDogJ3JlYWQnLFxuXHRcdFx0XHRcdG1lbnVfYWxpZ246ICdsZWZ0Jyxcblx0XHRcdFx0XHRhY3Rpb25fZ3JvdXA6ICdtYXJrJyxcblx0XHRcdFx0XHRwZXJtaXNzaW9uX3Jlc3VsdDogdHJ1ZSxcblx0XHRcdFx0XHRwZXJtaXNzaW9uOiBudWxsLFxuXHRcdFx0XHRcdHNvcnRfb3JkZXI6IDgwMDBcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxhYmVsOiAkLmkxOG4uXyggJ01hcms6IFVuUmVhZCcgKSxcblx0XHRcdFx0XHRpZDogJ3VucmVhZCcsXG5cdFx0XHRcdFx0bWVudV9hbGlnbjogJ2xlZnQnLFxuXHRcdFx0XHRcdGFjdGlvbl9ncm91cDogJ21hcmsnLFxuXHRcdFx0XHRcdHBlcm1pc3Npb25fcmVzdWx0OiB0cnVlLFxuXHRcdFx0XHRcdHBlcm1pc3Npb246IG51bGwsXG5cdFx0XHRcdFx0c29ydF9vcmRlcjogODEwMFxuXHRcdFx0XHR9LFxuXHRcdFx0XVxuXHRcdH07XG5cblx0XHRyZXR1cm4gY29udGV4dF9tZW51X21vZGVsO1xuXHR9XG5cblx0b25DdXN0b21Db250ZXh0Q2xpY2soIGlkLCBjb250ZXh0X2J0biApIHtcblx0XHRzd2l0Y2ggKCBpZCApIHtcblx0XHRcdGNhc2UgJ2Nsb3NlX21pc2MnOlxuXHRcdFx0Y2FzZSAnY2FuY2VsJzpcblx0XHRcdFx0dGhpcy5vbkNhbmNlbENsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAncmVhZCc6XG5cdFx0XHRcdHRoaXMub25SZWFkQ2xpY2soKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1bnJlYWQnOlxuXHRcdFx0XHR0aGlzLm9uVW5SZWFkQ2xpY2soKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICduYXZpZ2F0ZSc6XG5cdFx0XHRcdHRoaXMub25OYXZpZ2F0ZUNsaWNrKCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdG9uY2FuY2VsQ2xpY2soKSB7XG5cdFx0dGhpcy5yZW1vdmVFZGl0VmlldygpO1xuXHR9XG5cblx0b25SZWFkQ2xpY2soKSB7XG5cdFx0dmFyIG5vdGlmaWNhdGlvbl9pZHMgPSBbXTtcblx0XHRpZiAoIHRoaXMuaXNfdmlld2luZyAmJiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgKSB7XG5cdFx0XHRub3RpZmljYXRpb25faWRzLnB1c2goIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRub3RpZmljYXRpb25faWRzID0gdGhpcy5nZXRHcmlkU2VsZWN0SWRBcnJheSgpO1xuXHRcdH1cblxuXHRcdGlmICggbm90aWZpY2F0aW9uX2lkcy5sZW5ndGggPiAwICkge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdFx0dGhpcy5hcGlbJ3NldE5vdGlmaWNhdGlvblN0YXR1cyddKCBub3RpZmljYXRpb25faWRzLCAyMCwge1xuXHRcdFx0XHRvblJlc3VsdDogZnVuY3Rpb24oIHJlcyApIHtcblx0XHRcdFx0XHRpZiAoICR0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5yZW1vdmVFZGl0VmlldygpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQkdGhpcy5zZWFyY2goIGZhbHNlICk7XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9XG5cdH1cblxuXHRvblVuUmVhZENsaWNrKCkge1xuXHRcdHZhciBub3RpZmljYXRpb25faWRzID0gW107XG5cdFx0aWYgKCB0aGlzLmlzX3ZpZXdpbmcgJiYgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkICkge1xuXHRcdFx0bm90aWZpY2F0aW9uX2lkcy5wdXNoKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bm90aWZpY2F0aW9uX2lkcyA9IHRoaXMuZ2V0R3JpZFNlbGVjdElkQXJyYXkoKTtcblx0XHR9XG5cblx0XHRpZiAoIG5vdGlmaWNhdGlvbl9pZHMubGVuZ3RoID4gMCApIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cblx0XHRcdHRoaXMuYXBpWydzZXROb3RpZmljYXRpb25TdGF0dXMnXSggbm90aWZpY2F0aW9uX2lkcywgMTAsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0aWYgKCAkdGhpcy5pc192aWV3aW5nICkge1xuXHRcdFx0XHRcdFx0JHRoaXMucmVtb3ZlRWRpdFZpZXcoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0JHRoaXMuc2VhcmNoKCBmYWxzZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9XG5cblx0b25OYXZpZ2F0ZUNsaWNrKCkge1xuXHRcdGlmICggdGhpcy5uYXZpZ2F0ZV9saW5rICE9PSAnJyApIHtcblx0XHRcdC8vIElmIHZpZXdpbmcgYSBub3RpZmljYXRpb24gdGhlIHZpZXcgbmVlZHMgdG8gYmUgY2xvc2VkIGZvciB3aW5kb3cubG9jYXRpb24gdG8gd29yayBjb3JyZWN0bHkgZm9yIGxpbmtzIHRoYXQgb3BlbiBhbm90aGVyIG9uVmlld0NsaWNrIHZpZXcuXG5cdFx0XHRpZiAoIHRoaXMuaXNfdmlld2luZyA9PSB0cnVlICkge1xuXHRcdFx0XHR0aGlzLm9uQ2FuY2VsQ2xpY2soKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCB0aGlzLm5hdmlnYXRlX2xpbmsgPT09ICdvcGVuX3ZpZXcnICkge1xuXHRcdFx0XHRmb3IgKCBsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkX3BheWxvYWQudGltZXRyZXguZXZlbnQubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0aWYgKCB0aGlzLnNlbGVjdGVkX3BheWxvYWQudGltZXRyZXguZXZlbnRbaV0udHlwZSA9PT0gJ29wZW5fdmlldycgfHwgdGhpcy5zZWxlY3RlZF9wYXlsb2FkLnRpbWV0cmV4LmV2ZW50W2ldLnR5cGUgPT09ICdvcGVuX3ZpZXdfaW1tZWRpYXRlJyApIHtcblx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbkNvbnN1bWVyLm9wZW5WaWV3TGlua2VkVG9Ob3RpZmljYXRpb24oIHRoaXMuc2VsZWN0ZWRfcGF5bG9hZC50aW1ldHJleC5ldmVudFtpXSApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIHRoaXMuc2VsZWN0ZWRfcGF5bG9hZC5saW5rX3RhcmdldCAmJiB0aGlzLnNlbGVjdGVkX3BheWxvYWQubGlua190YXJnZXQgPT09ICdfYmxhbmsnICkge1xuXHRcdFx0XHRcdHdpbmRvdy5vcGVuKFxuXHRcdFx0XHRcdFx0dGhpcy5uYXZpZ2F0ZV9saW5rLFxuXHRcdFx0XHRcdFx0J19ibGFuaydcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbiA9IHRoaXMubmF2aWdhdGVfbGluaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldE5hdmlnYXRlTGluaygpIHtcblx0XHR0aGlzLm5hdmlnYXRlX2xpbmsgPSAnJztcblxuXHRcdHZhciBkYXRhID0gdGhpcy5ncmlkLmdldEdyaWRQYXJhbSggJ2RhdGEnICk7XG5cblx0XHRpZiAoICFkYXRhICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHZhciBub3RpZmljYXRpb25faWRzID0gW107XG5cblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCAmJiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuaWQgKSB7XG5cdFx0XHRub3RpZmljYXRpb25faWRzLnB1c2goIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZC5pZCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRub3RpZmljYXRpb25faWRzID0gdGhpcy5nZXRHcmlkU2VsZWN0SWRBcnJheSgpO1xuXHRcdH1cblxuXHRcdGlmICggbm90aWZpY2F0aW9uX2lkcy5sZW5ndGggPT09IDEgKSB7XG5cdFx0XHR2YXIgbGVuID0gZGF0YS5sZW5ndGg7XG5cblx0XHRcdGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrICkge1xuXHRcdFx0XHR2YXIgaXRlbSA9IGRhdGFbaV07XG5cblx0XHRcdFx0aWYgKCBpdGVtLmlkID09PSBub3RpZmljYXRpb25faWRzWzBdICkge1xuXHRcdFx0XHRcdC8vQ2hlY2sgaWYgcGF5bG9hZCBoYXMgYW4gXCJvcGVuX3ZpZXdcIiBvciBcIm9wZW5fdmlld19pbW1lZGlhdGVcIiBldmVudCBmb3Igb3BlbmluZyBhbmQgcGFzc2luZyBkYXRhIHRvIGEgZWRpdCB2aWV3LlxuXHRcdFx0XHRcdGlmICggaXRlbS5wYXlsb2FkX2RhdGEudGltZXRyZXggIT09IHVuZGVmaW5lZCAmJiBpdGVtLnBheWxvYWRfZGF0YS50aW1ldHJleC5ldmVudCAhPT0gdW5kZWZpbmVkICkge1xuXHRcdFx0XHRcdFx0Zm9yICggbGV0IGkgPSAwOyBpIDwgaXRlbS5wYXlsb2FkX2RhdGEudGltZXRyZXguZXZlbnQubGVuZ3RoOyBpKysgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggaXRlbS5wYXlsb2FkX2RhdGEudGltZXRyZXguZXZlbnRbaV0udHlwZSA9PT0gJ29wZW5fdmlldycgfHwgaXRlbS5wYXlsb2FkX2RhdGEudGltZXRyZXguZXZlbnRbaV0udHlwZSA9PT0gJ29wZW5fdmlld19pbW1lZGlhdGUnICkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubmF2aWdhdGVfbGluayA9ICdvcGVuX3ZpZXcnO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRfcGF5bG9hZCA9IGl0ZW0ucGF5bG9hZF9kYXRhO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIGlmICggaXRlbS5wYXlsb2FkX2RhdGEubGluayAhPT0gdW5kZWZpbmVkICYmIGl0ZW0ucGF5bG9hZF9kYXRhLmxpbmsgIT09ICcnICkge1xuXHRcdFx0XHRcdFx0Ly9Ob3JtYWwgbmF2aWdhdGlvbiBsaW5rIGZvdW5kLlxuXHRcdFx0XHRcdFx0dGhpcy5uYXZpZ2F0ZV9saW5rID0gaXRlbS5wYXlsb2FkX2RhdGEubGluaztcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRfcGF5bG9hZCA9IGl0ZW0ucGF5bG9hZF9kYXRhO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMubmF2aWdhdGVfbGluayA9ICcnO1xuXHRcdHRoaXMuc2VsZWN0ZWRfcGF5bG9hZCA9IHt9O1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGluaXRFZGl0VmlldygpIHtcblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCAmJiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuc3RhdHVzX2lkID09IDEwICkge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblxuXHRcdFx0Ly9TZXQgY3VycmVudCBub3RpZmljYXRpb24gYmVpbmcgdmlld2VkIGFzIHJlYWQuXG5cdFx0XHQkdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnN0YXR1c19pZCA9IDIwO1xuXHRcdFx0dGhpcy5hcGlbJ3NldE5vdGlmaWNhdGlvblN0YXR1cyddKCBbdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLmlkXSwgMjAsIHtcblx0XHRcdFx0b25SZXN1bHQ6IGZ1bmN0aW9uKCByZXMgKSB7XG5cdFx0XHRcdFx0JHRoaXMuc2VhcmNoKCBmYWxzZSApO1xuXHRcdFx0XHR9XG5cdFx0XHR9ICk7XG5cdFx0fVxuXG5cdFx0c3VwZXIuaW5pdEVkaXRWaWV3KCk7XG5cdH1cblxuXHRzZXRDdXN0b21EZWZhdWx0TWVudUljb24oIGlkLCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGggKSB7XG5cdFx0c3dpdGNoICggaWQgKSB7XG5cdFx0XHRjYXNlICdyZWFkJzpcblx0XHRcdFx0dGhpcy5zZXREZWZhdWx0TWVudVJlYWRJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGggKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICd1bnJlYWQnOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51VW5SZWFkSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbmF2aWdhdGUnOlxuXHRcdFx0XHR0aGlzLnNldERlZmF1bHRNZW51TmF2aWdhdGVJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGggKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0c2V0Q3VzdG9tRWRpdE1lbnVJY29uKCBpZCwgY29udGV4dF9idG4gKSB7XG5cdFx0c3dpdGNoICggaWQgKSB7XG5cdFx0XHRjYXNlJ25hdmlnYXRlJzpcblx0XHRcdFx0dGhpcy5zZXREZWZhdWx0TWVudU5hdmlnYXRlSWNvbiggY29udGV4dF9idG4gKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlJ3JlYWQnOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51UmVhZEljb24oIGNvbnRleHRfYnRuICk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSd1bnJlYWQnOlxuXHRcdFx0XHR0aGlzLnNldEVkaXRNZW51VW5SZWFkSWNvbiggY29udGV4dF9idG4gKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0c2V0RGVmYXVsdE1lbnVEZWxldGVBbmROZXh0SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKSB7XG5cdFx0aWYgKCB0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RWRpdE1lbnVEZWxldGVBbmROZXh0SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKSB7XG5cdFx0aWYgKCB0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RGVmYXVsdE1lbnVEZWxldGVJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGgsIHBJZCApIHtcblxuXHRcdGlmICggZ3JpZF9zZWxlY3RlZF9sZW5ndGggPj0gMSApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXRFZGl0TWVudURlbGV0ZUljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCwgcElkICkge1xuXG5cdFx0aWYgKCB0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RGVmYXVsdE1lbnVWaWV3SWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKSB7XG5cblx0XHRpZiAoIHRoaXMuaXNfdmlld2luZyA9PSBmYWxzZSAmJiBncmlkX3NlbGVjdGVkX2xlbmd0aCA9PT0gMSApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXREZWZhdWx0TWVudUNhbmNlbEljb24oIGNvbnRleHRfYnRuLCBwSWQgKSB7XG5cdFx0aWYgKCB0aGlzLmlzX3ZpZXdpbmcgKSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIGZhbHNlICk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RGVmYXVsdE1lbnVSZWFkSWNvbiggY29udGV4dF9idG4sIGdyaWRfc2VsZWN0ZWRfbGVuZ3RoLCBwSWQgKSB7XG5cdFx0aWYgKCBncmlkX3NlbGVjdGVkX2xlbmd0aCA+PSAxICkge1xuXHRcdFx0Ly9DaGVjayBpZiBhbnkgbm90aWZpY2F0aW9ucyBhcmUgdW5yZWFkLlxuXHRcdFx0dmFyIHNlbGVjdGVkX2l0ZW1zID0gdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCk7XG5cdFx0XHRmb3IgKCB2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZF9pdGVtcy5sZW5ndGg7IGkrKyApIHtcblx0XHRcdFx0aWYgKCBzZWxlY3RlZF9pdGVtc1tpXSAhPT0gbnVsbCAmJiBzZWxlY3RlZF9pdGVtc1tpXS5zdGF0dXNfaWQgPT0gMTAgKSB7XG5cdFx0XHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXREZWZhdWx0TWVudVVuUmVhZEljb24oIGNvbnRleHRfYnRuLCBncmlkX3NlbGVjdGVkX2xlbmd0aCwgcElkICkge1xuXHRcdGlmICggZ3JpZF9zZWxlY3RlZF9sZW5ndGggPj0gMSApIHtcblx0XHRcdC8vQ2hlY2sgaWYgYW55IG5vdGlmaWNhdGlvbnMgYXJlIHJlYWQuXG5cdFx0XHR2YXIgc2VsZWN0ZWRfaXRlbXMgPSB0aGlzLmdldFNlbGVjdGVkSXRlbXMoKTtcblx0XHRcdGZvciAoIHZhciBpID0gMDsgaSA8IHNlbGVjdGVkX2l0ZW1zLmxlbmd0aDsgaSsrICkge1xuXHRcdFx0XHRpZiAoIHNlbGVjdGVkX2l0ZW1zW2ldICE9PSBudWxsICYmIHNlbGVjdGVkX2l0ZW1zW2ldLnN0YXR1c19pZCA9PSAyMCApIHtcblx0XHRcdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCB0cnVlICk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldERlZmF1bHRNZW51TmF2aWdhdGVJY29uKCBjb250ZXh0X2J0biwgZ3JpZF9zZWxlY3RlZF9sZW5ndGgsIHBJZCApIHtcblx0XHRpZiAoIHRoaXMuaXNfdmlld2luZyA9PSB0cnVlIHx8IGdyaWRfc2VsZWN0ZWRfbGVuZ3RoID09PSAxICkge1xuXHRcdFx0Ly8gY2hlY2sgYSBsaW5rIGlzIHNldCBpbiB0aGUgcGF5bG9hZCBkYXRhXG5cdFx0XHRpZiAoIHRoaXMuc2V0TmF2aWdhdGVMaW5rKCkgPT0gdHJ1ZSApIHtcblx0XHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRzZXRFZGl0TWVudVJlYWRJY29uKCBjb250ZXh0X2J0biApIHtcblx0XHQvL0JlY2F1c2UgdGhlIG5vdGlmaWNhdGlvbiB2aWV3IGNsb3NlcyB3aGVuIGNsaWNraW5nIFwiTWFyayBSZWFkIC8gVW5yZWFkXCIgdGhpcyBpY29uIHdpbGwgYWx3YXlzIGJlIGRpc2FibGVkIGFzIHRoZSBtZXNzYWdlIGlzIGFsd2F5cyByZWFkIHdoZW4gdmlld2VkLlxuXHRcdC8vQnV0IG1heSBiZSBuZWVkZWQgaW4gdGhlIGZ1dHVyZS5cblx0XHRpZiAoIHRoaXMuY3VycmVudF9lZGl0X3JlY29yZCAmJiB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQuc3RhdHVzX2lkID09IDEwICkge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgdHJ1ZSApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDb250ZXh0TWVudU1hbmFnZXIuZGlzYWJsZU1lbnVJdGVtKCB0aGlzLmRldGVybWluZUNvbnRleHRNZW51TW91bnRBdHRyaWJ1dGVzKCkuaWQsIGNvbnRleHRfYnRuLmlkLCBmYWxzZSApO1xuXHRcdH1cblx0fVxuXG5cdHNldEVkaXRNZW51VW5SZWFkSWNvbiggY29udGV4dF9idG4gKSB7XG5cdFx0aWYgKCB0aGlzLmN1cnJlbnRfZWRpdF9yZWNvcmQgJiYgdGhpcy5jdXJyZW50X2VkaXRfcmVjb3JkLnN0YXR1c19pZCA9PSAyMCApIHtcblx0XHRcdENvbnRleHRNZW51TWFuYWdlci5kaXNhYmxlTWVudUl0ZW0oIHRoaXMuZGV0ZXJtaW5lQ29udGV4dE1lbnVNb3VudEF0dHJpYnV0ZXMoKS5pZCwgY29udGV4dF9idG4uaWQsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29udGV4dE1lbnVNYW5hZ2VyLmRpc2FibGVNZW51SXRlbSggdGhpcy5kZXRlcm1pbmVDb250ZXh0TWVudU1vdW50QXR0cmlidXRlcygpLmlkLCBjb250ZXh0X2J0bi5pZCwgZmFsc2UgKTtcblx0XHR9XG5cdH1cblxuXHRidWlsZEVkaXRWaWV3VUkoKSB7XG5cblx0XHRzdXBlci5idWlsZEVkaXRWaWV3VUkoKTtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXG5cdFx0dmFyIHRhYl9tb2RlbCA9IHtcblx0XHRcdCd0YWJfbm90aWZpY2F0aW9uJzogeyAnbGFiZWwnOiAkLmkxOG4uXyggJ05vdGlmaWNhdGlvbicgKSB9XG5cdFx0fTtcblx0XHR0aGlzLnNldFRhYk1vZGVsKCB0YWJfbW9kZWwgKTtcblxuXHRcdHZhciBmb3JtX2l0ZW1faW5wdXQ7XG5cblx0XHR0aGlzLm5hdmlnYXRpb24uQUNvbWJvQm94KCB7XG5cdFx0XHRhcGlfY2xhc3M6IFRUQVBJLkFQSU5vdGlmaWNhdGlvbixcblx0XHRcdGlkOiB0aGlzLnNjcmlwdF9uYW1lICsgJ19uYXZpZ2F0aW9uJyxcblx0XHRcdGFsbG93X211bHRpcGxlX3NlbGVjdGlvbjogZmFsc2UsXG5cdFx0XHRsYXlvdXRfbmFtZTogJ2dsb2JhbF9ub3RpZmljYXRpb24nLFxuXHRcdFx0bmF2aWdhdGlvbl9tb2RlOiB0cnVlLFxuXHRcdFx0c2hvd19zZWFyY2hfaW5wdXRzOiB0cnVlXG5cdFx0fSApO1xuXG5cdFx0dGhpcy5zZXROYXZpZ2F0aW9uKCk7XG5cblx0XHQvL1RhYiAwIHN0YXJ0XG5cdFx0dmFyIHRhYl9ub3RpZmljYXRpb24gPSAkKCAnI3RhYl9ub3RpZmljYXRpb24nICk7XG5cblx0XHR2YXIgdGFiX25vdGlmaWNhdGlvbl9jb2x1bW4xID0gdGFiX25vdGlmaWNhdGlvbi5maW5kKCAnLmZpcnN0LWNvbHVtbicgKTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0gPSBbXTtcblxuXHRcdHRoaXMuZWRpdF92aWV3X3RhYnNbMF0ucHVzaCggdGFiX25vdGlmaWNhdGlvbl9jb2x1bW4xICk7XG5cblx0XHQvLyBUeXBlXG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5DT01CT19CT1ggKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVENvbWJvQm94KCB7IGZpZWxkOiAndHlwZV9pZCcgfSApO1xuXHRcdGZvcm1faXRlbV9pbnB1dC5zZXRTb3VyY2VEYXRhKCBHbG9iYWwuYWRkRmlyc3RJdGVtVG9BcnJheSggJHRoaXMudHlwZV9hcnJheSApICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUeXBlJyApLCBmb3JtX2l0ZW1faW5wdXQsIHRhYl9ub3RpZmljYXRpb25fY29sdW1uMSwgJycgKTtcblxuXHRcdC8vIERhdGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHQoIHsgZmllbGQ6ICdjcmVhdGVkX2RhdGUnIH0gKTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ0RhdGUnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX25vdGlmaWNhdGlvbl9jb2x1bW4xLCAnJyApO1xuXG5cdFx0Ly8gVGl0bGVcblx0XHRmb3JtX2l0ZW1faW5wdXQgPSBHbG9iYWwubG9hZFdpZGdldEJ5TmFtZSggRm9ybUl0ZW1UeXBlLlRFWFQgKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQuVFRleHQoIHsgZmllbGQ6ICd0aXRsZV9sb25nJyB9ICk7XG5cdFx0dGhpcy5hZGRFZGl0RmllbGRUb0NvbHVtbiggJC5pMThuLl8oICdUaXRsZScgKSwgZm9ybV9pdGVtX2lucHV0LCB0YWJfbm90aWZpY2F0aW9uX2NvbHVtbjEsICcnICk7XG5cblx0XHQvLyBCb2R5XG5cdFx0Zm9ybV9pdGVtX2lucHV0ID0gR2xvYmFsLmxvYWRXaWRnZXRCeU5hbWUoIEZvcm1JdGVtVHlwZS5URVhUICk7XG5cdFx0Zm9ybV9pdGVtX2lucHV0LlRUZXh0KCB7IGZpZWxkOiAnYm9keV9sb25nX3RleHQnIH0gKTtcblx0XHRmb3JtX2l0ZW1faW5wdXQub2ZmKCAnY2xpY2snICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oKSB7XG5cdFx0XHQkdGhpcy5vbk5hdmlnYXRlQ2xpY2soKTtcblx0XHR9KTtcblx0XHR0aGlzLmFkZEVkaXRGaWVsZFRvQ29sdW1uKCAkLmkxOG4uXyggJ01lc3NhZ2UnICksIGZvcm1faXRlbV9pbnB1dCwgdGFiX25vdGlmaWNhdGlvbl9jb2x1bW4xLCAnJyApO1xuXHR9XG5cblx0YnVpbGRTZWFyY2hGaWVsZHMoKSB7XG5cdFx0c3VwZXIuYnVpbGRTZWFyY2hGaWVsZHMoKTtcblx0XHR0aGlzLnNlYXJjaF9maWVsZHMgPSBbXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnU3RhdHVzJyApLFxuXHRcdFx0XHRpbl9jb2x1bW46IDEsXG5cdFx0XHRcdGZpZWxkOiAnc3RhdHVzX2lkJyxcblx0XHRcdFx0bXVsdGlwbGU6IHRydWUsXG5cdFx0XHRcdGJhc2ljX3NlYXJjaDogdHJ1ZSxcblx0XHRcdFx0YWR2X3NlYXJjaDogZmFsc2UsXG5cdFx0XHRcdGxheW91dF9uYW1lOiAnZ2xvYmFsX29wdGlvbl9jb2x1bW4nLFxuXHRcdFx0XHRmb3JtX2l0ZW1fdHlwZTogRm9ybUl0ZW1UeXBlLkFXRVNPTUVfQk9YXG5cdFx0XHR9ICksXG5cdFx0XHRuZXcgU2VhcmNoRmllbGQoIHtcblx0XHRcdFx0bGFiZWw6ICQuaTE4bi5fKCAnVHlwZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3R5cGVfaWQnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0bGF5b3V0X25hbWU6ICdnbG9iYWxfb3B0aW9uX2NvbHVtbicsXG5cdFx0XHRcdGZvcm1faXRlbV90eXBlOiBGb3JtSXRlbVR5cGUuQVdFU09NRV9CT1hcblx0XHRcdH0gKSxcblx0XHRcdG5ldyBTZWFyY2hGaWVsZCgge1xuXHRcdFx0XHRsYWJlbDogJC5pMThuLl8oICdUaXRsZScgKSxcblx0XHRcdFx0aW5fY29sdW1uOiAxLFxuXHRcdFx0XHRmaWVsZDogJ3RpdGxlX2xvbmcnLFxuXHRcdFx0XHRtdWx0aXBsZTogdHJ1ZSxcblx0XHRcdFx0YmFzaWNfc2VhcmNoOiB0cnVlLFxuXHRcdFx0XHRhZHZfc2VhcmNoOiBmYWxzZSxcblx0XHRcdFx0Zm9ybV9pdGVtX3R5cGU6IEZvcm1JdGVtVHlwZS5URVhUX0lOUFVUXG5cdFx0XHR9IClcblxuXHRcdF07XG5cdH1cblxuXHQvLyBTZWFyY2ggaXMgdHJpZ2dlcmVkIHdoZW4gYSBub3RpZmljYXRpb24gaXMgbWFya2VkIGFzIHJlYWQsIHVucmVhZCBvciBkZWxldGVkLlxuXHQvLyBTZWFyY2ggYWxzbyBwdWxscyBpbiBuZXcgbm90aWZpY2F0aW9ucyBpZiBhbnkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHRpbWUgdG8gdXBkYXRlIHRoZSBub3RpZmljYXRpb24gYmVsbC5cblx0c2VhcmNoKCBzZXRfZGVmYXVsdF9tZW51LCBwYWdlX2FjdGlvbiwgcGFnZV9udW1iZXIsIGNhbGxCYWNrICkge1xuXHRcdHN1cGVyLnNlYXJjaCggc2V0X2RlZmF1bHRfbWVudSwgcGFnZV9hY3Rpb24sIHBhZ2VfbnVtYmVyLCBjYWxsQmFjayApO1xuXHRcdGlmICggR2xvYmFsLlVOSVRfVEVTVF9NT0RFID09IGZhbHNlICkge1xuXHRcdFx0Tm90aWZpY2F0aW9uQ29uc3VtZXIuZ2V0VW5yZWFkTm90aWZpY2F0aW9ucygpO1xuXHRcdH1cblx0fVxuXG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///2159\n")}}]);