webpackJsonp([5, 6, 7, 8, 9], [function(e, t, n) { n(793), e.exports = n(555) }, , function(e, t, n) { // ========================= // Function_2 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { return "_" + t.charCodeAt(0) + "_" } var r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, s = n(4), o = i(s), l = n(548), c = i(l), u = new RegExp("([^a-z0-9])", "g"), A = function() { return o.default.i18n.getUILanguage() in c.default ? c.default[o.default.i18n.getUILanguage()] : c.default.en }(), d = function(e, t) { return t ? e.replace(/\$\d/g, function(e) { if (e = parseInt(e.substr(1)) - 1, t.length > e) return t[e]; throw new Error("Faulty string variables. Requested string " + (e + 1) + " of " + t.length) }) : e }, h = function(e, t, n) { var i = n[0], r = A(i); r === !1 ? r = 0 : r === !0 && (r = 1); var s = o.default.i18n.getMessage(e.replace(u, a) + r, n); return "" === s ? 1 === i ? d(e, n) : d(t, n) : s }, m = "_4_", p = function(e, t) { var n = o.default.i18n.getMessage(e.replace(u, a) + m + t.replace(u, a) + "0"); return "" === n ? t : n }, f = function(e, t) { var n = o.default.i18n.getMessage(e.replace(u, a) + "0", t); return "" === n ? d(e, t) : n }, g = function(e, t, n) { return "object" === ("undefined" == typeof n ? "undefined" : r(n)) && n.length > 0 && "number" == typeof n[0] ? h(e, t, n) : "string" == typeof t ? p(e, t) : f(e, t) }; e.exports = g }, function(e, t, n) { // ========================= // Function_3 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), r = n(4), s = n(10), o = n(781), l = n(753), c = n(204), u = c.includes, A = c.fromPairs, d = c.map, h = n(746), m = n("Win32" === navigator.platform ? 756 : "MacIntel" === navigator.platform ? 754 : 755), p = function(e) { return [e.preferenceKey, e.preferenceValue[e.preferenceType]] }, f = { fullListeners: {}, listeners: {}, settingsCache: {}, loadPromise: function(e) { var t = this; return f.attachListeners(), Promise.all([new Promise(function(e) { return t.getAll(e) }).then(function(e) { return new Promise(function(t) { var n = !1; setTimeout(function() { n || t(e) }, 1e4), l(f, e).then(function(e) { n = !0, t(e) }).catch(function() { n = !0, t(e) }) }) }).then(function(e) { return t.settingsCache = Object.assign(t.settingsCache, e) }), new Promise(function(e) { return t.getAllPrefs(function(n) { t.settingsCache = Object.assign(t.settingsCache, n), e() }) })]).then(function() { return t._isLoaded = !0 }) }, _vivaldiSettingsListener: function(e) { var t = this, n = Object.keys(e).reduce(function(t, n) { return t[n] = e[n].newValue, t }, {}); Object.keys(n).forEach(function(e) { return t.cacheValues(e, n[e]) }), f.notifyMultiListeners(n), Object.keys(e).forEach(function(t) { var n = e[t], i = n.oldValue, a = n.newValue; f.notifyListeners(t, i, a) }) }, _vivaldiPrefsListener: function(e) { var t = p(e), n = a(t, 2), r = n[0], s = n[1], o = f.settingsCache[r]; f.notifyMultiListeners([i({}, r, s)]), this.cacheValues(r, s), f.notifyListeners(r, o, s) }, attachListeners: function() { r.storage.onChanged.addListener(this._vivaldiSettingsListener), s.settings.onChanged.addListener(this._vivaldiPrefsListener) }, detachListeners: function() { r.storage.onChanged.removeListener(this._vivaldiSettingsListener), s.settings.onChanged.removeListener(this._vivaldiPrefsListener) }, cacheValues: function(e, t) { this.settingsCache[e] = t }, set: function(e, t) { for (var n in e) "true" !== e[n] && "false" !== e[n] || (e[n] = Boolean("true" === e[n])); r.storage.local.set(e, function() { "function" == typeof t && (r.runtime.lastError ? t(r.runtime.lastError.message) : t()) }) }, serveFromCache: function(e) { for (var t = {}, n = [], i = 0; i < e.length; i++) { var a = e[i]; this.settingsCache.hasOwnProperty(a) ? t[a] = this.settingsCache[a] : n.push(a) } return { found: t, notFound: n } }, get: function(e, t) { this._isLoaded ? t("string" == typeof e ? this.getSync(e) : this.getKeysSync(e)) : console.error("VivaldiSettings not loaded, fix fetching of", e) }, remove: function(e, t) { t && "function" == typeof t || (t = function() {}), r.storage.local.remove(e, function() { r.runtime.lastError ? t(r.runtime.lastError.message) : t() }) }, getDefault: function(e) { return LocaleSettings && LocaleSettings[o()] && void 0 !== LocaleSettings[o()][e] ? LocaleSettings[o()][e] : m && void 0 !== m[e] ? m[e] : h[e] }, getSync: function(e) { return this.settingsCache.hasOwnProperty(e) ? this.settingsCache[e] : this.getDefault(e) }, getKeysSync: function(e) { var t = this, n = this.serveFromCache(e), i = n.notFound.reduce(function(e, n) { return e[n] = t.getDefault(n), e }, n.found); return i }, getAll: function(e) { var t = arguments.length >= 2 ? arguments[1] : void 0; r.storage.local.get(null, function(n) { e.call(t, n) }) }, getAllPrefs: function(e) { s.settings.getAllPreferences(function(t) { return e(A(d(p, t))) }) }, addListener: function(e, t) { return "function" != typeof t ? void console.warn("Can not register anything else than a function as a settings listener") : void(this.listeners[e] ? u(this.listeners[e], t) ? console.warn("Listener already exists.") : this.listeners[e].push(t) : this.listeners[e] = [t]) }, removeListener: function(e, t) { this.listeners[e] && ("function" == typeof t ? this.listeners[e] = this.listeners[e].filter(function(e) { return e !== t }) : this.listeners[e] = void 0) }, addMultiListener: function(e, t) { this.fullListeners = e.reduce(function(e, n) { var i = e[n] || []; return i.push(t), e[n] = i, e }, this.fullListeners) }, removeMultiListener: function(e, t) { this.fullListeners = e.reduce(function(e, n) { return e[n] && (e[n] = e[n].filter(function(e) { return e !== t })), e }, this.fullListeners) }, notifyMultiListeners: function(e) { var t = this, n = Object.keys(e).filter(function(e) { return t.fullListeners[e] }).reduce(function(n, a) { return t.fullListeners[a].forEach(function(t) { n.set(t, Object.assign(n.get(t) || {}, i({}, a, e[a]))) }), n }, new Map), r = !0, s = !1, o = void 0; try { for (var l, c = n.entries()[Symbol.iterator](); !(r = (l = c.next()).done); r = !0) { var u = a(l.value, 2), A = u[0], d = u[1]; A(d) } } catch (e) { s = !0, o = e } finally { try { !r && c.return && c.return() } finally { if (s) throw o } } }, notifyListeners: function(e, t, n) { var i = this.listeners[e]; if (void 0 !== i) for (var a = 0; a < i.length; a++) { var r = i[a]; r(t, n, e) } } }; Object.keys(f).filter(function(e) { return "function" == typeof f[e] }).forEach(function(e) { return f[e] = f[e].bind(f) }), e.exports = window.VivaldiSettings = f }, function(e, t, n) { // ========================= // Function_4 // ========================= "use strict"; window.chrome && window.chrome.tabs ? e.exports = window.chrome : e.exports = n(560) }, , function(e, t, n) { // ========================= // Function_6 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = n(117), r = i(a), s = (0, r.default)({ BACKGROUND_TASKS_SET: null, BOOKMARKS_LOAD_ALL: null, BOOKMARKS_SET_BOOKMARK_BAR_FOLDER: null, BOOKMARKS_SET_CUT_IDS: null, BOOKMARK_THUMBNAIL_QUEUE_ADD_ITEM: null, BOOKMARK_THUMBNAIL_QUEUE_REMOVE_ITEM: null, BOOKMARK_THUMBNAIL_QUEUE_UPDATE_ITEM: null, BROWSING_DATA_REMOVED: null, CAPTURE_AREA_TO_DISK: null, CAPTURE_AREA_TO_CLIPBOARD: null, CAPTURE_PAGE_TO_DISK: null, CAPTURE_PAGE_TO_CLIPBOARD: null, CATEGORY_COMMAND_APPEARANCE: null, CATEGORY_COMMAND_APPLICATION: null, CATEGORY_COMMAND_MAIL: null, CATEGORY_COMMAND_TAB_ACTION: null, CATEGORY_COMMAND_WEBPAGE_NAVIGATION: null, CHANGED: null, CHROME_BOOKMARKS_CHANGED: null, CHROME_BOOKMARKS_CREATED: null, CHROME_BOOKMARKS_MOVED: null, CHROME_BOOKMARKS_REMOVED: null, CHROME_BOOKMARKS_REORDERED: null, CHROME_HISTORY_DELETE: null, CHROME_HISTORY_SEARCH: null, CHROME_NOTES_CHANGED: null, CHROME_NOTES_CREATED: null, CHROME_NOTES_MOVED: null, CHROME_NOTES_REMOVED: null, CHROME_SET_SESSION: null, CHROME_TABS_ACTIVATED: null, CHROME_TABS_API: null, CHROME_TABS_ATTACHED: null, CHROME_TABS_CREATED: null, CHROME_TABS_DETACHED: null, CHROME_TABS_INIT: null, CHROME_TABS_MOVED: null, CHROME_TABS_REMOVED: null, CHROME_TABS_REPLACED: null, CHROME_TABS_UPDATED: null, CLOSE_FIND_IN_PAGE_ACTION: null, COMMAND_LOAD_ICONS: null, COMMAND_SET_CONFIGURATION: null, COMMAND_UPDATE_SINGLE_COMMAND: null, CONTACT_ADD_CONTACTS: null, CONTACT_DELETE_CONTACT: null, CONTACT_INITIALIZE: null, CONTACT_SAVE_CONTACT: null, CONTACT_SELECT_CONTACT: null, CONTENT_SCRIPT_LOAD: null, CONTENT_SCRIPT_PAGE_ADD: null, CONTENT_SCRIPT_PAGE_REMOVE: null, FAST_FORWARD_COPY_STATE: null, FAST_FORWARD_SET_FORWARD_URL: null, FAST_FORWARD_SET_REWIND_INFO: null, FIND_IN_PAGE_ACTION: null, FIND_IN_PAGE_FOCUS: null, FIND_IN_PAGE_RESULT_ACTION: null, MAIL_ADD_ATTACHMENT: null, MAIL_ADD_FOLDERS: null, MAIL_ADD_MESSAGES: null, MAIL_CHECK_FOR_MAIL: null, MAIL_CHECK_NEW_DELETED_MODIFIED: null, MAIL_CLEAR_ACTIVE_COMPOSER: null, MAIL_CLEAR_IF_ACTIVE: null, MAIL_CONNECT_IMAP_CLIENTS: null, MAIL_DELETE_DRAFT: null, MAIL_DISCONNECT_IMAP_CLIENTS: null, MAIL_FILTERS_CHANGED: null, MAIL_FILTERS_INIT: null, MAIL_INDICATOR_ADD: null, MAIL_INDICATOR_REMOVE: null, MAIL_INDICATOR_REMOVE_ALL: null, MAIL_MARK_SEEN: null, MAIL_MESSAGES_INIT: null, MAIL_QUEUE_MESSAGE: null, MAIL_REGENERATE_MAILING_LISTS: null, MAIL_REMOVE_MESSAGES: null, MAIL_REPLACE_FOLDERS: null, MAIL_RESCAN_UNREAD_FLAGS: null, MAIL_SEARCH_SET_OPTIONS: null, MAIL_SELECT_FOLDER: null, MAIL_SEND_MESSAGE: null, MAIL_SET_ACTIVE_COMPOSER: null, MAIL_SET_ACTIVE_MESSAGE: null, MAIL_SET_CHECK_INTERVAL: null, MAIL_STORE_DRAFT: null, MAIL_UPDATE_MESSAGES: null, MAIN_FULLSCREEN: null, MAIN_SHOW_CLEAR_BROWSING_DATA_DIALOG: null, MAIN_SHOW_CONFIRM_OPEN_BOOKMARKS_DIALOG: null, MAIN_SHOW_EXPORT_DATA: null, MAIN_SHOW_IMPORT_DATA: null, MAIN_SHOW_KEYBOARDS_SHORTCUTS: null, MAIN_SHOW_OPEN_SESSION: null, MAIN_SHOW_PAGE_INFO: null, MAIN_SHOW_QUICKCOMMANDS: null, MAIN_SHOW_SAVE_SESSION: null, MAIN_SHOW_VISUAL_TAB_SWITCHER: null, MAIN_TOGGLE_ADDRESS_BAR: null, MAIN_TOGGLE_TAB_BAR: null, MAIN_TOGGLE_UI: null, MAIN_ZOOM_DOUBLE: null, MAIN_ZOOM_HALF: null, MAIN_ZOOM_IN: null, MAIN_ZOOM_OUT: null, MAIN_ZOOM_RESET: null, NAVGIATION_TYPED_HISTORY_DELETE: null, NAVIGATION_ADD_POPUP: null, NAVIGATION_ADD_TYPED_HISTORY: null, NAVIGATION_HISTORY_ALL_DELETED: null, NAVIGATION_REMOVE_POPUP: null, NAVIGATION_RESET_BLOCKED_CONTENT: null, NAVIGATION_RESET_PERMISSIONS: null, NAVIGATION_SET_BLOCKED_CONTENT: null, NAVIGATION_SET_PERMISSION: null, NAVIGATION_SET_PROGRESS: null, NAVIGATION_SET_STATE: null, NAVIGATION_TYPED_HISTORY_DELETE: null, NOTES_ADD_ITEM: null, NOTES_CHANGE_ITEM: null, NOTES_LOAD_ALL: null, NOTES_MOVE_ITEM: null, NOTES_REMOVE_ITEM: null, PAGE_ACTION_FAST_FORWARD_URL_CHANGED: null, PAGE_BACK: null, PAGE_BURY: null, PAGE_CLEAR: null, PAGE_CLONE: null, PAGE_CLOSE: null, PAGE_CLOSE_OTHER: null, PAGE_CYCLE_BY_HISTORY: null, PAGE_CYCLE_BY_ORDER: null, PAGE_FORWARD: null, PAGE_GO: null, PAGE_MINIMIZE: null, PAGE_OPEN: null, PAGE_OPEN_URL: null, PAGE_OVERRIDE_PROPS: null, PAGE_PREVENT_UNDELETE: null, PAGE_RELOAD: null, PAGE_RESUME_UPDATES: null, PAGE_SELECTION_CLEAR: null, PAGE_SELECTION_SET: null, PAGE_SELECTION_TOGGLE_RELATED: null, PAGE_SET_FAVICON: null, PAGE_SET_FULLSCREEN: null, PAGE_SET_IS_RESTORED: null, PAGE_SET_LOADING: null, PAGE_SET_MEDIASTATE: null, PAGE_SET_MEDIA_PERMISSION: null, PAGE_SET_PROCESSEXITSTATE: null, PAGE_SET_SSL_STATE: null, PAGE_SET_TARGET_URL: null, PAGE_SET_THUMBNAIL: null, PAGE_SET_TITLE: null, PAGE_STOP: null, PAGE_TABSTACK_CLOSE: null, PAGE_TABSTACK_CREATE: null, PAGE_TABSTACK_EXPAND: null, PAGE_TABSTACK_REMOVE_FROM: null, PAGE_TILE_PAGES: null, PAGE_TOGGLE_PINNED: null, PAGE_UPDATE: null, PAGE_UPDATED: null, PANEL_RESET_PANELS: null, PANEL_SET_ACTIVE_WINDOW_ID: null, PANEL_SET_AVAILABLE: null, PANEL_SET_CONTENT_VISIBLE: null, PANEL_SET_FOCUS: null, PANEL_SET_MAIL_WINDOW_ID: null, PANEL_SET_PANELS: null, PANEL_SET_RESIZABLE: null, PANEL_SET_STATE: null, PANEL_SET_SWITCHER_VISIBLE: null, PANEL_SET_WIDTH: null, PANEL_SHOW_CONTENT: null, PANEL_SHOW_NEXT: null, PANEL_TOGGLE_CONTENT: null, PANEL_TOGGLE_PANEL: null, READERABLE: null, SEARCH_FIELD_ADD_TYPED_HISTORY: null, SEARCH_FIELD_DELETE_TYPED_HISTORY: null, SEARCH_FIELD_INIT_TYPED_HISTORY: null, SEARCH_FIELD_SET_STATE: null, SEARCH_FIELD_TYPED_HISTORY_ENABLED: null, SEARCH_SUGGEST_RESULT: null, SHOW_FIND_IN_PAGE_ACTION: null, SPATNAV_NAVIGATE: null, STATUS_CLEAR_STATUS: null, STATUS_SET_STATUS: null, TAB_CLOSEBUTTON_DISABLED: null, TAB_CLOSE_ALL_BUT_ACTIVE_TAB: null, TAB_NEW_BACKGROUND_TAB: null, TAB_NEW_TAB: null, TAB_STACK_TILE_GRID: null, TAB_STACK_TILE_HORIZONTAL: null, TAB_STACK_TILE_VERTICAL: null, TAB_STACK_UNTILE: null, TAB_SWITCH_BACK_HISTORY: null, TAB_SWITCH_BACK_ORDER: null, TAB_SWITCH_BACK_SETTING: null, TAB_SWITCH_FORWARD_HISTORY: null, TAB_SWITCH_FORWARD_ORDER: null, TAB_SWITCH_FORWARD_SETTING: null, TAB_TOGGLE_THUMBNAIL: null, TAB_UNDO_RECENTLY_CLOSED: null, TAB_VIEW_PAGE_SOURCE: null, TOOLTIP_CLEAR: null, TOOLTIP_HIDE: null, TOOLTIP_SHOW: null, URLFIELD_BLUR: null, URLFIELD_CLEAR_STATE: null, URLFIELD_SET_STATE: null, URLFIELD_TYPED_HISTORY_DELETE: null, URLFIELD_TYPED_HISTORY_ENABLED: null, URLFIELD_TYPED_HISTORY_HIDE: null, URLFIELD_TYPED_HISTORY_INIT: null, URLFIELD_TYPED_HISTORY_SHOW: null, URLFIELD_HISTORY_DELETE: null, URL_SET_SSLSTATE: null, VIVALDI_HISTORY_DISPLAY_MODE_CHANGE: null, VIVALDI_HISTORY_INIT_FILTER: null, VIVALDI_HISTORY_LOAD_TODAY: null, VIVALDI_HISTORY_LOAD_YESTERDAY_AND_OLDER: null, VIVALDI_HISTORY_REMOVE_AFTER: null, VIVALDI_TABS_UPDATED: null, WEBPAGEVIEW_ACTIONS: null, WEBVIEW_SET_ACTIVE: null }); e.exports = s }, , function(e, t, n) { // ========================= // Function_8 // ========================= "use strict"; var i = n(821).Dispatcher, a = Object.assign(new i, { handleViewAction: function(e) { this.dispatch({ source: "VIEW_ACTION", action: e }) }, handleChromeAction: function(e) { this.dispatch({ source: "CHROME_ACTION", action: e }) } }); e.exports = a }, , function(e, t, n) { // ========================= // Function_10 // ========================= "use strict"; window.vivaldi ? e.exports = window.vivaldi : e.exports = n(233) }, , function(e, t, n) { // ========================= // Function_12 // ========================= "use strict"; var i = n(1), a = function e(t, n) { if ("string" == typeof t) return t.toLowerCase().indexOf(n) !== -1; if (t && "input" === t.type && "string" == typeof t.props.value) return t.props.value.toLowerCase().indexOf(n) !== -1; if (t && t.props && t.props.children) { var a = !1; return i.Children.forEach(t.props.children, function(t) { a || (a = e(t, n)) }), a } return !1 }; e.exports = function(e, t) { return t ? a(e, t) ? e : null : e } }, function(e, t, n) { // ========================= // Function_13 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = n(3), r = { getInitialState: function() { return {} }, componentWillMount: function() { this.setState(a.getKeysSync(this.vivaldiSettingsKeys)) }, componentDidMount: function() { var e = this; this.vivaldiSettingsKeys.forEach(function(t) { return a.addListener(t, e._vivaldiSettingHandler) }) }, componentWillUnmount: function() { var e = this; this.vivaldiSettingsKeys.forEach(function(t) { return a.removeListener(t, e._vivaldiSettingHandler) }) }, _vivaldiSettingHandler: function(e, t, n) { e !== t && this.state[n] !== t && ("function" == typeof this.vivaldiSettingWillChange && this.vivaldiSettingWillChange(n, t), this.isMounted() && this.setState(i({}, n, t))) } }; e.exports = r }, , function(e, t, n) { // ========================= // Function_15 // ========================= (function(t) { "use strict"; var i = n(8), a = n(6), r = n(72), s = n(3), o = n(17), l = n(348), c = n(4), u = n(89), A = n(779), d = n(782), h = n(10), m = n(20), p = m.urls, f = n(27), g = f.List, _ = f.Set, v = "MacIntel" === navigator.platform, b = !1, N = window.vivaldiWindowId, E = { onFaviconUpdated: "setFavIcon", onTabUpdated: "setTabInfo" }, S = { newPage: function(e, t, n) { n && n.url && (e = n.url), S.openURL(e) }, openURL: function(e, t) { t = Object.assign({ singleton: !1, inCurrent: !1, inSpecific: null, inBackground: !1, isTyped: !1, bookmarkId: 0, incognito: !1 }, t), e = p.getUrl(e), e && "_blank" !== e || (e = o.getDefaultStartpage()); var n = t.inSpecific ? t.inSpecific : o.getActivePage(); if (t.inNewWindow) return void S.openWindow(e, { focused: !t.inBackground, incognito: t.incognito }); var r = !1; if (t.singleton) { if (p.internalKeyFromUrl(e)) { var s = o.getPages().find(function(t) { return p.equalUrl(e, t.url) }); s && (i.handleViewAction({ actionType: a.PAGE_OPEN, page: s }), r = !0) } } else t.inCurrent && n.url && (t.bookmarkId && l.add(n.id, t.bookmarkId, e), i.handleViewAction({ actionType: a.PAGE_OPEN_URL, page: n, url: e, isTyped: t.isTyped }), r = !0); if (!r) { var u = A(e), d = { url: u, windowId: N, active: t.inBackground !== !0 }; t.addOpenerTabId === !0 && (d.openerTabId = n.id), c.tabs.create(d, function(n) { c.runtime.lastError ? console.warn("ERROR while creating new tab. Original message:\n" + c.runtime.lastError.message) : t.bookmarkId && l.add(n.id, t.bookmarkId, e) }) } }, setTitle: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_TITLE, page: e, title: t }) }, openWindow: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : o.getDefaultStartpage(), t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = arguments[2], i = arguments[3], a = Object.assign({ url: e, incognito: !1, focused: void 0, width: window.innerWidth, height: window.innerHeight }, t); void 0 === i && (i = "normal"); var r = Object.assign({ ext_id: u(), windowType: i }, t.extData ? JSON.parse(t.extData) : {}); a.extData = JSON.stringify(r), b && s.set({ OPEN_WINDOW_TIMESTAMP: (new Date).getTime() }), c.windows.create(a, "function" == typeof n ? n : null) }, openIncognitoWindow: function(e) { S.openWindow(e, { incognito: !0 }) }, openPage: function(e) { i.handleViewAction({ actionType: a.PAGE_OPEN, page: e }) }, openPageN: function(e) { var t = e - 1, n = "off" === s.getSync("TAB_STACKING"), i = o.getTabs(n), a = i.get(t); a && S.openPage(a.page) }, openLastPage: function() { var e = "off" === s.getSync("TAB_STACKING"), t = o.getTabs(e), n = t.last(); n && S.openPage(n.page) }, minimizePage: function(e) { i.handleViewAction({ actionType: a.PAGE_MINIMIZE, page: e }) }, discardPage: function(e) { c.tabs.discard(e.id) }, clonePage: function(e) { var t = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); i.handleViewAction({ actionType: a.PAGE_CLONE, pages: t }) }, showHomepage: function(e) { var t = s.getSync(r.kVivaldiHomepage); if (t) { var n = {}; e ? n = e : n.inCurrent = !0, S.openURL(t, n) } }, buryPage: function(e) { i.handleViewAction({ actionType: a.PAGE_BURY, page: e }) }, close: function() { if (o.isSelecting()) { var e = o.getSelection().map(function(e) { return o.getPages().find(function(t) { return t.id === e }) }).filter(Boolean).toList(); S.closePage(e) } else { var t = o.getActivePage(); S.closePage(t) } }, closePage: function(e) { var t = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); i.handleViewAction({ actionType: a.PAGE_CLOSE, pages: t }) }, reloadPage: function(e) { var t = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); t.forEach(function(e) { c.tabs.reload(e.id) }) }, closeToRight: function(e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = o.getPages().skipUntil(function(t) { return t.id === e.id }).skip(1); t && o.isGroup(e) && ! function() { var t = ["extData", "group"]; n = n.filter(function(n) { return n.getIn(t) !== e.getIn(t) }) }(), n.count() && S.closePage(n) }, closeToLeft: function(e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = o.getPages().takeUntil(function(t) { return t.id === e.id }); t && o.isGroup(e) && ! function() { var t = ["extData", "group"]; n = n.filter(function(n) { return n.getIn(t) !== e.getIn(t) }) }(), n.count() && S.closePage(n) }, setMuting: function(e, t) { var n = []; "active" === e ? n = [o.getActivePage()] : "other" === e ? n = o.getPages().filter(function(e) { return e.id !== o.getActivePage().id }) : "all" === e && (n = o.getPages()), "mute" === t || "unmute" === t ? ! function() { var e = "mute" === t ? "playing" : "muting"; n.forEach(function(n) { n.mediastate === e && c.tabs.update(n.id, { muted: "mute" === t }, function() { c.runtime.lastError }) }) }() : "toggle" === t && S.mutePage(n) }, mutePage: function(e) { var t = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); t.forEach(function(e) { "playing" === e.mediastate ? c.tabs.update(e.id, { muted: !0 }, function() { c.runtime.lastError }) : "muting" === e.mediastate && c.tabs.update(e.id, { muted: !1 }, function() { c.runtime.lastError }) }) }, movePage: function(e, t) { var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], i = arguments[3], a = ["extData", "group"], r = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); n && (r = r.flatMap(function(e) { return o.isGroup(e.getIn(a)) ? o.getGroup(e.getIn(a)) : g.of(e) })); var s = g.isList(t) || Array.isArray(t) ? g(t) : g.of(t); n && (s = s.flatMap(function(e) { return o.isGroup(e.getIn(a)) ? o.getGroup(e.getIn(a)) : g.of(e) })); var l = r.first().index > s.first().index ? s.first().index : s.last().index; S.moveToIndex(r, l, i) }, moveToIndex: function(e, t, n) { var i = g.isList(e) ? _(e) : _.of(e); c.tabs.move(i.map(function(e) { return e.id }).toArray().sort(function(e, t) { return e - t }), { windowId: N, index: t }, function(e) { c.runtime.lastError && console.warn("Error moving tabs: ", e, c.runtime.lastError.message), "function" == typeof n && n(e) }) }, moveToWindow: function(e, t) { var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], i = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); return n ? i = i.flatMap(function(e) { var t = e.getIn(["extData", "group"]); return o.isGroup(t) ? o.getGroup(t) : g.of(e) }) : S.removeFromTabStack(i), i.some(function(e) { return e.incognito }) ? void console.warn("Not possible to detach incognito tabs") : void c.tabs.move(i.map(function(e) { return e.id }).toJS(), { windowId: t, index: -1 }, function(e) { c.runtime.lastError && console.warn("Error moving tabs: ", e, c.runtime.lastError.message), c.windows.update(t, { focused: !0 }, function() { var e = i.find(function(e) { return e.active }) || i.first(); c.tabs.update(e.id, { active: !0 }) }) }) }, detachPage: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0, i = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e), a = i.first(), r = i.rest(); S.openWindow(null, { tabId: a.id, left: t, top: n, extData: JSON.stringify({ isDropped: !0 }) }, function(e) { r.count() && S.moveToWindow(r, e.id, !1) }) }, createTabStack: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; i.handleViewAction({ actionType: a.PAGE_TABSTACK_CREATE, pages: e, targetIndex: t, groupName: n }) }, expandTabStack: function(e) { i.handleViewAction({ actionType: a.PAGE_TABSTACK_EXPAND, groupName: e }) }, closeTabStack: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (t && !v) { var n = o.getPages(), r = o.getGroup(e.getIn(["extData", "group"])); n.count() === r.count() && S.openURL() } i.handleViewAction({ actionType: a.PAGE_TABSTACK_CLOSE, page: e, closeAll: t }) }, removeFromTabStack: function(e) { var t = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); i.handleViewAction({ actionType: a.PAGE_TABSTACK_REMOVE_FROM, pages: t }) }, closeOther: function(e, t) { var n = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); i.handleViewAction({ actionType: a.PAGE_CLOSE_OTHER, pages: n, includeGroup: t }) }, togglePinned: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : o.getActivePage(), t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], r = g.isList(e) || Array.isArray(e) ? g(e) : g.of(e); i.handleViewAction({ actionType: a.PAGE_TOGGLE_PINNED, pages: r, forcePin: t, forceUnpin: n }) }, tilePages: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "selection", r = t || (e.count() < 4 ? "vertically" : "grid"); i.handleViewAction({ actionType: a.PAGE_TILE_PAGES, pages: e, type: n, id: u(), layout: r }) }, tileTabStack: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null, n = o.getGroup(e), i = t || (n.count() < 4 ? "vertically" : "grid"); S.tilePages(n, i, "group") }, untilePages: function(e) { var t = o.getTiles(e); t && i.handleViewAction({ actionType: a.PAGE_TILE_PAGES, pages: t, type: "", id: "", layout: "" }) }, setFullscreen: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_FULLSCREEN, page: e, fullscreen: t }) }, overridePageProps: function(e, t) { i.handleViewAction({ actionType: a.PAGE_OVERRIDE_PROPS, page: e, props: t }) }, setMediaState: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_MEDIASTATE, pageId: e, mediastate: t }) }, setFavIcon: function(e) { i.handleViewAction({ actionType: a.PAGE_SET_FAVICON, pageId: e.tabId, favIcon: e.favIcon }) }, setTabInfo: function(e, t) { i.handleChromeAction({ actionType: a.VIVALDI_TABS_UPDATED, pageId: e, tabInfo: t }) }, setProcessExitState: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_PROCESSEXITSTATE, pageId: e, processexitstate: t }) }, setThumbnail: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_THUMBNAIL, page: e, thumbnail: t }) }, setTargetURL: function(e) { i.handleViewAction({ actionType: a.PAGE_SET_TARGET_URL, targetUrl: e }) }, toggleRelatedSelection: function(e) { i.handleViewAction({ actionType: a.PAGE_SELECTION_TOGGLE_RELATED, page: e }) }, setSelection: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2]; i.handleViewAction({ actionType: a.PAGE_SELECTION_SET, page: e, multiSelect: t, addGroup: n }) }, clearSelection: function() { i.handleViewAction({ actionType: a.PAGE_SELECTION_CLEAR }) }, cycleByHistory: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : { goBack: !0 }; i.handleViewAction({ actionType: a.PAGE_CYCLE_BY_HISTORY, maybeEvent: e, goBack: t.goBack }) }, cycleByOrder: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : { goBack: !0 }; i.handleViewAction({ actionType: a.PAGE_CYCLE_BY_ORDER, maybeEvent: e, goBack: t.goBack }) }, setIsRestored: function(e, t) { i.handleViewAction({ actionType: a.PAGE_SET_IS_RESTORED, page: e, restored: t }) }, markPageForUndelete: function(e, t) { t && t.getPageHistory && t.getPageHistory(function(t, n) { n && i.handleViewAction({ actionType: a.PAGE_PREVENT_UNDELETE, pageId: e.id, preventUndelete: n.every(function(e) { return p.isInternalUrl(e.url) }), historyCount: n.filter(function(e) { return !p.isInternalUrl(e.url) }).length }) }) }, setFindResults: function(e, t) { i.handleViewAction(Object.assign({ actionType: a.FIND_IN_PAGE_RESULT_ACTION, page: e, searchText: t.searchText }, t)) }, moveDroppedTabs: function(e, t, n) { var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null; 1 === e.size && e.first().getIn(["extData", "group"]) && S.removeFromTabStack(e.first()), S.moveToIndex(e, n, function() { var n = t ? e.find(function(e) { return e.id === parseInt(t) }) : e.first(); n && S.openPage(n), setTimeout(function() { return "function" == typeof i && i() }, 100), e.some(function(e) { return e.pinned }) && S.togglePinned(e.filter(function(e) { return e.pinned }).map(function(e) { return e.set("pinned", !1) }), !0) }) }, _attachTabPrivateHandlers: function() { Object.keys(E).forEach(function(e) { return h.tabsPrivate[e].addListener(S[E[e]]) }) }, clear: function() { i.handleViewAction({ actionType: a.PAGE_CLEAR }) }, _registerChromeTabsEvents: function() { var e = { onCreated: a.CHROME_TABS_CREATED, onRemoved: a.CHROME_TABS_REMOVED, onUpdated: a.CHROME_TABS_UPDATED, onMoved: a.CHROME_TABS_MOVED, onActivated: a.CHROME_TABS_ACTIVATED, onDetached: a.CHROME_TABS_DETACHED, onAttached: a.CHROME_TABS_ATTACHED, onReplaced: a.CHROME_TABS_REPLACED }, t = function(e, t) { for (var n = arguments.length, a = Array(n > 2 ? n - 2 : 0), r = 2; r < n; r++) a[r - 2] = arguments[r]; d(e, a) === N && i.handleChromeAction({ actionType: t, args: a }) }; Object.keys(e).forEach(function(n) { return c.tabs[n].addListener(t.bind(null, n, e[n])) }) }, loadPromise: function() { return new Promise(function(e, n) { c.windows.get(N, { populate: !0 }, function(n) { return t.nextTick(function() { var t = {}; if (n && n.extData) try { t = JSON.parse(n.extData) } catch (e) {} var r = n ? n.tabs : [], o = t.historystack; i.handleChromeAction({ actionType: a.CHROME_TABS_INIT, tabs: r, historystack: o }), S._registerChromeTabsEvents(), S._attachTabPrivateHandlers(), s.addListener("TAB_SELECTION_INCLUDE_ACTIVE", S.clearSelection), e() }) }) }) } }; e.exports = window.PageActions = S }).call(t, n(16)) }, , function(e, t, n) { // ========================= // Function_17 // ========================= (function(t) { "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function s(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function o(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } function l() { je = (0, Be.List)(), ze = (0, Be.List)(), Ye = !1, Je = (0, Be.Set)(), Qe = "", Ze = (0, Be.Map)() } function c(e, t) { je = je.map(function(n) { return n.id === e ? n.mergeIn(["extData"], t) : n }), lt() } function u(e, t) { Ze = Ze.set(e.getIn(["extData", "ext_id"]), t) } function A(e) { return Ze.get(e.getIn(["extData", "ext_id"])) } function d(e, t, n) { c(e, { preventUndelete: t, historyCount: n }), $e.emitChange() } function h(e, t, n, i) { return m(e, t, function(e) { return e.set(n, i) }) } function m(e, t, n) { return e.map(function(e) { return e.id === t ? n(e) : e }) } function p(e, t) { var n = e.map(function(e) { return e.set("active", e.id === t).set("extData", e.id === t ? e.extData.set("read", !0) : e.extData) }); return lt(), n } function f(e) { if (e && 0 !== e.count()) { je = je.map(function(e) { return e.getIn(["extData", "ext_id"]) ? e : e.setIn(["extData", "ext_id"], (0, De.default)()) }), lt(); var t = e.reduce(function(e, t) { var n = $e.getPages().find(function(e) { return e.id === t }); return n && e ? (e.push(n.getIn(["extdata", "ext_id"])), e) : e }, []); (0, Te.default)(Ke, { historystack: t }) } } function g(e, t) { var n = t.reduce(function(t, n) { var i = e.find(function(e) { return e.getIn(["extData", "ext_id"]) === n }); return i && t ? t.push(i.id) : t }, (0, Be.List)()); n = e.filter(function(e) { return !n || !n.includes(e.id) }).map(function(e) { return e.id }).concat(n); var i = je.find(function(e) { return e.active }); return i && (n = (0, He.moveToEnd)(n, i.id)), n } function _(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; e && (je = (0, Be.List)(e.map(function(e) { return de.default.tabToPage(e) })), e.forEach(ue.syncDetachedTabInformation), je = je.map(function(e) { return e.hasIn(["extData", "ext_id"]) ? e : e.setIn(["extData", "ext_id"], (0, De.default)()) }), lt(), ze = g(je, t), ie(), $e.emitChange()) } function v(e, t) { var n = e.index, i = Ee.default.getSync("TAB_NEW_PLACEMENT"); if (A(e)) u(e, !1), n = e.index; else if ("directrightofcurrent" === i) { var a = $e.getActivePage(); if (a.pinned) { var r = $e.getPages().find(function(e) { return !e.pinned }); n = r ? r.index : n } else n = a.index + 1 } else if ("rightofcurrent" === i && e.openerTabId) { var s = $e.getPages().find(function(t) { return t.id === e.openerTabId }); if (s && s.pinned) n = e.index; else { var o = function(t) { return t.id !== e.openerTabId && t.openerTabId !== e.openerTabId }, l = t.skipWhile(o).takeUntil(o).last(); l && (n = l.index + 1) } } else if ("alwayslast" === i) { var c = t.last(); c && (n = c.index + 1) } return n } function b(e) { var t = de.default.tabToPage(e), n = v(t, je), i = n !== t.index; i && Oe.default.tabs.move(t.id, { index: n }); var a = Ee.default.getSync("TAB_STACKING_OPEN_IN_CURRENT"); if (a && void 0 !== t.openerTabId) { var r = $e.getPages().find(function(e) { return e.id === t.openerTabId }), s = r && r.getIn(["extData", "group"]); r && $e.isGroup(s) && (t = t.setIn(["extData", "group"], s), lt()) } t.getIn(["extData", "ext_id"]) && (t = t.setIn(["extData", "ext_id"], (0, De.default)()), lt()), ze = e.active ? (0, He.moveToEnd)(ze, t.id) : (0, He.moveToStart)(ze, t.id), f(ze), je = je.splice(e.index, 0, t), e.active && (je = p(je, e.id)), ie(), i || $e.emitChange() } function N(e) { je = je.filter(function(t) { return t.id !== e }).map(function(e, t) { return e.set("index", t) }), ze = ze.filter(function(e) { return je.some(function(t) { return t.id === e }) }), f(ze), ie() } function E(e, t, n) { var i = e.findIndex(function(e) { return e.id === t.id }); return n === i ? e : e.delete(i).splice(n, 0, t).map(function(e, t) { return e.set("index", t) }) } function S(e) { N(e), $e.emitChange() } function T(e, t, n) { var i = je.map(function(i) { return i.id === e ? de.default.updatePage(i, { favIconUrl: n.favIconUrl || "" }, { url: n.url }, t) : i }); (0, Be.is)(i, je) || (je = i, $e.emitChange()) } function y(e, t) { var n = je.find(function(t) { return t.id === e }); if (n) { var i = E(je, n, t.toIndex); ie(), (0, Be.is)(je, i) || (je = i, $e.emitChange()) } } function C(e) { var t = $e.getActivePage(); if (e.tabId !== t.id) { var n = p(je, e.tabId), i = ze.last(); (0, Be.is)(n, je) && i === e.tabId || (je = n, ze = (0, He.moveToEnd)(ze, e.tabId), f(ze), ie(), $e.emitChange()) } } function I(e) { var t = je.find(function(t) { return t.id === e }); if (t) if ((0, ue.storeDetachedTabInformation)(e, t.url), N(e), ie(), t.active) { var n = P(t); D(n.id) } else $e.emitChange() } function O(e, t) { var n = t.newPosition, i = je.find(function(t) { return t.id === e }); if (!i) { var a = new fe.default({ id: e, index: n, url: "" }); je = je.splice(n, 0, a).map(function(e, t) { return e.set("index", t) }) }(0, xe.default)(Oe.default.tabs.get)(e).then(function(e) { return (0, ue.syncDetachedTabInformation)(e), e }).then(function(e) { return T(e.id, e, e) }), ie() } function w(e, t) { var n = m(je, e, function(e) { return e.merge(t) }); (0, Be.is)(n, je) || $e.emitChange() } function D(e) { var t = p(je, e); (0, Be.is)(t, je) || (je = t, ie(), Oe.default.tabs.update(e, { active: !0 }, function() { Oe.default.runtime.lastError }), ze = (0, He.moveToEnd)(ze, e), f(ze), $e.emitChange()) } function k() { ct && (0, Be.is)(ut, ze) || (ct = ze, ut = ze), ct = (0, He.rotateList)(ct), D(ct.last()), ut = ze } function M(e) { e.forEach(function(e) { return Oe.default.tabs.duplicate(e.id, function(t) { if (t && t.id) { var n = Ee.default.getSync("TAB_STACKING_OPEN_IN_CURRENT"); n && $e.isGroup(e.getIn(["extData", "group"])) && c(t.id, { group: e.getIn(["extData", "group"]) }); var i = Ee.default.getSync("TAB_CLONE_PLACEMENT"), a = "alwayslast" === i ? -1 : t.index; t.id && Oe.default.tabs.move(t.id, { index: a }) } }) }) } function L(e) { var t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], n = void 0; if (e.openerTabId) { var i = function() { return je.takeUntil(function(t) { return t.id === e.id }).filter(function(t) { return t.openerTabId === e.openerTabId }).reverse() }, a = function() { return je.slice(e.index + 1).filter(function(t) { return t.openerTabId === e.openerTabId }) }; n = t ? a().first() || i().first() : i().first() || a().first(), n || (n = je.find(function(t) { return t.id === e.openerTabId })) } return n || (n = je.skipUntil(function(t) { return t.id === e.id }).skip(1).find(function(t) { return t.openerTabId === e.id })), n } function P(e) { var t = "TAB_ACTIVATION_PREFER_RELATED", n = Ee.default.getSync(t), i = Ee.default.getSync("TAB_CLOSE_ACTIVATION"), a = void 0; if (n) { var r = "left" !== i; if (a = L(e, r)) return a } switch (i) { case "left": var s = e.index - 1; a = s < 0 ? je.find(function(t) { return t.id !== e.id }) : je.get(s); break; case "right": a = je.get(e.index + 1), a || (a = je.reverse().find(function(t) { return t.id !== e.id })); break; case "activation_order": a = void 0; break; default: a = void 0 } return a || ! function() { var t = ze.filter(function(e) { return je.some(function(t) { return t.id === e }) }).filter(function(t) { return t !== e.id }).last(); a = je.find(function(e) { return e.id === t }) }(), a || (a = je.first()), a } function R(e) { var t = P(e); t && t.id !== e.id && (D(t.id), ze = (0, He.moveToStart)(ze, e.id), $e.emitChange()) } function x(e) { if ($e.canClose()) { var t = e, n = Ee.default.getSync("CLOSABLE_PINNED_TABS"); "off" === n ? t = e.filter(function(e) { return !e.pinned }) : "bury" === n && (t = e.filter(function(e) { return !e.pinned }), ze = e.filter(function(e) { return e.pinned }).reduce(function(e, t) { return (0, He.moveToStart)(e, t.id) }, ze)), je = je.map(function(e) { return t.find(function(t) { return t.id === e.id }) ? e.set("isRemoved", !0) : e }), ze = ze.filter(function(e) { return je.some(function(t) { return t.id === e }) }); var i = 0 === je.filter(function(e) { return !e.isRemoved }).count(); if (i) { var a = Ee.default.getSync("TAB_NEVER_CLOSE_LAST"); return void(a && !At ? (At = !0, Oe.default.tabs.create({ url: $e.getDefaultStartpage() }, function() { At = !1 })) : $e.emitChange()) } var r = t.some(function(e) { return e.active }), s = je.find(function(e) { return e.active }) || je.first(), o = "bury" === n && s && s.pinned && e.some(function(e) { return e.id === s.id }); if (r) { var l = P(s); D(l.id) } else o ? D(ze.last()) : (ie(), $e.emitChange()) } } function B(e, t, n) { return e.set("target", (0, Be.Map)({ url: t, isTyped: n })).set("url", t) } function U(e, t, n) { je = m(je, e.id, function(e) { return B(e, t, n) }), $e.emitChange() } function F(e, t, n) { var i, r = function(e) { return e.pinned }; if (e.some(r)) return void console.warn("Can't group pinned pages."); e = e.map(function(e) { return je.find(function(t) { return t.id === e.id }) || e }).toSet().toList(); var s = e.find(function(e) { return "group" === e.getIn(["extData", "tiling", "type"]) }), o = s && s.getIn(["extData", "tiling"]) || "", l = e.first().getIn(["extData", "tiling", "id"]); !o && l && e.every(function(e) { return "selection" === e.getIn(["extData", "tiling", "type"]) && e.getIn(["extData", "tiling", "id"]) === l }) && (o = e.first().getIn(["extData", "tiling"]).set("type", "group")); var c = void 0; if (n) c = n; else { var u = e.findIndex(function(e) { return e.getIn(["extData", "group"]) }); c = u !== -1 ? e.getIn([u, "extData", "group"]) : (0, De.default)() } e = e.map(function(e) { return e.mergeIn(["extData"], { group: c, tiling: o }) }); var A = e.filter(function(e) { return e.windowId === Ke }).sortBy(function(e) { return e.index }).first(), d = "number" != typeof t ? A.index : t; je = (i = je.filterNot(function(t) { return e.some(function(e) { return e.id === t.id }) })).splice.apply(i, [d, 0].concat(a(e))), ie(), lt(), Oe.default.tabs.move(e.map(function(e) { return e.id }).toArray(), { windowId: Ke, index: d }), $e.emitChange() } function H(e, t) { var n = void 0; n = t ? e.flatMap(function(e) { return $e.isGroup(e.getIn(["extData", "group"])) ? $e.getGroup(e.getIn(["extData", "group"])) : Be.List.of(e) }) : e; var i = je.filterNot(function(e) { return n.some(function(t) { return t.id === e.id }) }); x(i) } function V(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; t ? je = je.map(function(t) { return t.set("isRemoved", t.getIn(["extData", "group"]) === e.getIn(["extData", "group"])) }) : ! function() { var t = ["extData", "group"], n = je.filter(function(n) { return n.getIn(t) === e.getIn(t) }).map(function(e) { return e.id }), i = ze.reverse().find(function(e) { return n.contains(e) }); je = je.map(function(e) { return e.set("isRemoved", e.id === i) }) }(), $e.emitChange() } function W(e) { je = je.map(function(t) { return e.some(function(e) { return e.id === t.id }) ? t.mergeIn(["extData"], { group: "", tiling: "" }) : t }), lt(), $e.emitChange() } function G(e) { je = je.map(function(t) { return t.getIn(["extData", "group"]) === e ? t.mergeIn(["extData"], { group: "", tiling: "" }) : t }), $e.emitChange() } function K(e, t) { je = je.map(function(n) { return e.some(function(e) { return e.id === n.id }) ? n.mergeIn(["extData"], { tiling: t }) : n }), $e.emitChange() } function j(e, t, n) { je = je.map(function(i) { if (e.some(function(e) { return e.id === i.id })) { var a = void 0; return a = !!t || !n && !i.pinned, Oe.default.tabs.update(i.id, { pinned: a }), i.set("pinned", a) } return i }), $e.emitChange() } function z(e) { Qe = e } function Y(e, t) { je = m(je, e.id, function(e) { return e.merge(t) }), $e.emitChange() } function J(e, t) { je = h(je, e, "mediastate", t), $e.emitChange() } function Q(e, t) { je = h(je, e, "favIcon", t), $e.emitChange() } function Z(e, t) { je = h(je, e.id, "fullscreen", t), $e.emitChange() } function q(e, t) { je = h(je, e, "processexitstate", t), $e.emitChange() } function X(e, t) { je = h(je, e.id, "title", t), $e.emitChange() } function $(e, t) { je = t ? je.map(function(n) { return n.id === e.id ? n.mergeIn(["extData"], { urlForThumbnail: n.url, thumbnail: t }) : n }) : je.map(function(t) { return t.id === e.id ? t.deleteIn(["extData", "urlForThumbnail"]).deleteIn(["extData", "thumbnail"]) : t }), $e.emitChange() } function ee(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if (n && $e.isGroup(t.getIn(["extData", "group"]))) { var i = $e.getGroup(t.getIn(["extData", "group"])).map(function(e) { return e.id }); return e.union(i) } return e.add(t.id) } function te(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if (n && $e.isGroup(t.getIn(["extData", "group"]))) { var i = $e.getGroup(t.getIn(["extData", "group"])).map(function(e) { return e.id }); return e.subtract(i) } return e.remove(t.id) } function ne(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; return e.contains(t.id) ? te(e, t, n) : ee(e, t, n) } function ie() { Ye = !1, dt = ht = $e.getActivePage(); var e = Ee.default.getSync("TAB_SELECTION_INCLUDE_ACTIVE"); Je = e && dt ? ee((0, Be.Set)(), ht, !0) : (0, Be.Set)() } function ae() { ie(), $e.emitChange() } function re(e) { Ye || ie(), dt = ht = e; var t = $e.isGroup(e.getIn(["extData", "group"])); if (t) Je = ee(Je, e, !0); else { var n = $e.getTabs(), i = (0, Ce.default)(e, n), a = ce(i, 2), r = a[1]; Je = r.reduce(function(e, t) { return e.add(t.id) }, Je), Ye = !0 } $e.emitChange() } function se(e, t, n) { Ye || ie(), t ? le(e, n) : oe(e, n) } function oe(e, t) { dt = ht = e, Je = Ye === !1 && e.active ? ee(Je, e, t) : ne(Je, e, t), Ye = !0, $e.emitChange() } function le(e, t) { var n = e; dt && ht && ! function() { var e = dt.index, t = ht.index; Je = Je.subtract(je.filter(function(n) { return n.index >= Math.min(e, t) && n.index <= Math.max(e, t) }).flatMap(function(e) { var t = e.getIn(["extData", "group"]); return $e.isGroup(t) ? $e.getGroup(t) : [e] }).map(function(e) { return e.id })).union(je.filter(function(t) { return t.index >= Math.min(e, n.index) && t.index <= Math.max(e, n.index) }).flatMap(function(e) { var t = e.getIn(["extData", "group"]); return $e.isGroup(t) ? $e.getGroup(t) : [e] }).map(function(e) { return e.id })), ht = n, Ye = !0, $e.emitChange() }() } var ce = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), ue = n(776), Ae = n(73), de = i(Ae), he = n(18), me = i(he), pe = n(114), fe = i(pe), ge = n(8), _e = i(ge), ve = n(6), be = i(ve), Ne = n(3), Ee = i(Ne), Se = n(399), Te = i(Se), ye = n(401), Ce = i(ye), Ie = n(4), Oe = i(Ie), we = n(89), De = i(we), ke = n(88), Me = i(ke), Le = n(212), Pe = i(Le), Re = n(402), xe = i(Re), Be = n(27), Ue = n(7), Fe = n(396), He = n(789), Ve = n(20), We = "change", Ge = Ve.urls.internals.startpage + "?section=Speed-dials&activeSpeedDialIndex=0", Ke = window.vivaldiWindowId, je = (0, Be.List)(), ze = (0, Be.List)(), Ye = !1, Je = (0, Be.Set)(), Qe = "", Ze = (0, Be.Map)(), qe = function(e) { function t() { return r(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return o(t, e), t }((0, Be.Record)({ type: "tab", id: "", page: new fe.default })), Xe = function(e) { function t() { return r(this, t), s(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return o(t, e), t }((0, Be.Record)({ type: "group", id: "", page: new fe.default, pages: (0, Be.List)() })), $e = Object.assign({}, me.default.prototype, { getPages: function() { return je }, getTabs: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : je; return et(e, t) }, getPageHistory: function() { return ze }, getActivePage: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : je; return tt(e) }, isIncognito: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : je; return tt(e).incognito }, isActivePage: function(e) { return this.getActivePage().get("id") === e }, getGroup: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : je; return nt(t, e) }, isGroup: function(e) { return it(je, e) }, getGroupHighlightId: function(e) { return at(je, e) }, getTiles: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : je; return rt(t, e) }, isSelecting: function() { return Ye }, getSelection: function() { return Je }, getTargetUrl: function() { return Qe }, getDiscardablePages: function() { return st(je) }, canClose: function() { var e = Ee.default.getSync("TAB_NEVER_CLOSE_LAST"); return !(e && $e.isLastPage() && $e.getPages().first().url === $e.getDefaultStartpage()) }, isLastPage: function() { return ot(je) }, getDefaultStartpage: function() { var e = Ee.default.getSync("DEFAULT_TAB_PAGE"); return e || Ge }, emitChange: function() { $e.delayedEmitChange() }, delayedEmitChange: (0, Ue.debounce)(function() { return $e.emit(We) }, 50, { leading: !0 }), nextTickHandler: !1, emitChangeInNextTick: function() { $e.nextTickHandler === !1 && ($e.nextTickHandler === !0, t.nextTick(function() { $e.nextTickHandler = !1, $e.emit(We) })) }, addChangeListener: function(e) { this.on(We, e) }, removeChangeListener: function(e) { this.removeListener(We, e) } }), et = (0, Pe.default)(1)(function(e, t) { var n = t.filter(function(e) { return !e.isRemoved }); return e ? n.map(function(e) { return new qe({ page: e, id: e.id }) }) : n.groupBy(function(e) { return e.getIn(["extData", "group"]) || e.id }).map(function(e, n, i) { return e.count() >= 2 ? new Xe({ id: n, pages: e, page: t.find(function(e) { return e.id === at(t, n) }) }) : new qe({ page: e.first(), id: e.first().id }) }).toList() }), tt = (0, Pe.default)(1)(function(e) { return e.find(function(e) { return e.active }) || new fe.default }), nt = (0, Pe.default)(10)(function(e, t) { return t ? e.filter(function(e) { return !e.isRemoved }).filter(function(e) { return e.getIn(["extData", "group"]) === t }) : (0, Be.List)() }), it = (0, Pe.default)(10)(function(e, t) { return !!t && e.filter(function(e) { return !e.isRemoved }).filter(function(e) { return e.getIn(["extData", "group"]) === t }).count() > 1 }), at = (0, Pe.default)(10)(function(e, t) { var n = nt(e, t).map(function(e) { return e.id }), i = ze.reverse().find(function(e) { return n.contains(e) }); return i || n.first() }), rt = (0, Pe.default)(10)(function(e, t) { return t ? e.filter(function(e) { return !e.isRemoved }).filter(function(e) { return e.getIn(["extData", "tiling", "id"]) === t }) : (0, Be.List)() }), st = (0, Pe.default)(1)(function(e) { return e.filter(function(e) { return !e.isRemoved }).filter(function(e) { return !e.discarded && !e.active && e.url !== $e.getDefaultStartpage() }) }), ot = (0, Pe.default)(1)(function(e) { return e.filter(function(e) { return !e.isRemoved }).count() < 2 }), lt = (0, Ue.debounce)(function() { return Oe.default.tabs.query({ windowId: window.vivaldiWindowId }, function(e) { return e.forEach(function(e) { var t = $e.getPages().find(function(t) { return t.id === e.id }); if (t) { var n = void 0; try { n = JSON.parse(e.extData || "{}") } catch (e) { n = {} } var i = (0, Be.Map)(n); (0, Be.is)(i, t.extData) || Oe.default.tabs.update(t.id, { extData: JSON.stringify(t.extData.toJS()) }) } }) }) }, 50), ct = null, ut = null, At = !1, dt = null, ht = null, mt = function() { var e = void 0, t = void 0; return function(n) { var i = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1]; (0, Me.default)(n) ? (e ? e = (0, He.combineLists)(ze, e) : (e = ze, t = ze.last()), e = (0, He.rotateList)(e, i === !1), D(e.last()), (0, Fe.modifierUpListener)(n, function() { var n = t, i = e && e.last(); e && n && i && (ze = e.filter(function(e) { return e !== n && e !== i }).push(n), n !== i && (ze = ze.push(i))), f(ze), e = t = null })) : (ze = (0, He.rotateList)(ze, i === !1), f(ze), D(ze.last())) } }(), pt = function() { var e = void 0, t = void 0; return function(n) { var i = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1], a = $e.getPages(), r = a.findIndex(function(e) { return e.active }); e ? e = (0, He.combineLists)(ze, e) : (e = ze, t = a.getIn([r, "id"])); var s = ((r + (i ? 1 : -1)) % a.size + a.size) % a.size, o = a.getIn([s, "id"]); o && D(o), (0, Fe.modifierUpListener)(n, function() { var n = t, i = a.getIn([s, "id"]); e && n && i && (ze = (0, He.combineLists)(ze, e.filter(function(e) { return e !== n && e !== i }).push(n).push(i))), f(ze), e = t = null }) } }(); _e.default.register(function(e) { var t = e.action; switch (t.actionType) { case be.default.PAGE_CLEAR: l(); break; case be.default.CHROME_TABS_INIT: _(t.tabs, t.historystack, t.expectingTabs); break; case be.default.CHROME_TABS_CREATED: var n = ce(t.args, 1), i = n[0]; b(i); break; case be.default.CHROME_TABS_REMOVED: var a = ce(t.args, 1), r = a[0]; S(r); break; case be.default.CHROME_TABS_UPDATED: var s = ce(t.args, 3), o = s[0], c = s[1], A = s[2]; T(o, c, A); break; case be.default.CHROME_TABS_MOVED: var h = ce(t.args, 2), m = h[0], p = h[1]; y(m, p); break; case be.default.CHROME_TABS_ACTIVATED: var f = ce(t.args, 1), g = f[0]; C(g); break; case be.default.CHROME_TABS_DETACHED: var v = ce(t.args, 1), N = v[0]; I(N); break; case be.default.CHROME_TABS_ATTACHED: var E = ce(t.args, 2), L = E[0], P = E[1]; O(L, P); break; case be.default.CHROME_TABS_REPLACED: break; case be.default.PAGE_BURY: R(t.page); break; case be.default.PAGE_CLOSE: x(t.pages); break; case be.default.PAGE_OPEN_URL: U(t.page, t.url, t.isTyped); break; case be.default.PAGE_OPEN: D(t.page.id); break; case be.default.PAGE_MINIMIZE: k(); break; case be.default.PAGE_CLONE: M(t.pages); break; case be.default.PAGE_SET_IS_RESTORED: u(t.page, t.restored); break; case be.default.PAGE_TABSTACK_CREATE: F(t.pages, t.targetIndex, t.groupName); break; case be.default.PAGE_CLOSE_OTHER: H(t.pages, t.includeGroup); break; case be.default.PAGE_TABSTACK_CLOSE: V(t.page, t.closeAll); break; case be.default.PAGE_TABSTACK_REMOVE_FROM: W(t.pages); break; case be.default.PAGE_TABSTACK_EXPAND: G(t.groupName); break; case be.default.PAGE_TILE_PAGES: K(t.pages, { type: t.type, id: t.id, layout: t.layout }); break; case be.default.PAGE_TOGGLE_PINNED: j(t.pages, t.forcePin, t.forceUnpin); break; case be.default.PAGE_SET_TARGET_URL: z(t.targetUrl); break; case be.default.PAGE_OVERRIDE_PROPS: Y(t.page, t.props); break; case be.default.PAGE_SET_MEDIASTATE: J(t.pageId, t.mediastate); break; case be.default.PAGE_SET_PROCESSEXITSTATE: q(t.pageId, t.processexitstate); break; case be.default.PAGE_SET_THUMBNAIL: $(t.page, t.thumbnail); break; case be.default.PAGE_SET_TITLE: X(t.page, t.title); break; case be.default.PAGE_SET_FAVICON: Q(t.pageId, t.favIcon); break; case be.default.PAGE_SET_FULLSCREEN: Z(t.page, t.fullscreen); break; case be.default.VIVALDI_TABS_UPDATED: w(t.pageId, t.tabInfo); break; case be.default.PAGE_SELECTION_SET: se(t.page, t.multiSelect, t.addGroup); break; case be.default.PAGE_SELECTION_TOGGLE_RELATED: re(t.page); break; case be.default.PAGE_SELECTION_CLEAR: ae(); break; case be.default.PAGE_PREVENT_UNDELETE: d(t.pageId, t.preventUndelete, t.historyCount); break; case be.default.PAGE_CYCLE_BY_HISTORY: mt(t.maybeEvent, t.goBack); break; case be.default.PAGE_CYCLE_BY_ORDER: pt(t.maybeEvent, t.goBack); break; default: return !0 } }), e.exports = window.PageStore = $e }).call(t, n(16)) }, , , function(e, t, n) { // ========================= // Function_20 // ========================= "use strict"; var i = n(3), a = n(159), r = n(2), s = "chrome-extension://mpognobbkildjkofajifpdfhcoklimli", o = ["vivaldi://accessibility", "vivaldi://appcache-internals", "vivaldi://apps", "vivaldi://blob-internals", "vivaldi://bookmarks", "vivaldi://cache", "vivaldi://chrome", "vivaldi://components", "vivaldi://copresence", "vivaldi://crashes", "vivaldi://credits", "vivaldi://device-log", "vivaldi://devices", "vivaldi://dns", "vivaldi://downloads", "vivaldi://extensions", "vivaldi://flags", "vivaldi://flash", "vivaldi://gcm-internals", "vivaldi://gpu", "vivaldi://help", "vivaldi://histograms", "vivaldi://history", "vivaldi://indexeddb-internals", "vivaldi://inspect", "vivaldi://invalidations", "vivaldi://linux-proxy-config", "vivaldi://local-state", "vivaldi://media-internals", "vivaldi://net-internals", "vivaldi://network-error", "vivaldi://network-errors", "vivaldi://newtab", "vivaldi://omnibox", "vivaldi://password-manager-internals", "vivaldi://plugins", "vivaldi://policy", "vivaldi://predictors", "vivaldi://print", "vivaldi://profiler", "vivaldi://quota-internals", "vivaldi://sandbox", "vivaldi://serviceworker-internals", "vivaldi://settings", "vivaldi://signin-internals", "vivaldi://suggestions", "vivaldi://supervised-user-internals", "vivaldi://sync-internals", "vivaldi://system", "vivaldi://terms", "vivaldi://thumbnails", "vivaldi://tracing", "vivaldi://translate-internals", "vivaldi://user-actions", "vivaldi://version", "vivaldi://view-http-cache", "vivaldi://vivaldi-urls", "vivaldi://webrtc-internals", "vivaldi://webrtc-logs", "vivaldi://startpage", "vivaldi://mail", "vivaldi://welcome", "vivaldi://experiments", "vivaldi://actionlog"], l = function() { var e = this; this.internals = { settings: s + "/components/settings/settings.html", startpage: s + "/components/startpage/startpage.html", mailpage: s + "/components/mail/mail.html", welcome: s + "/components/welcome/welcome.html", experiments: s + "/components/experiments/experiments.html", actionlog: s + "/components/actionlog/actionlog.html", aboutpage: "chrome://version", vivaldiurls: "chrome://chrome-urls", plugins: "chrome://plugins", extensions: "chrome://chrome/extensions", bookmarks: "chrome://bookmarks", history: "chrome://history", blankpage: "about:blank" }, this._internal_values = Object.keys(this.internals).map(function(t) { return e.internals[t] }), this.mappings = [{ displayUrl: "vivaldi://settings", url: this.internals.settings, copyParams: !0 }, { displayUrl: "vivaldi:settings", url: this.internals.settings, copyParams: !0 }, { displayUrl: "", url: this.internals.startpage, copyParams: !1 }, { displayUrl: "vivaldi://startpage", url: this.internals.startpage, copyParams: !1 }, { displayUrl: "vivaldi:startpage", url: this.internals.startpage, copyParams: !1 }, { displayUrl: "", url: this.internals.blankpage, copyParams: !1 }, { displayUrl: "vivaldi://mail", url: this.internals.mailpage, copyParams: !0 }, { displayUrl: "vivaldi://about", url: this.internals.aboutpage, copyParams: !0 }, { displayUrl: "vivaldi://help", url: this.internals.aboutpage, copyParams: !0 }, { displayUrl: "vivaldi://vivaldi-urls", url: this.internals.vivaldiurls, copyParams: !0 }, { displayUrl: "vivaldi://history", url: this.internals.history, copyParams: !0 }, { displayUrl: "vivaldi://extensions", url: this.internals.extensions, copyParams: !0 }, { displayUrl: "vivaldi://bookmarks", url: this.internals.bookmarks, copyParams: !0 }, { displayUrl: "vivaldi://welcome", url: this.internals.welcome, copyParams: !0 }, { displayUrl: "vivaldi://experiments", url: this.internals.experiments, copyParams: !0 }, { displayUrl: "vivaldi://actionlog", url: this.internals.actionlog, copyParams: !0 }, { displayUrl: "vivaldi:about", url: this.internals.aboutpage, copyParams: !1 }, { displayUrl: "about:about", url: this.internals.aboutpage, copyParams: !1 }, { displayUrl: "vivaldi://", url: "chrome://", copyParams: !0, mapDisplayUrlToUrl: function(t, n) { return "vivaldi://" === t ? e.internals.aboutpage : e._copyAllMapDisplayUrlToUrl(t, n) }, mapUrlToDisplayUrl: function(t, n) { return e._copyAllMapUrlToDisplayUrl(t, n) } }], this.categoryTitleMap = { "": r("Startup"), startup: r("Startup"), appearance: r("Appearance"), themes: r("Themes"), "start-page": r("title", "Start Page"), tabs: r("Tabs"), panel: r("Panel"), addressbar: r("Address Bar"), qc: r("Quick Commands"), keyboard: r("Keyboard"), mouse: r("Mouse"), search: r("noun", "Search"), privacy: r("Privacy"), sync: r("Sync"), webpages: r("Webpages"), network: r("Network"), downloads: r("Downloads"), history: r("History"), mail: r("Mail"), calendar: r("Calendar"), contacts: r("Contacts"), bookmarks: r("Bookmarks"), all: r("Display All") }, this.setInternalUrl = function(e, t) { var n = this; this.internals[e] = t, this._internal_values = Object.keys(this.internals).map(function(e) { return n.internals[e] }) }, this.setMapping = function(e, t, n) { this.mappings.push({ displayUrl: e, url: t, copyParams: !!n }) }, this.getDisplayUrl = function(e) { if (!e) return ""; for (var t = e.split("?"), n = 0; n < this.mappings.length; n++) { var i = this.mappings[n]; if (i.url && this.matchUrl(i.url, t[0])) { e = i.mapUrlToDisplayUrl ? i.mapUrlToDisplayUrl(e, i) : this._defaultMapUrlToDisplayUrl(e, i); break } } return e }, this.getDisplayTitle = function(e) { if (!e || !e.get) return ""; var t = e.get("title"), n = e.get("url"); return n && (n.startsWith("chrome://bookmarks/") ? t = r("Bookmarks") : this.isStartPage(n) ? t = r("title", "Start Page") : n === this.internals.experiments ? t = r("Experimental Features") : n === this.internals.actionlog ? t = r("Action Log") : n === this.internals.welcome ? t = r("Welcome") : n === this.internals.blankpage ? t = r("Blank Page") : n.startsWith(this.internals.settings) && (t = r("$1 Settings", [this.categoryTitleMap[this.getUrlParams(n).path || ""]])), t === n && (t = this.removeTrailingSlashWhenNoPath(this.getDisplayUrl(n)))), t }, this.removeTrailingSlashWhenNoPath = function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; return e = e.replace(/\s/g, ""), "" === e ? e : i.getSync("ADDRESS_BAR_SHOW_FULL_URL") ? e : e.replace(/^([a-z]+?:\/?\/?[^\/]*)\/*?(\/[\?#].*)?$/, "$1$2") }, this.getUrl = function(e) { e = e ? e.trim() : e; var t = e; e = e ? e.toLowerCase() : e; for (var n = 0; n < this.mappings.length; n++) { var i = this.mappings[n]; if (i.displayUrl.length > 0 && this.matchUrl(i.displayUrl, e)) { t = i.mapDisplayUrlToUrl ? i.mapDisplayUrlToUrl(e, i) : this._defaultMapDisplayUrlToUrl(e, i); break } } return t }, this.isMailPage = function(e) { return "string" == typeof e && 0 === e.indexOf(this.internals.mailpage) }, this.isStartPage = function(e) { return "string" == typeof e && 0 === e.indexOf(this.internals.startpage) }, this.isInternalUrl = function(e) { for (var t = 0; t < this._internal_values.length; t++) if (e && 0 === e.indexOf(this._internal_values[t])) return !0; return !1 }, this.isInExtension = function(e) { return e.substring(0, s.length) === s }, this.isInternalPage = function(e) { return e && this.isInternalUrl(e.get("url")) }, this.isNavigatablePage = function(e) { return !this.isInternalPage(e) || this.matchUrl(this.internals.settings, e.get("url")) }, this.isNavigatableUrl = function(e) { return !this.isInternalUrl(e) || this.matchUrl(this.internals.settings, e) }, this.isBookmarkablePage = function(e) { return !this.isInternalPage(e) }, this.matchInternal = function(e, t) { return this.matchUrl(this.internals[e], t) }, this.matchUrl = function(e, t) { return t && 0 === t.indexOf(e) }, this.equalUrl = function(e, t, n) { return n ? e && t && this._stripParams(e) === this._stripParams(t) : e && t && this._trimSlash(e) === this._trimSlash(t) }, this.getUrlParams = function(e) { var t = e ? e.split("?") : []; return t.length > 1 ? a.parse(t[1]) : {} }, this.internalUrl = function(e, t, n, i) { return this.internals[e] + "?path=" + this._trimSlash(t) + (n ? "&title=" + n : "") + (i ? "&query=" + i : "") }, this.internalKeyFromUrl = function(e) { for (var t in this.internals) if (this.matchInternal(t, e)) return t; return null }, this._stripParams = function(e) { return this._trimSlash(e).split("?")[0].split("#")[0] }, this._parseUrlPath = function(e) { return this._trimSlash(e).split("/").slice(2) }, this._trimSlash = function(e) { return e.replace(/^\/+|\/+$/gm, "") }, this._defaultMapUrlToDisplayUrl = function(e, t, n) { var i = e.split("?"), r = e; if (t.displayUrl) { var s = i.length > 1 ? a.parse(i[1]) : {}; r = t.displayUrl + (t.copyParams && s.path ? "/" + s.path + "/" : "/") } else r = ""; return r }, this._defaultMapDisplayUrlToUrl = function(e, t, n) { var i = t.copyParams && e.length > t.displayUrl.length ? "path=" + this._trimSlash(e.slice(t.displayUrl.length)) : ""; return t.url + (i || n ? "?" : "") + i + (i ? "&" : "") + (n ? n : "") }, this._copyAllMapUrlToDisplayUrl = function(e, t, n) { var i = t.copyParams && e.length > t.url.length ? this._trimSlash(e.slice(t.url.length)) : ""; return t.displayUrl + i }, this._copyAllMapDisplayUrlToUrl = function(e, t, n) { var i = t.copyParams && e.length > t.displayUrl.length ? this._trimSlash(e.slice(t.displayUrl.length)) : ""; return t.url + i } }; e.exports = { urls: new l, vivaldiUrls: o } }, , , , , function(e, t, n) { // ========================= // Function_25 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, r = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/InsertVivaldiSettings.jsx", s = n(1), o = n(9), l = n(3), c = function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], n = (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [], arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "vivaldiSettings"); return s.createClass({ mixins: [o], displayName: "VivaldiSettingsWrapper", getInitialState: function() { return { settings: {} } }, componentWillMount: function() { t.length && this.setState({ settings: l.getKeysSync(t) }) }, componentDidMount: function() { var e = this; t.forEach(function(t) { return l.addListener(t, e.settingsChangeHandler) }) }, componentWillUnmount: function() { var e = this; t.forEach(function(t) { return l.removeListener(t, e.settingsChangeHandler) }) }, settingsChangeHandler: function(e, t, n) { this.state.settings[n] !== t && this.setState({ settings: Object.assign({}, this.state.settings, i({}, n, t)) }) }, render: function() { var t = i({}, n, this.state.settings); return s.createElement(e, a({ ref: "component", key: "vs", vivaldiSettings: this.state.settings }, t, this.props, { __source: { fileName: r, lineNumber: 49 } })) } }) }; e.exports = c }, function(e, t, n) { // ========================= // Function_26 // ========================= "use strict"; var i, a, r, s, o, l = n(52), c = n(175), u = n(47), A = n(3), d = n(137), h = n(59), m = n(10), p = 10, f = "", g = "", _ = function(e, t) { var _ = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "pointer", v = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : null, b = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : null, N = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : null, E = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : null, S = 0, T = {}, y = function(e, t) { if (u.setStatus(""), m.showMenu.onOpen.removeListener(C), m.showMenu.onUrlHighlighted.removeListener(I), "function" == typeof T[t.id]) { var n = {}; t.left ? n.button = 0 : t.right ? n.button = 2 : t.center && (n.button = 1), t.ctrl && (n.ctrlKey = !0), t.alt && (n.altKey = !0), t.shift && (n.shiftKey = !0), t.command && (n.metaKey = !0), T[t.id].call(this, e, n) } "function" == typeof b && b.call(this, e) }, C = function() { "function" == typeof t && t.call(this, event) }, I = function(e) { u.setStatus(e) }, O = function e(t) { if (!t) return null; 0 === f.length && (f = btoa(n(406))), 0 === g.length && (g = btoa(n(405))); var i; t.items && t.bookmarkFolder === !0 ? i = f : t.url ? i = g : t.iconName && (i = l.getIconByName(t.iconName)); var a = t.visible !== !1; "function" == typeof t.testVisibility && (a = t.testVisibility()); var r = t.nameWithMnemonic ? t.nameWithMnemonic : t.name, s = S++; return (r || t.url) && (T[s] = t.handler), { id: s, name: r ? r : "", selected: !(!N || N !== t), visible: a, items: t.items ? t.items.map(e) : null, type: t.type ? t.type : "normal", checked: !!t.checked && t.checked, shortcut: d(t.shortcut), url: t.url, icon: i } }, w = function(e) { e && i !== !0 ? (document.addEventListener("mouseup", M), document.addEventListener("mousemove", k), document.addEventListener("wheel", D, !0), i = !0) : e || i !== !0 || (document.removeEventListener("mouseup", M), document.removeEventListener("mousemove", k), document.removeEventListener("wheel", D, !0), i = !1) }, D = function(e) { w(!1) }, k = function(e) { var t = Math.abs(s - e.screenX), n = Math.abs(o - e.screenY); (t > p || n > p) && w(!1) }, M = function(t) { var n = this; w(!1); var i = "function" == typeof e ? e() : e; i.hasMnemonics !== !0 && (c.installMnemonics(i, E), i.hasMnemonics = !0), m.zoom.getVivaldiUIZoom(function(e) { m.showMenu.onOpen.addListener(C), m.showMenu.onUrlHighlighted.addListener(I), m.showMenu.create({ mode: "context", left: parseInt(a * e), top: parseInt(r * e), items: i.map(O) }, y.bind(n, t)) }) }; return function(e, t) { e.preventDefault(), e.stopPropagation(), "function" == typeof e.persist && e.persist(); var n = 0, i = 0, l = "MacIntel" === navigator.platform ? 4 : 0, c = "win" === h() ? 1 : 0; if ("pointer" === _) n = e.clientX, i = e.clientY; else { var u = v ? v.getBoundingClientRect() : e.target.getBoundingClientRect(); "bottom" === _ ? (n = parseInt(u.left) + c, i = parseInt(u.bottom) + l) : "right" === _ && (n = parseInt(u.right), i = parseInt(u.top)) } a = n, r = i, s = e.screenX, o = e.screenY, "win" !== h() && "contextmenu" === e.type && A.getSync("MOUSE_GESTURES_ENABLED") ? w(!0) : M(e) } }; e.exports = _ }, , , , function(e, t, n) { // ========================= // Function_30 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } var r = n(2), s = i(r), o = "Ð", l = function() { var e = Array.from(arguments); e[0] = o + e[0]; var t = s.default.apply(void 0, a(e)); return t.startsWith(o) && (t = t.substr(1)), { label: s.default.apply(void 0, arguments), labelEnglish: t } }; e.exports = l }, , , , function(e, t, n) { // ========================= // Function_34 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/Modal.jsx", a = n(1), r = n(37), s = n(133), o = a.createClass({ displayName: "Modal", propTypes: { dialogWidth: a.PropTypes.number, viewMode: a.PropTypes.string, onRequestClose: a.PropTypes.func, ignoreEscape: a.PropTypes.bool }, componentDidMount: function() { r.bind("esc", this.closeModalHandler) }, componentWillUnmount: function() { r.unbind("esc", this.closeModalHandler) }, closeModalHandler: function() { this.props.onRequestClose && !this.props.ignoreEscape && this.props.onRequestClose() }, killClick: function(e) { e.stopPropagation() }, handleBackdropClick: function() { this.props.onRequestClose && this.props.onRequestClose() }, render: function() { return a.createElement(s, { focusName: "focus_modal", id: "modal-bg", className: this.props.viewMode ? this.props.viewMode : "slide", onClick: this.handleBackdropClick, __source: { fileName: i, lineNumber: 47 } }, a.createElement("div", { onClick: this.killClick, style: { width: this.props.dialogWidth }, __source: { fileName: i, lineNumber: 52 } }, this.props.children)) } }); e.exports = o }, , , function(e, t, n) { // ========================= // Function_37 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e) { function t(e) { n.indexOf(e) > -1 && (i += e + "+", n.splice(n.indexOf(e), 1)) } var n = e.split("+"); n = n.map(function(e) { return S[e] || e }); var i = ""; return t("ctrl"), t("alt"), t("shift"), t("meta"), n.sort(), n.forEach(function(e, t) { i += e, t + 1 < n.length && (i += "+") }), i.toLowerCase() } function r(e, t) { if (t && e) { var n = a(e), i = y[n] || []; i.push(t), y[n] = i } } function s(e, t) { if (e) { var n = a(e); y[n] && (t ? y[n] = y[n].filter(function(e) { return e !== t }) : y[n] = void 0) } } function o(e) { var t = ""; return e.metaKey && (t += "meta+"), e.altKey && (t += "alt+"), e.ctrlKey && (t += "ctrl+"), e.shiftKey && (t += "shift+"), t } function l(e) { function t() { return ["Alt", "Shift", "Control", "Meta", "CapsLock", "NumLock", "AltGraph"].indexOf(e.key) > -1 } function n(e) { if (e.code.startsWith("Numpad")) { var t = b.default[e.keyCode].substr(6); if (t >= "0" && t <= "9") return e.code } return b.default[e.keyCode] } function i() { var t = n(e); return "None" === t ? void(r = "") : (r += t, a(r.toLowerCase())) } var r = o(e); if (!t() && "keydown" === e.type) return i() } function c(e, t) { t(e), e.preventDefault(), e.stopPropagation() } function u(e) { return 1 === e.length || e.startsWith("numpad") } function A(e, t) { if (0 !== e.charCode) return !1; if (T.indexOf(t) !== -1) return !1; if ("Escape" === e.key || "ArrowDown" === e.key || "ArrowUp" === e.key || "Home" === e.key || "End" === e.key || "PageDown" === e.key || "PageUp" === e.key) return !0; if (N.indexOf(e.key) > -1) return !0; if ((0, _.default)(e)) { if ("Backspace" === e.key || "Delete" === e.key) return !0; if (e.ctrlKey || e.metaKey || e.altKey) return !0 } return !1 } function d(e, t, i) { if ((!e.defaultPrevented || e.scrollPrevented) && !(e.target.classList.contains("keyShortcutStop") || u(i) && f.default.getSync("DISABLE_SINGLE_KEY_SHORTCUTS"))) { if (f.default.getSync("DISABLE_KEYBOARD_SHORTCUTS")) { var a = n(52).getAllCommands(), r = a.find(function(e) { return "COMMAND_PAGE_DISABLE_KEYBOARD_SHORTCUTS" === e.name }); if (!(r.shortcut || []).some(function(t) { return t === l(e) })) return } C.indexOf(e.target.tagName) > -1 || e.target.isContentEditable ? A(e, i) && c(e, t) : "WEBVIEW" === e.target.tagName ? e.target.getFocusedElementInfo(function(n, a, r, s) { if (!r || A(e, i)) { var o = "EMBED" === n, l = "OBJECT" === n, u = "SELECT" === n, d = "SPAN" === n && "spinbutton" === s, h = (o || l) && "application/x-shockwave-flash" === a, m = o && "application/pdf" === a; (!h && !m && !u && !d || h && E.indexOf(i) > -1 || m && A(e, i)) && c(e, t) } }) : c(e, t) } } function h(e) { var t = y[e]; return t && t.length ? t[t.length - 1] : void 0; } function m(e) { "PageUp" !== e.code && "PageDown" !== e.code || e.ctrlKey !== !0 || (e.preventDefault(), e.scrollPrevented = !0); var t = l(e); if (t) { var n = h(t); n && d(e, n, t) } } var p = n(3), f = i(p), g = n(88), _ = i(g), v = n(397), b = i(v), N = ["F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19"], E = navigator.platform.indexOf("Mac") > -1 ? ["meta+t", "meta+n", "meta+w"] : ["ctrl+t", "ctrl+n", "ctrl+w"], S = { option: "alt", command: "meta", return: "enter", escape: "esc", del: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "backspace" : "del", mod: /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? "meta" : "ctrl" }, T = ["left", "right", "shift+left", "shift+right", "shift+up", "shift+down", "enter", "shift+enter"]; T = navigator.platform.indexOf("Mac") > -1 ? T.concat(["alt+left", "alt+right", "alt+backspace", "meta+a", "meta+z", "meta+left", "meta+right", "shift+meta+left", "shift+meta+right", "ctrl+a", "ctrl+b", "ctrl+e", "ctrl+f", "ctrl+n", "ctrl+p", "ctrl+d", "ctrl+h", "ctrl+k", "ctrl+o", "ctrl+t", "ctrl+v", "ctrl+y", "alt+shift+left", "alt+shift+right", "ctrl+shift+a", "ctrl+shift+b", "ctrl+shift+e", "ctrl+shift+f", "ctrl+shift+n", "ctrl+shift+p"]) : T.concat(["home", "end", "ctrl+a", "ctrl+z", "ctrl+y", "ctrl+u", "ctrl+left", "ctrl+right", "ctrl+backspace", "ctrl+delete", "ctrl+home", "ctrl+end", "ctrl+shift+left", "ctrl+shift+right", "shift+home", "shift+end"]); var y = {}, C = ["INPUT", "FRAME", "IFRAME", "SELECT", "TEXTAREA"], I = { bind: function(e, t) { return [].concat(e).filter(Boolean).map(function(e) { return e.trim() }).forEach(function(e) { return r(e, t) }), this }, unbind: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0; return [].concat(e).forEach(function(e) { return s(e, t) }), this }, attachEvents: function() { document.addEventListener("keydown", m), document.addEventListener("keypress", m) }, detachEvents: function() { document.removeEventListener("keydown", m), document.removeEventListener("keypress", m) }, keyComboFromEvent: l, shortcutAllowedInText: A, isSingleKeyShortcut: u }; e.exports = I }, , , function(e, t, n) { // ========================= // Function_40 // ========================= "use strict"; var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, a = n(4), r = n(179), s = n(50), o = n(15), l = n(3), c = n(46), u = c.isValidURL, A = n(20), d = A.urls, h = "vivaldi/x-bookmarks", m = { open: function(e, t) { var n = this; t && l.getSync("BOOKMARKS_CONFIRM_BEFORE_OPEN") && e.bookmarks.length >= l.getSync("BOOKMARKS_CONFIRM_THRESHOLD") ? s.showConfirmOpenBookmarkDialog(e) : ! function() { var t = e.inCurrent === !1, i = e.inNewWindow === !0, a = e.inBackground === !0, r = e.incognito === !0; t === !1 && i === !1 && a === !1 && e.allowOverride === !0 && (l.getSync("BOOKMARKS_OPEN_IN_NEW_TAB") === !0 && (t = !0), 1 === e.bookmarks.length && e.bookmarks[0].url.startsWith("javascript:") && (t = !1)), i === !0 ? o.openWindow(e.bookmarks.map(function(e) { return e.url }), { incognito: r, focused: !a }) : ! function() { var i = e.bookmarks.length > 0 ? e.bookmarks[e.bookmarks.length - 1] : void 0; e.bookmarks.forEach(function(e) { t === !0 ? a === !0 ? n.openInNewTab(e, !0) : n.openInNewTab(e, e !== i) : (n.openInCurrentTab(e), t = !0) }) }() }() }, openInNewTab: function(e, t) { o.openURL(e.url, { bookmarkId: e.id, inCurrent: !1, inBackground: t }) }, openInCurrentTab: function(e) { o.openURL(e.url, { bookmarkId: e.id, inCurrent: !0 }) }, openInNewWindow: function(e, t, n) { o.openURL(e.url, { bookmarkId: e.id, inNewWindow: !0, inBackground: t, incognito: n }) }, getBookmarksByNode: function(e) { var t = []; return e.children ? t = t.concat(e.children.filter(function(e) { return e.url })) : e.url && t.push(e), t }, getBookmark: function(e, t) { "function" == typeof t && a.bookmarks.get(e, function(e) { t(e[0]) }) }, getOpenOptionsFromEvent: function(e) { var t = { ctrl: !!e.ctrlKey, alt: !!e.altKey, shift: !!e.shiftKey, command: !("MacIntel" !== navigator.platform || !e.metaKey) }, n = "MacIntel" === navigator.platform ? t.command : t.ctrl, i = !t.shift && !n && !t.alt, a = { inCurrent: !0, inBackground: !1, inNewWindow: !1 }; return t.shift && n && t.alt ? (a.inNewWindow = !0, a.incognito = !0) : t.shift && n && !t.alt ? a.inNewWindow = !0 : !t.shift || n || t.alt ? t.shift || !n || t.alt ? i && 1 === e.button ? (a.inCurrent = !1, a.inBackground = !0) : i && 2 === e.button ? a.inCurrent = !1 : i && (a.allowOverride = !0) : (a.inCurrent = !1, a.inBackground = !0) : a.inCurrent = !1, a }, isCopyModifierPressed: function(e) { return "MacIntel" === navigator.platform ? e.metaKey : e.ctrlKey }, extractTitleFromEvent: function(e) { var t = e.nativeEvent.dataTransfer.getData("vivaldi/x-title"); if ("" === t) { var n = e.nativeEvent.dataTransfer.getData("text/html"); if ("" !== n) { var i = document.createElement("div"); i.innerHTML = n; var a = i.getElementsByTagName("a"); if (a && a[0]) { var r = a[0].textContent; "" !== r && (t = r) } } } return t }, getUrlsFromEventPromise: function(e, t) { return new Promise(function(n, s) { var o = e.dataTransfer.getData("vivaldi/x-tab-entries"), l = e.dataTransfer.getData("text/uri-list"); if (o) ! function() { var e = JSON.parse(o), t = e.ids.map(function(e) { return parseInt(e) }).sort(function(e, t) { return e - t }); a.tabs.query({}, function(e) { return n(e.filter(function(e) { return t.some(function(t) { return e.id === t }) }).filter(function(e) { var t = e.url; return !d.isInternalUrl(t) }).map(function(e, t) { var n = e.title, i = e.url; return { title: n || r(i), url: i } })) }) }(); else if (l.length > 0) { var c = function() { var t = m.extractTitleFromEvent(e); return { v: n(l.split("\n").map(function(e, n) { return { url: e, title: 0 === n && "" !== t ? t : r(e) } })) } }(); if ("object" === ("undefined" == typeof c ? "undefined" : i(c))) return c.v } else if (t === !0) { var A = e.dataTransfer.getData("text/plain"); if (A.length > 0 && u(A)) return n([{ url: A, title: r(A) }]) } else s() }) }, getMimeType: function() { return h } }; e.exports = m }, function(e, t, n) { // ========================= // Function_41 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/RadioGroup.jsx", r = n(1), s = n(11), o = r.createClass({ displayName: "RadioGroup", propTypes: { name: r.PropTypes.string.isRequired, onChange: r.PropTypes.func.isRequired, value: r.PropTypes.oneOfType([r.PropTypes.string, r.PropTypes.number, r.PropTypes.bool]), defaultValue: r.PropTypes.oneOfType([r.PropTypes.string, r.PropTypes.number, r.PropTypes.bool]), children: r.PropTypes.array.isRequired }, getInitialState: function() { return { defaultValue: this.props.defaultValue } }, componentDidMount: function() { this.setRadioNames(), this.setCheckedRadio() }, componentDidUpdate: function() { this.setRadioNames(), this.setCheckedRadio() }, setRadioNames: function() { for (var e = this.getRadios(), t = 0, n = e.length; t < n; t++) e[t].setAttribute("name", this.props.name) }, getRadios: function() { return s.findDOMNode(this).querySelectorAll('input[type="radio"]') }, setCheckedRadio: function() { for (var e = this.getRadios(), t = null !== this.props.value ? this.props.value : this.state.defaultValue, n = 0, i = e.length; n < i; n++) { var a = e[n]; a.value !== t && a.value !== t.toString() || (a.checked = !0) } }, getCheckedValue: function() { for (var e = this.getRadios(), t = 0, n = e.length; t < n; t++) if (e[t].checked) return e[t].value; return null }, render: function() { return r.createElement("div", i({}, this.props, { onChange: this.props.onChange, __source: { fileName: a, lineNumber: 84 } }), this.props.children) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_42 // ========================= "use strict"; var i = n(2); e.exports = { ALL_MESSAGES_ACCOUNT_ID: "All Messages", MAILING_LISTS_ACCOUNT_ID: "Mailing Lists", MAIL_FILTERS_ACCOUNT_ID: "Filters", DRAFTS_FOLDER_PATH: "Drafts", OUTBOX_FOLDER_PATH: "Outbox", UNREAD_FOLDER_PATH: "Unread", RECEIVED_FOLDER_PATH: "Received", MAILING_LISTS_OTHER_FOLDER: i("Other Mailing Lists"), TRASH_FOLDER_PATH: "Trash", TRASH_FOLDER_TYPE: "Trash", SENT_FOLDER_PATH: "Sent", SENT_FOLDER_TYPE: "Sent", INBOX_FOLDER_TYPE: "Inbox", ALL_MESSAGES_ID: "ALL_MESSAGES", MAILING_LISTS_ID: "MAILING_LISTS", MAIL_FOLDERS_ID: "MAIL_FOLDER", MAIL_FILTERS_ID: "MAIL_FILTERS", MAIL_STATUS_TIMEOUT: 5e3, FLUSH_FLAG_OPERATIONS_TIMEOUT: 500, BUFFER_OPERATION_MARKUNREAD: "MarkUnRead", BUFFER_OPERATION_MARKFLAGGED: "MarkFlagged", BUFFER_OPERATION_MARKFORWARDED: "MarkForwarded", BUFFER_OPERATION_MARKREPLIED: "MarkReplied", BUFFER_OPERATION_MOVE: "Move", BUFFER_OPERATION_DELETE: "Delete", THREAD_KEY_LENGTH: 13, INDICATOR_TYPE_BUSY: "INDICATOR_TYPE_BUSY", INDICATOR_TYPE_THREADING: "INDICATOR_TYPE_THREADING", INDICATOR_TYPE_FLUSHING: "INDICATOR_TYPE_FLUSHING", INDICATOR_TYPE_CONNECTING: "INDICATOR_TYPE_CONNECTING", INDICATOR_TYPE_FETCHING: "INDICATOR_TYPE_FETCHING", MAIL_DEFAULT_SIGNATURE: i("Sent with the new, awesome Vivaldi mail client / browser. Download it at vivaldi.com.") } }, , , function(e, t) { // ========================= // Function_45 // ========================= "use strict"; var n = { KEY_CANCEL: 3, KEY_HELP: 6, KEY_BACK_SPACE: 8, KEY_TAB: 9, KEY_CLEAR: 12, KEY_RETURN: 13, KEY_ENTER: 14, KEY_SHIFT: 16, KEY_CONTROL: 17, KEY_ALT: 18, KEY_PAUSE: 19, KEY_CAPS_LOCK: 20, KEY_ESCAPE: 27, KEY_SPACE: 32, KEY_PAGE_UP: 33, KEY_PAGE_DOWN: 34, KEY_END: 35, KEY_HOME: 36, KEY_LEFT: 37, KEY_UP: 38, KEY_RIGHT: 39, KEY_DOWN: 40, KEY_PRINTSCREEN: 44, KEY_INSERT: 45, KEY_DELETE: 46, KEY_0: 48, KEY_1: 49, KEY_2: 50, KEY_3: 51, KEY_4: 52, KEY_5: 53, KEY_6: 54, KEY_7: 55, KEY_8: 56, KEY_9: 57, KEY_SEMICOLON: 59, KEY_EQUALS: 61, KEY_A: 65, KEY_B: 66, KEY_C: 67, KEY_D: 68, KEY_E: 69, KEY_F: 70, KEY_G: 71, KEY_H: 72, KEY_I: 73, KEY_J: 74, KEY_K: 75, KEY_L: 76, KEY_M: 77, KEY_N: 78, KEY_O: 79, KEY_P: 80, KEY_Q: 81, KEY_R: 82, KEY_S: 83, KEY_T: 84, KEY_U: 85, KEY_V: 86, KEY_W: 87, KEY_X: 88, KEY_Y: 89, KEY_Z: 90, KEY_CONTEXT_MENU: 93, KEY_NUMPAD0: 96, KEY_NUMPAD1: 97, KEY_NUMPAD2: 98, KEY_NUMPAD3: 99, KEY_NUMPAD4: 100, KEY_NUMPAD5: 101, KEY_NUMPAD6: 102, KEY_NUMPAD7: 103, KEY_NUMPAD8: 104, KEY_NUMPAD9: 105, KEY_MULTIPLY: 106, KEY_ADD: 107, KEY_SEPARATOR: 108, KEY_SUBTRACT: 109, KEY_DECIMAL: 110, KEY_DIVIDE: 111, KEY_F1: 112, KEY_F2: 113, KEY_F3: 114, KEY_F4: 115, KEY_F5: 116, KEY_F6: 117, KEY_F7: 118, KEY_F8: 119, KEY_F9: 120, KEY_F10: 121, KEY_F11: 122, KEY_F12: 123, KEY_F13: 124, KEY_F14: 125, KEY_F15: 126, KEY_F16: 127, KEY_F17: 128, KEY_F18: 129, KEY_F19: 130, KEY_F20: 131, KEY_F21: 132, KEY_F22: 133, KEY_F23: 134, KEY_F24: 135, KEY_NUM_LOCK: 144, KEY_SCROLL_LOCK: 145, KEY_COMMA: 188, KEY_PERIOD: 190, KEY_SLASH: 191, KEY_BACK_QUOTE: 192, KEY_OPEN_BRACKET: 219, KEY_BACK_SLASH: 220, KEY_CLOSE_BRACKET: 221, KEY_QUOTE: 222, KEY_META: 224 }; e.exports = n }, function(e, t, n) { // ========================= // Function_46 // ========================= "use strict"; function i(e) { return e.replace(/.*?:\/\//g, "") } var a = n(36), r = ["vivaldi:", "chrome:", "chrome-extension:"], s = function(e) { var t = a.parse(e); return null !== t.protocol && null !== t.slashes || (t = a.parse("http://" + e)), t.format(t) }, o = function(e) { var t = a.parse(e); return !!(t.protocol && t.host && t.slashes) }, l = function(e) { return "string" != typeof e || (e = e.toLowerCase(), !(0 === e.indexOf("http://") || 0 === e.indexOf("https://") || 0 === e.indexOf("chrome://") || 0 === e.indexOf("vivaldi:") || 0 === e.indexOf("javascript:") || 0 === e.indexOf("data:") || 0 === e.indexOf("chrome-extension://") || 0 === e.indexOf("about:") || 0 === e.indexOf("file://") || 0 === e.indexOf("ftp://") || 0 === e.indexOf("view-source:"))) }, c = function(e) { var t = a.parse(e); return r.some(function(e) { return e.indexOf(t.protocol) !== -1 }) }, u = function(e) { if (e.indexOf("https://chrome.google.com/webstore") !== -1 || e.indexOf("https://vivaldi.net/?welcome=1") !== -1) return !0 }, A = function(e) { var t = "chrome-extension://mpognobbkildjkofajifpdfhcoklimli/"; return e.substr(0, t.length) === t ? e = "http://" + e.substr(t.length, e.length) : e.match(/^[a-zA-Z]+:\/\//) || (e = "http://" + e), e }, d = function(e) { return "string" == typeof e && e.length > 0 && (!!(e.indexOf(" ") < 0 && e.indexOf(".") > 0 || e.match(/^localhost/)) && !(e.length - e.lastIndexOf(".") - 1 <= 1)) }; t.ensureURLProtocol = s, t.isValidURL = o, t.hasUnknownProtocol = l, t.isInternalURL = c, t.isIgnoredURL = u, t.fixLink = A, t.isUrlNavigable = d, t.removeProtocol = i }, function(e, t, n) { // ========================= // Function_47 // ========================= "use strict"; var i = n(4), a = n(8), r = n(6), s = 200, o = void 0, l = { setStatus: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; window.clearTimeout(o), e ? (a.handleViewAction({ actionType: r.STATUS_SET_STATUS, status: e }), t && (o = setTimeout(l.clearStatus, t))) : o = setTimeout(l.clearStatus, s) }, clearStatus: function() { a.handleViewAction({ actionType: r.STATUS_CLEAR_STATUS }) } }; i.runtime.onMessage.addListener(function(e, t) { "setStatus" === e.action && i.runtime.id === t.id && l.setStatus(e.status) }), e.exports = l }, , function(e, t, n) { // ========================= // Function_49 // ========================= "use strict"; var i = n(763), a = n(110), r = n(237), s = n(616), o = n(246), l = n(15), c = n(8), u = n(42), A = u.MAILING_LISTS_ACCOUNT_ID, d = u.MAILING_LISTS_OTHER_FOLDER, h = n(6), m = n(2), p = n(20).urls, f = n(7), g = f.debounce, _ = { addMessages: function(e, t, n) { c.handleViewAction({ actionType: h.MAIL_ADD_MESSAGES, accountId: e, path: t, messages: n }) }, removeMessages: function(e, t, n) { c.handleViewAction({ actionType: h.MAIL_REMOVE_MESSAGES, accountId: e, path: t, uids: n }) }, updateMessages: function(e, t, n) { c.handleViewAction({ actionType: h.MAIL_UPDATE_MESSAGES, accountId: e, path: t, updates: n }) }, setActiveMailDetail: function(e) { c.handleViewAction({ actionType: h.MAIL_SET_ACTIVE_MESSAGE, mailDetail: e }) }, clearIfActive: function(e) { c.handleViewAction({ actionType: h.MAIL_CLEAR_IF_ACTIVE, mailDetail: e }) }, setActiveMailComposer: function(e) { c.handleViewAction({ actionType: h.MAIL_SET_ACTIVE_COMPOSER, mailComposer: e }) }, clearActiveMailComposer: function(e) { c.handleViewAction({ actionType: h.MAIL_CLEAR_ACTIVE_COMPOSER, mailComposer: e }) }, reply: function() { i.getActiveMessage() && l.openURL(p.internalUrl("mailpage", "composer/reply", m("Mail - Reply"))) }, replyAll: function() { i.getActiveMessage() && l.openURL(p.internalUrl("mailpage", "composer/reply-all", m("Mail - Reply All"))) }, forward: function() { i.getActiveMessage() && l.openURL(p.internalUrl("mailpage", "composer/forward", m("Mail - Forward"))) }, markSeenDebounced: g(function(e) { c.handleViewAction({ actionType: h.MAIL_MARK_SEEN, sle: e }) }, 1e3), addFolders: function(e) { c.handleViewAction({ actionType: h.MAIL_ADD_FOLDERS, folders: e }) }, selectFolder: function(e) { c.handleViewAction({ actionType: h.MAIL_SELECT_FOLDER, folder: e }) }, replaceFolders: function(e) { c.handleViewAction({ actionType: h.MAIL_REPLACE_FOLDERS, folders: e }) }, setSearchOptions: function(e) { c.handleViewAction({ actionType: h.MAIL_SEARCH_SET_OPTIONS, options: e }) }, addFilter: function(e) { return s.add(e).then(v) }, bulkAddFilter: function(e) { return s.bulkAdd(e).then(v) }, removeFilter: function(e, t) { return s.remove(e, t).then(v) }, toggleHideMailingList: function(e, t) { var n = o.get(e, t); if (n) return n.hasOwnProperty("hidden") ? n.hidden = !n.hidden : n.hidden = !0, _.addFilter(n) }, toggleMoveToOther: function(e, t) { var n = o.get(e, t); if (n) return n.path.startsWith(d) ? n.path = n.path.substr(d.length + 1) : n.path = d + "/" + n.path, s.remove(e, t).then(function() { return _.addFilter(n) }) }, toggleSenderAsMailingList: function(e) { var t = o.get(A, e); if (t) return _.removeFilter(A, e); var n = { accountId: A, path: e, filterValue: { name: e, from: e } }; return _.addFilter(n) }, regenerateMailingLists: function() { c.handleViewAction({ actionType: h.MAIL_REGENERATE_MAILING_LISTS }) }, removeByAccountId: function(e) { var t = o.getByAccountId(e), n = []; return t.forEach(function(e) { n.push([e.accountId, e.path]) }), s.bulkRemove(n).then(v) }, initializeMailFiltersStore: function() { s.getAll().then(function(e) { c.handleViewAction({ actionType: h.MAIL_FILTERS_INIT, filters: e }) }) }, initializeSearchListStore: function() { c.handleViewAction({ actionType: h.MAIL_MESSAGES_INIT }) }, connectIMAPAccounts: function() { c.handleViewAction({ actionType: h.MAIL_CONNECT_IMAP_CLIENTS }) }, disconnectIMAPAccounts: function() { c.handleViewAction({ actionType: h.MAIL_DISCONNECT_IMAP_CLIENTS }) }, checkNewDeletedModified: function(e, t) { c.handleViewAction({ actionType: h.MAIL_CHECK_NEW_DELETED_MODIFIED, accountId: e, path: t }) }, rescanUnreadFlags: function(e, t) { c.handleViewAction({ actionType: h.MAIL_RESCAN_UNREAD_FLAGS, accountId: e, path: t }) }, addAccountIndicator: function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0; c.handleViewAction({ actionType: h.MAIL_INDICATOR_ADD, accountId: e, indicator: t, current: n, total: i }) }, addPathIndicator: function(e, t, n) { var i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0; c.handleViewAction({ actionType: h.MAIL_INDICATOR_ADD, accountId: e, path: t, indicator: n, current: i, total: a }) }, removeAccountIndicator: function(e, t) { c.handleViewAction({ actionType: h.MAIL_INDICATOR_REMOVE, accountId: e, indicator: t }) }, removePathIndicator: function(e, t, n) { c.handleViewAction({ actionType: h.MAIL_INDICATOR_REMOVE, accountId: e, path: t, indicator: n }) }, removeAllIndicators: function(e) { c.handleViewAction({ actionType: h.MAIL_INDICATOR_REMOVE_ALL, accountId: e }) }, initializeContactStore: function() { c.handleViewAction({ actionType: h.CONTACT_INITIALIZE }) }, saveContact: function(e) { c.handleViewAction({ actionType: h.CONTACT_SAVE_CONTACT, contact: e }) }, addContacts: function(e) { c.handleViewAction({ actionType: h.CONTACT_ADD_CONTACTS, contacts: e }) }, selectContact: function(e) { c.handleViewAction({ actionType: h.CONTACT_SELECT_CONTACT, contact: e }) }, deleteContact: function(e) { c.handleViewAction({ actionType: h.CONTACT_DELETE_CONTACT, contact: e }) }, deleteContactsByIds: function(e) { return Promise.all(e.map(function(e) { return new Promise(function(t) { r.remove(e).then(function() { t() }) }) })).then(function() { _.initializeContactStore() }) }, newEmptyContact: function() { var e = new a; return Promise.all([e].map(function(e) { return new Promise(function(t) { r.put(e).then(function() { t(e) }) }) })).then(function(e) { return _.initializeContactStore(), e[0].clearGenerated(), e }) }, checkForMail: function() { c.handleViewAction({ actionType: h.MAIL_CHECK_FOR_MAIL }) }, checkAccountForMail: function(e) { c.handleViewAction({ actionType: h.MAIL_CHECK_FOR_MAIL, accountId: e }) }, setCheckInterval: function(e, t) { c.handleViewAction({ actionType: h.MAIL_SET_CHECK_INTERVAL, active: e, minutes: t }) }, deleteDraftMessage: function() { c.handleViewAction({ actionType: h.MAIL_DELETE_DRAFT }) }, queueMessage: function() { c.handleViewAction({ actionType: h.MAIL_QUEUE_MESSAGE }) }, sendMessage: function() { c.handleViewAction({ actionType: h.MAIL_SEND_MESSAGE }) }, storeDraftMessage: function() { c.handleViewAction({ actionType: h.MAIL_STORE_DRAFT }) }, addAttachment: function() { c.handleViewAction({ actionType: h.MAIL_ADD_ATTACHMENT }) } }, v = function() { return s.getAll().then(function(e) { c.handleViewAction({ actionType: h.MAIL_FILTERS_CHANGED, filters: e }) }).catch(function(e) { console.error("Error dispatching filters changed, ", e) }) }; e.exports = _ }, function(e, t, n) { // ========================= // Function_50 // ========================= "use strict"; var i = n(176), a = n(8), r = n(6), s = n(3), o = n(15), l = n(20).urls, c = n(2), u = n(177), A = u.showNotification, d = n(4), h = n(10), m = { exitBrowser: function() { h.runtimePrivate.exit() }, closeWindow: function() { d.app.window.current().close() }, showQuickCommand: function(e, t) { a.handleViewAction({ actionType: r.MAIN_SHOW_QUICKCOMMANDS }) }, showKeyboardShortcuts: function(e, t) { a.handleViewAction({ actionType: r.MAIN_SHOW_KEYBOARDS_SHORTCUTS }) }, showConfirmOpenBookmarkDialog: function(e) { a.handleViewAction({ actionType: r.MAIN_SHOW_CONFIRM_OPEN_BOOKMARKS_DIALOG, options: e }) }, showClearBrowsingHistoryDialog: function(e) { a.handleViewAction({ actionType: r.MAIN_SHOW_CLEAR_BROWSING_DATA_DIALOG, options: e }) }, showImportData: function() { a.handleViewAction({ actionType: r.MAIN_SHOW_IMPORT_DATA }) }, showExportData: function() { d.bookmarks.export() }, showSaveSession: function() { a.handleViewAction({ actionType: r.MAIN_SHOW_SAVE_SESSION }) }, showOpenSession: function() { a.handleViewAction({ actionType: r.MAIN_SHOW_OPEN_SESSION }) }, showPageInfo: function(e, t) { a.handleViewAction({ actionType: r.MAIN_SHOW_PAGE_INFO, page: e, event: t }) }, fullScreen: function() { a.handleViewAction({ actionType: r.MAIN_FULLSCREEN }) }, toggleMenuPosition: function() { s.get("VIVALDI_MENU_POSITION", function(e) { e = "vivaldi" === e ? "top" : "vivaldi", s.set({ VIVALDI_MENU_POSITION: e }) }.bind(this)) }, toggleFooter: function() { s.get("SHOW_VIVALDI_FOOTER", function(e) { var t; t = "on" === e ? "off" : "on", s.set({ SHOW_VIVALDI_FOOTER: t }) }.bind(this)) }, toggleInterfaceColor: function() { s.get(["THEMES_SYSTEM", "THEMES_USER", "THEME_CURRENT"], function(e) { for (var t = e.THEMES_SYSTEM.concat(e.THEMES_USER), n = 0; n < t.length; n++) { var i = t[n]; if (i.name === e.THEME_CURRENT) { var a = t[n + 1] ? t[n + 1] : t[0]; a && .1 === a.version && s.set({ THEME_CURRENT: a.name, BROWSER_COLOR_BG: a.colors.baseBg, BROWSER_COLOR_FG: a.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: a.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: a.colors.accentBg, TABCOLOR_BEHIND_TABS: a.settings.accentOnWindow, USE_TABCOLOR: a.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: a.settings.tabsTransparent, BORDER_RADIUS: a.settings.borderRadius }) } } }.bind(this)) }, showPlugins: function() { o.openURL("vivaldi://plugins", { singleton: !0 }) }, showExtensions: function() { o.openURL("vivaldi://extensions", { singleton: !0 }) }, showHistory: function() { o.openURL("vivaldi://history", { singleton: !0 }) }, showBookmarks: function() { o.openURL("vivaldi://bookmarks", { singleton: !0 }) }, showWelcome: function() { o.openURL("vivaldi://welcome") }, showClearPrivateData: function() { m.showClearBrowsingHistoryDialog({}) }, showSettings: function() { s.get("USE_SETTINGS_WINDOW_AS_TAB", function(e) { e ? o.openURL("vivaldi://settings/startup/", { singleton: !0 }) : d.runtime.sendMessage({ getLastSettingsWindowId: -1 }, function(e) { m.MaybeShowSettingsInWindow(e.settingsWindowId) }) }) }, MaybeShowSettingsInWindow: function(e) { d.windows.getAll(function(t) { for (var n = !0, i = 0; i < t.length; i++) if (t[i].id === e) { n = !1; break } if (n) { var a = 740, r = 615, s = Number.parseInt(window.screen.availWidth / 2 - a / 2, 10), c = Number.parseInt(window.screen.availHeight / 2 - r / 2, 10); o.openWindow(l.internals.settings, { width: a, height: r, left: s, top: c, focused: !0, incognito: !1 }, function(e) { d.runtime.sendMessage({ setLastSettingsWindowId: e.id }) }, "popup") } else d.windows.update(e, { focused: !0 }) }) }, showTaskManager: function() { h.importData.openTaskManager(function(e) {}) }, showDevTools: function() { h.importData.showDevTools(function(e) {}) }, toggleBookmarksBar: function() { s.get("BOOKMARK_BAR_VISIBLE", function(e) { s.set({ BOOKMARK_BAR_VISIBLE: !e }) }.bind(this)) }, checkForUpdates: function() { d.autoUpdate.checkForUpdates(!0) }, zoomIn: function() { a.handleViewAction({ actionType: r.MAIN_ZOOM_IN }) }, zoomOut: function() { a.handleViewAction({ actionType: r.MAIN_ZOOM_OUT }) }, zoomHalf: function() { a.handleViewAction({ actionType: r.MAIN_ZOOM_HALF }) }, zoomDouble: function() { a.handleViewAction({ actionType: r.MAIN_ZOOM_DOUBLE }) }, zoomReset: function() { a.handleViewAction({ actionType: r.MAIN_ZOOM_RESET }) }, toggleTabBar: function() { a.handleViewAction({ actionType: r.MAIN_TOGGLE_TAB_BAR }) }, toggleAddressBar: function() { a.handleViewAction({ actionType: r.MAIN_TOGGLE_ADDRESS_BAR }) }, toggleUI: function() { a.handleViewAction({ actionType: r.MAIN_TOGGLE_UI }) }, disableKeyboardShortcuts: function() { var e = s.getSync("DISABLE_KEYBOARD_SHORTCUTS"); s.set({ DISABLE_KEYBOARD_SHORTCUTS: !e }) }, captureArea: function(e) { i.captureArea("png", e, !1, function(t) { "clipboard" !== e || t || A({ title: c("Area Captured"), body: c("Image stored in the clipboard.") }) }) } }; e.exports = m }, function(e, t, n) { // ========================= // Function_51 // ========================= "use strict"; function i(e) { v = function e(t, n) { return t.speeddial && !t.url && n.push(t), t.children && !t.trash && t.children.forEach(function(t) { e(t, n) }), n }(e, []) } function a(e) { f = N.validateAsBookmarkBarFolder(e), g = f ? f.children.filter(function(e) { return !e.trash }) : [] } function r() { function e(t) { var n; return t.trash ? t : (t.children && t.children.forEach(function(t) { n = e(t) }), n) } for (var t = void 0, n = p.length - 1; n >= 0 && void 0 === t; n--) t = e(p[n]); return t } function s(e, t) { p = e; var n = p[0]; _ = r(), n.children[0].children.push(_), i(n), a(t) } var o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, l = n(18).EventEmitter, c = n(8), u = n(6), A = n(46).isInternalURL, d = n(3), h = "change", m = { children: [] }, p = [], f = void 0, g = [], _ = {}, v = [], b = [], N = Object.assign({}, l.prototype, { getRootNode: function() { return p.length > 0 && p[0].children ? p[0].children[0] : m }, getTopNodes: function() { return p && p.length > 0 && p[0] && p[0].children[0] && p[0].children[0].children ? p[0].children[0].children : [] }, getLastTopNode: function() { var e = this.getTopNodes(); if (e.length > 1) return e[e.length - 2] }, getBookmarksRootNode: function() { return p.length > 0 ? p[0] : m }, getBookmarkBarFolderId: function() { return void 0 === f ? void 0 : f.id }, getBookmarksBarNodes: function() { return g }, getSpeeddialNodes: function() { return v }, getItemById: function(e) { var t = function t(n) { for (var i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) return a; if (a.children && (a = t(a.children))) return a } }; return t(p) }, getCutIds: function() { return b }, getFilteredTree: function(e) { var t = function e(t, n, i) { for (var a = !1, r = 0; r < t.length; r++) { var s = t[r]; if (s.children) { var o = Object.assign({}, s, { children: [] }); e(s.children, o.children, i) && (n.push(o), a = !0) } else { var l = s.title.toLowerCase(); if (l.search(i) !== -1 || s.url.search(i) !== -1) { var c = Object.assign({}, s); n.push(c), a = !0 } } } return a }, n = this.getTopNodes(), i = []; return t(n, i, e.toLowerCase()), i }, getFoldersWithin: function(e, t) { var n = this; e = Array.isArray(e) ? e : [e]; var i = []; return e.filter(function(e) { return !e.trash && e.children && !e.url }).forEach(function(e) { i.push({ id: e.id, title: e.title, level: t }), i = i.concat(n.getFoldersWithin(e.children, t + 1)) }), i }, canBookmarkUrl: function(e) { return !A(e) }, hasNickname: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; if (e = e.toLowerCase(), "" === e.trim()) return !1; var t = function t(n) { return e === n.nickname.toLowerCase() || (n.children ? n.children.some(t) : void 0) }; return p.some(t) }, getNicknamed: function(e) { if ("string" != typeof e || e.length < 1) return []; e = e.toLowerCase(); var t = [], n = function n(i) { e === i.nickname.toLowerCase() && (t = i.children ? t.concat(i.children.filter(function(e) { return !e.children })) : t.concat(i)), i.children && i.children.forEach(n) }; return p.forEach(n), t }, isTrashed: function(e) { function t(e, n) { if (e.id === n) return !0; var i, a; for (a in e) if (e.hasOwnProperty(a) && "object" === o(e[a]) && (i = t(e[a], n))) return !0; return !1 } return t(_, e.id) }, isFolder: function(e) { return e.children && e.children.length > 0 || void 0 === e.url }, validateAsBookmarkBarFolder: function(e) { var t = N.getItemById(e); if (t && t.children && !N.isTrashed(t)) return t }, validateForClipboard: function(e) { return e.filter(function(e) { return e !== _.id }) }, validateForDrag: function(e) { return e.filter(function(e) { return e !== _.id }) }, validateForDeletion: function(e) { return e.filter(function(e) { return e !== _.id }) }, validateForEdit: function(e) { return e !== _.id }, getTitle: function(e) { var t = N.getItemById(e); return t ? t.title : "" }, emitChange: function() { this.emit(h) }, addChangeListener: function(e) { this.on(h, e) }, removeChangeListener: function(e) { this.removeListener(h, e) } }); c.register(function(e) { var t = e.action; switch (t.actionType) { case u.BOOKMARKS_LOAD_ALL: if (s(t.bookmarks, t.bookmarksBarFolderId), void 0 === N.getBookmarkBarFolderId()) { var n = d.getDefault("BOOKMARKS_BAR_FOLDER_IDS"); d.set({ BOOKMARKS_BAR_FOLDER_IDS: n }), a(n[0]) } N.emitChange(); break; case u.BOOKMARKS_SET_BOOKMARK_BAR_FOLDER: a(t.folderId), N.emitChange(); break; case u.BOOKMARKS_SET_CUT_IDS: b = t.ids, N.emitChange(); break; default: return !0 } }), e.exports = window.BookmarkStore = N }, function(e, t, n) { // ========================= // Function_52 // ========================= "use strict"; function i() { H.forEach(function(e) { h.unbind(e.key, e.func) }), H = []; var e = z.getCommandShortcuts(); Object.keys(e).forEach(function(t) { var n = e[t].function; h.bind(t, n), H.push({ key: t, func: n }) }) } function a(e) { if ("MacIntel" === navigator.platform) e(); else { B = F.length; for (var t = 0; t < F.length; t++) { var n = F[t], i = new Image; i.onload = r.bind(i, n, e), i.src = "data:image/svg+xml;utf8," + n.src } } } function r(e, t) { try { var n = document.createElement("canvas"); n.width = U, n.height = U; var i = n.getContext("2d"); i.drawImage(this, 0, 0); var a = n.toDataURL("image/png"); e.icon = a.substr(a.indexOf(",") + 1) } finally { this.onload = null, B > 0 && (B--, 0 === B && t()) } } function s(e, t, n) { for (var i = n.length - 1; i >= 0; i--) if (n[i].items) s(e, t, n[i].items); else if (n[i].commandName === e) { t && t.shortcut ? n[i].shortcut = t.shortcut[0] : delete n[i].shortcut; break } } function o(e) { for (var t = 0; t < e.length; t++) l(e[t].command, e[t].value) } function l(e, t) { j[e] = t, s(e, t, z.getMenuItems()) } function c(e, t) { return function(n, i) { e.call(null, t, n, i) } } var u = n(552), A = n(18).EventEmitter, d = (n(49), n(50)), h = n(37), m = n(129), p = n(167), f = n(15), g = n(17), _ = n(131), v = n(168), b = n(58), N = n(553), E = n(554), S = n(65), T = n(8), y = n(6), C = n(3), I = n(55), O = n(249), w = n(59), D = n(30), k = n(20), M = k.urls, L = n(2), P = "change", R = 34045, x = !1, B = 0, U = 16, F = [{ name: "menu_bookmarks", src: n(966), icon: "" }, { name: "menu_mail", src: n(969), icon: "" }, { name: "menu_contacts", src: n(967), icon: "" }, { name: "menu_downloads", src: n(968), icon: "" }, { name: "menu_notes", src: n(970), icon: "" }, { name: "menu_settings", src: n(971), icon: "" }, { name: "menu_vivaldi", src: n(972), icon: "" }, { name: "menu_capture", src: n(472), icon: "" }], H = [], V = [Object.assign({ name: "COMMAND_NEW_WINDOW", action: function() { return f.openWindow() }, category: y.CATEGORY_COMMAND_APPLICATION }, D("command", "New Window")), Object.assign({ name: "COMMAND_NEW_PRIVATE_WINDOW", action: f.openIncognitoWindow, category: y.CATEGORY_COMMAND_APPLICATION }, D("New Private Window")), Object.assign({ name: "COMMAND_CLOSE_WINDOW", action: d.closeWindow, category: y.CATEGORY_COMMAND_APPLICATION }, D("Close Window")), Object.assign({ name: "COMMAND_SHOW_QUICK_COMMANDS", action: d.showQuickCommand, category: y.CATEGORY_COMMAND_APPLICATION }, D("Quick Commands")), Object.assign({ name: "COMMAND_FULLSCREEN", action: d.fullScreen, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Fullscreen Mode")), Object.assign({ name: "COMMAND_TASK_MANAGER", action: d.showTaskManager, category: y.CATEGORY_COMMAND_APPLICATION }, D("Task Manager")), Object.assign({ name: "COMMAND_SHOW_SETTINGS", action: d.showSettings, category: y.CATEGORY_COMMAND_APPLICATION }, D("Settings")), Object.assign({ name: "COMMAND_SHOW_PLUGINS", action: d.showPlugins, category: y.CATEGORY_COMMAND_APPLICATION }, D("Plugins")), Object.assign({ name: "COMMAND_SHOW_EXTENSIONS", action: d.showExtensions, category: y.CATEGORY_COMMAND_APPLICATION }, D("Extensions")), Object.assign({ name: "COMMAND_SHOW_HISTORY", action: d.showHistory, category: y.CATEGORY_COMMAND_APPLICATION }, D("History")), Object.assign({ name: "COMMAND_SHOW_BOOKMARKS", action: d.showBookmarks, category: y.CATEGORY_COMMAND_APPLICATION }, D("Bookmarks")), Object.assign({ name: "COMMAND_SHOW_WELCOME", action: d.showWelcome, category: y.CATEGORY_COMMAND_APPLICATION }, D("Welcome Page")), Object.assign({ name: "COMMAND_SHOW_CLEAR_PRIVATE_DATA", action: d.showClearPrivateData, category: y.CATEGORY_COMMAND_APPLICATION }, D("Clear Private Data")), Object.assign({ name: "COMMAND_SHOW_BOOKMARK_BAR", action: d.toggleBookmarksBar, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Bookmarks Bar")), Object.assign({ name: "COMMAND_TOGGLE_MENU_POSITION", action: d.toggleMenuPosition, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Menu Position")), Object.assign({ name: "COMMAND_TOGGLE_FOOTER", action: d.toggleFooter, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Status Bar")), Object.assign({ name: "COMMAND_TOGGLE_INTERFACE_COLOR", action: d.toggleInterfaceColor, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Next Theme")), Object.assign({ name: "COMMAND_EXIT", action: d.exitBrowser, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("Quit $1", ["Vivaldi"]) : D("Exit")), Object.assign({ name: "COMMAND_SHOW_HELP", action: f.newPage, param: " https://help.vivaldi.com", category: y.CATEGORY_COMMAND_APPLICATION }, D("browser", "Help")), Object.assign({ name: "COMMAND_SHOW_KEYBOARDSHORTCUTS", action: d.showKeyboardShortcuts, category: y.CATEGORY_COMMAND_APPLICATION }, D("Keyboard Cheat Sheet")), Object.assign({ name: "COMMAND_MAIN_TOGGLE_TAB_BAR", action: d.toggleTabBar, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Tab Bar")), Object.assign({ name: "COMMAND_MAIN_TOGGLE_ADDRESS_BAR", action: d.toggleAddressBar, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Address Bar")), Object.assign({ name: "COMMAND_MAIN_TOGGLE_UI", action: d.toggleUI, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Toggle UI")), Object.assign({ name: "COMMAND_CAPTURE_AREA_TO_DISK", action: d.captureArea.bind(null, "disk", !1), category: y.CATEGORY_COMMAND_APPLICATION }, D("Capture Area to Disk")), Object.assign({ name: "COMMAND_CAPTURE_AREA_TO_CLIPBOARD", action: d.captureArea.bind(null, "clipboard", !1), category: y.CATEGORY_COMMAND_APPLICATION }, D("Capture Area to Clipboard")), Object.assign({ name: "COMMAND_NEW_TAB", action: f.newPage, gestureOnLink: L("Open Link in New Tab (Over a Link)"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("command", "New Tab")), Object.assign({ name: "COMMAND_NEW_BACKGROUND_TAB", action: E.newBackgroundTab, gestureOnLink: L("Open Link in Background Tab (Over a Link)"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("New Background Tab")), Object.assign({ name: "COMMAND_CLONE_TAB", action: function() { return f.clonePage(g.getActivePage()) }, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Clone Tab")), Object.assign({ name: "COMMAND_MOVE_TAB_TO_NEW_WINDOW", action: function() { return f.detachPage(g.getActivePage()) }, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Detach Tab")), Object.assign({ name: "COMMAND_PIN_TAB", action: f.togglePinned, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Pin Tab")), Object.assign({ name: "COMMAND_CLOSE_TAB", action: f.close, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Close Tab")), Object.assign({ name: "COMMAND_CLOSE_TAB_TO_LEFT", action: function() { return f.closeToLeft(g.getActivePage()) }, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Close Tabs to the Left")), Object.assign({ name: "COMMAND_CLOSE_TAB_TO_RIGHT", action: function() { return f.closeToRight(g.getActivePage()) }, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Close Tabs to the Right")), Object.assign({ name: "COMMAND_CLOSE_ALL_BUT_ACTIVE_TAB", action: E.closeAllButActiveTab, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Close Other Tabs")), Object.assign({ name: "COMMAND_NEW_PRIVATE_TAB", action: f.newPage, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("New Private Tab")), Object.assign({ name: "COMMAND_TAB_THUMBNAIL", action: E.toggleTabThumbnail, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Tab Thumbnail")), Object.assign({ name: "COMMAND_SHOW_ABOUT", action: f.newPage, param: M.internals.aboutpage, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("About $1", ["Vivaldi"]) : D("About")), Object.assign({ name: "COMMAND_CHECK_FOR_UPDATES", action: d.checkForUpdates, category: y.CATEGORY_COMMAND_APPLICATION }, D("Check for Updates")), Object.assign({ name: "COMMAND_SHOW_COMMUNITY", action: f.newPage, param: "https://vivaldi.net", category: y.CATEGORY_COMMAND_APPLICATION }, D("Community")), Object.assign({ name: "COMMAND_TAB_SWITCH_BACK_SETTING", action: E.switchTabBackBySetting, notEditable: !0, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Next Tab")), Object.assign({ name: "COMMAND_TAB_SWITCH_FORWARD_SETTING", action: E.switchTabForwardBySetting, notEditable: !0, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Previous Tab")), Object.assign({ name: "COMMAND_TAB_SWITCH_BACK_HISTORY", action: E.switchTabBackByHistory, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Next Tab (Recent)")), Object.assign({ name: "COMMAND_TAB_SWITCH_FORWARD_HISTORY", action: E.switchTabForwardByHistory, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Previous Tab (Recent)")), Object.assign({ name: "COMMAND_TAB_SWITCH_BACK_ORDER", action: E.switchTabBackByOrder, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Next Tab")), Object.assign({ name: "COMMAND_TAB_SWITCH_FORWARD_ORDER", action: E.switchTabForwardByOrder, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Previous Tab")), Object.assign({ name: "COMMAND_TAB_SWITCH_1", action: f.openPageN.bind(null, 1), label: L("Switch to Tab 1"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 1")), Object.assign({ name: "COMMAND_TAB_SWITCH_2", action: f.openPageN.bind(null, 2), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 2")), Object.assign({ name: "COMMAND_TAB_SWITCH_3", action: f.openPageN.bind(null, 3), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 3")), Object.assign({ name: "COMMAND_TAB_SWITCH_4", action: f.openPageN.bind(null, 4), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 4")), Object.assign({ name: "COMMAND_TAB_SWITCH_5", action: f.openPageN.bind(null, 5), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 5")), Object.assign({ name: "COMMAND_TAB_SWITCH_6", action: f.openPageN.bind(null, 6), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 6")), Object.assign({ name: "COMMAND_TAB_SWITCH_7", action: f.openPageN.bind(null, 7), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 7")), Object.assign({ name: "COMMAND_TAB_SWITCH_8", action: f.openPageN.bind(null, 8), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 8")), Object.assign({ name: "COMMAND_TAB_SWITCH_9", action: f.openPageN.bind(null, 9), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to Tab 9")), Object.assign({ name: "COMMAND_TAB_SWITCH_LAST", action: f.openLastPage, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Switch to the Last Tab")), Object.assign({ name: "COMMAND_TAB_REOPEN_RECENTLY_CLOSED", action: v.undeletePrevious, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Reopen Closed Tab")), Object.assign({ name: "COMMAND_TAB_STACK_TILE_VERTICAL", action: E.stackTileVertical, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Tile Vertically")), Object.assign({ name: "COMMAND_TAB_STACK_TILE_HORIZONTAL", action: E.stackTileHorizontal, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Tile Horizontally")), Object.assign({ name: "COMMAND_TAB_STACK_TILE_GRID", action: E.stackTileGrid, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Tile to Grid")), Object.assign({ name: "COMMAND_TAB_STACK_UNTILE", action: E.stackUntile, category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Untile Tabs")), Object.assign({ name: "COMMAND_PAGE_TOGGLE_MUTE", action: f.setMuting.bind(null, "active", "toggle"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Mute/unmute Tab")), Object.assign({ name: "COMMAND_PAGE_MUTE_OTHER", action: f.setMuting.bind(null, "other", "mute"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Mute Other Tabs")), Object.assign({ name: "COMMAND_PAGE_MUTE_ALL", action: f.setMuting.bind(null, "all", "mute"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Mute All Tabs")), Object.assign({ name: "COMMAND_PAGE_UNMUTE_OTHER", action: f.setMuting.bind(null, "other", "unmute"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Unmute Other Tabs")), Object.assign({ name: "COMMAND_PAGE_UNMUTE_ALL", action: f.setMuting.bind(null, "all", "unmute"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Unmute All Tabs")), Object.assign({ name: "COMMAND_CAPTURE_PAGE_TO_DISK", action: E.capturePage.bind(null, "disk"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Capture Page to Disk")), Object.assign({ name: "COMMAND_CAPTURE_PAGE_TO_CLIPBOARD", action: E.capturePage.bind(null, "clipboard"), category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Capture Page to Clipboard")), Object.assign({ name: "COMMAND_IMPORT_DATA", action: d.showImportData, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Import Bookmarks and Settings")), Object.assign({ name: "COMMAND_EXPORT_DATA", action: d.showExportData, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Export Bookmarks")), Object.assign({ name: "COMMAND_READERVIEW_TOGGLE", action: S.readerableToggle.bind(S), category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Toggle Reader View")), Object.assign({ name: "COMMAND_SAVE_SESSION", action: d.showSaveSession, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Save Open Tabs as Session")), Object.assign({ name: "COMMAND_OPEN_SESSION", action: d.showOpenSession, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Open Saved Session")), Object.assign({ name: "COMMAND_ADD_BOOKMARK", action: I.doAction, param: "addBookmark", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Create Bookmark")), Object.assign({ name: "COMMAND_FOCUS_ADDRESSFIELD", action: I.doAction, param: "focusAddressField", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Focus Address Field")), Object.assign({ name: "COMMAND_PAGE_REFRESH", action: I.reload, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Reload Page")), Object.assign({ name: "COMMAND_PAGE_RELOAD_NOCACHE", action: I.reload, param: !0, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Force Page Reload")), Object.assign({ name: "COMMAND_PAGE_SCROLL_UP", action: I.doAction, param: "pageScrollUp", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Page Up")), Object.assign({ name: "COMMAND_PAGE_SCROLL_DOWN", action: I.doAction, param: "pageScrollDown", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Page Down")), Object.assign({ name: "COMMAND_PAGE_SCROLL_TOP", action: I.doAction, param: "pageScrollTop", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Scroll Page to Top")), Object.assign({ name: "COMMAND_PAGE_SCROLL_BOTTOM", action: I.doAction, param: "pageScrollBottom", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Scroll Page to Bottom")), Object.assign({ name: "COMMAND_FOCUS_WEBVIEW", action: I.doAction, param: "focusWebView", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Focus Page")), Object.assign({ name: "COMMAND_PAGE_DISABLE_KEYBOARD_SHORTCUTS", action: d.disableKeyboardShortcuts, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Disable Keyboard Shortcuts")), Object.assign({ name: "COMMAND_FOCUS_SEARCHFIELD", action: I.doAction, param: "focusSearchField", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Focus Search Field")), Object.assign({ name: "COMMAND_FIND_IN_PAGE", action: I.doAction, param: "findInPage", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Find in Page")), Object.assign({ name: "COMMAND_FIND_NEXT_IN_PAGE", action: I.doAction, param: "findNextInPage", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Find Next in Page")), Object.assign({ name: "COMMAND_FIND_PREVIOUS_IN_PAGE", action: I.doAction, param: "findPreviousInPage", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Find Previous in Page")), Object.assign({ name: "COMMAND_PAGE_BACK", action: I.back, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("History Back")), Object.assign({ name: "COMMAND_PAGE_FORWARD", action: I.forward, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("History Forward")), Object.assign({ name: "COMMAND_PAGE_REWIND", action: m.navigateRewind, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("History Rewind")), Object.assign({ name: "COMMAND_PAGE_FAST_FORWARD", action: m.navigateFastforward, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Fast Forward")), Object.assign({ name: "COMMAND_PRINT_PAGE", action: I.doAction, param: "print", category: y.CATEGORY_COMMAND_APPLICATION }, D("Print")), Object.assign({ name: "COMMAND_BASIC_PRINT", action: I.doAction, param: "basicPrint", category: y.CATEGORY_COMMAND_APPLICATION }, D("Print Using System Dialog")), Object.assign({ name: "COMMAND_STOP_PAGE", action: I.stop, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Stop Loading")), Object.assign({ name: "COMMAND_OPEN_PAGE", action: I.doAction, param: "openPage", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("a file", "Open File")), Object.assign({ name: "COMMAND_SAVE_PAGE", action: I.doAction, param: "savePage", category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Save Page As")), Object.assign({ name: "COMMAND_MAIN_ZOOM_IN", action: d.zoomIn, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Zoom In")), Object.assign({ name: "COMMAND_MAIN_ZOOM_OUT", action: d.zoomOut, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Zoom Out")), Object.assign({ name: "COMMAND_MAIN_ZOOM_HALF", action: d.zoomHalf, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Zoom Out Half")), Object.assign({ name: "COMMAND_MAIN_ZOOM_DOUBLE", action: d.zoomDouble, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Zoom In Double")), Object.assign({ name: "COMMAND_MAIN_ZOOM_RESET", action: d.zoomReset, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Zoom Reset")), Object.assign({ name: "COMMAND_TAB_VIEW_PAGE_SOURCE", action: E.viewPageSource, category: y.CATEGORY_COMMAND_APPLICATION }, D("View Page Source")), Object.assign({ name: "COMMAND_DEVELOPER_TOOLS", action: d.showDevTools, category: y.CATEGORY_COMMAND_APPLICATION }, D("Developer Tools")), Object.assign({ name: "COMMAND_EXPORT_SETTINGS", action: I.doAction, param: "exportSettings", category: y.CATEGORY_COMMAND_APPLICATION }, D("Export Settings")), Object.assign({ name: "COMMAND_SHOW_HOMEPAGE", action: f.showHomepage, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Home")), Object.assign({ name: "COMMAND_DISCARD_PAGE", action: I.doAction, param: "discardPage", category: y.CATEGORY_COMMAND_TAB_ACTION }, D("Discard Page")), Object.assign({ name: "COMMAND_TOGGLE_PANEL", action: _.togglePanel, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Panel")), Object.assign({ name: "COMMAND_FOCUS_PANEL", action: _.setFocus, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Focus Panel")), Object.assign({ name: "COMMAND_SHOW_NEXT_PANEL", action: _.showNextPanel, param: "next", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Open Next Panel")), Object.assign({ name: "COMMAND_SHOW_PREVIOUS_PANEL", action: _.showNextPanel, param: "previous", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Open Previous Panel")), Object.assign({ name: "COMMAND_SHOW_BOOKMARK_PANEL", action: _.toggleContent, param: "bookmarks", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Bookmarks Panel")), Object.assign({ name: "COMMAND_SHOW_MAIL_PANEL", action: _.toggleContent, param: "mail", showInQC: b.getIsMailWindow, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Mail Panel")), Object.assign({ name: "COMMAND_SHOW_CONTACTS_PANEL", action: _.toggleContent, param: "contacts", showInQC: b.getIsMailWindow, category: y.CATEGORY_COMMAND_APPEARANCE }, D("Contacts Panel")), Object.assign({ name: "COMMAND_SHOW_DOWNLOADS_PANEL", action: _.toggleContent, param: "downloads", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Downloads Panel")), Object.assign({ name: "COMMAND_SHOW_NOTES_PANEL", action: _.toggleContent, param: "notes", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Notes Panel")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_1", action: _.toggleContent, param: "webpanel 1", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 1")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_2", action: _.toggleContent, param: "webpanel 2", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 2")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_3", action: _.toggleContent, param: "webpanel 3", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 3")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_4", action: _.toggleContent, param: "webpanel 4", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 4")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_5", action: _.toggleContent, param: "webpanel 5", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 5")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_6", action: _.toggleContent, param: "webpanel 6", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 6")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_7", action: _.toggleContent, param: "webpanel 7", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 7")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_8", action: _.toggleContent, param: "webpanel 8", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 8")), Object.assign({ name: "COMMAND_SHOW_WEB_PANEL_9", action: _.toggleContent, param: "webpanel 9", category: y.CATEGORY_COMMAND_APPEARANCE }, D("Web Panel 9")), Object.assign({ name: "COMMAND_COPY_SELECTION_TO_NOTE", action: p.addSelectedTextFromActivePage, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Copy Selected Text to Note")), Object.assign({ name: "COMMAND_SPATNAV_LEFT", action: N.left, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Spatial Navigation Left")), Object.assign({ name: "COMMAND_SPATNAV_UP", action: N.up, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Spatial Navigation Up")), Object.assign({ name: "COMMAND_SPATNAV_RIGHT", action: N.right, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Spatial Navigation Right")), Object.assign({ name: "COMMAND_SPATNAV_DOWN", action: N.down, category: y.CATEGORY_COMMAND_WEBPAGE_NAVIGATION }, D("Spatial Navigation Down")), Object.assign({ name: "COMMAND_CLIPBOARD_UNDO", action: u.undo, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Undo") : D("win_linux", "Undo")), Object.assign({ name: "COMMAND_CLIPBOARD_REDO", action: u.redo, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Redo") : D("win_linux", "Redo")), Object.assign({ name: "COMMAND_CLIPBOARD_CUT", action: u.cut, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Cut") : D("win_linux", "Cut")), Object.assign({ name: "COMMAND_CLIPBOARD_COPY", action: u.copy, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Copy") : D("win_linux", "Copy")), Object.assign({ name: "COMMAND_CLIPBOARD_PASTE", action: u.paste, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Paste") : D("win_linux", "Paste")), Object.assign({ name: "COMMAND_CLIPBOARD_SELECT_ALL", action: u.selectAll, category: y.CATEGORY_COMMAND_APPLICATION }, "MacIntel" === navigator.platform ? D("mac", "Select All") : D("win_linux", "Select All")), Object.assign({ name: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT", action: u.pasteAsPlainText, category: y.CATEGORY_COMMAND_APPLICATION }, D("Paste as Plain Text")), Object.assign({ name: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO", action: u.pasteAsPlainTextOrPastAndGo, category: y.CATEGORY_COMMAND_APPLICATION }, D("Paste and Go")), Object.assign({ name: "COMMAND_CLIPBOARD_PASTE_AS_NOTE", action: u.createNoteFromSelection, category: y.CATEGORY_COMMAND_APPLICATION }, D("Paste to new Note"))], W = [Object.assign({ items: [{ commandName: "COMMAND_NEW_TAB" }, { commandName: "COMMAND_NEW_WINDOW" }, { commandName: "COMMAND_NEW_PRIVATE_WINDOW" }, { commandName: "COMMAND_OPEN_PAGE", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_CLOSE_TAB" }, { commandName: "COMMAND_CLOSE_WINDOW" }, { name: "---" }, { commandName: "COMMAND_SAVE_PAGE", ellipsis: !0 }, { commandName: "COMMAND_PRINT_PAGE", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_IMPORT_DATA", ellipsis: !0 }, { commandName: "COMMAND_EXPORT_DATA", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_OPEN_SESSION", ellipsis: !0 }, { commandName: "COMMAND_SAVE_SESSION", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_EXIT" }] }, D("win_linux", "File")), Object.assign({ items: [{ commandName: "COMMAND_CLIPBOARD_UNDO", shortcut: "ctrl+z" }, { commandName: "COMMAND_CLIPBOARD_REDO", shortcut: "ctrl+y" }, { name: "---" }, { commandName: "COMMAND_CLIPBOARD_CUT", shortcut: "ctrl+x" }, { commandName: "COMMAND_CLIPBOARD_COPY", shortcut: "ctrl+c" }, { commandName: "COMMAND_CLIPBOARD_PASTE", shortcut: "ctrl+v" }, { commandName: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO" }, { commandName: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT" }, { name: "---" }, { commandName: "COMMAND_CLIPBOARD_SELECT_ALL", shortcut: "ctrl+a" }, { name: "---" }, { commandName: "COMMAND_FIND_IN_PAGE" }] }, D("noun_win_linux", "Edit")), Object.assign({ items: [Object.assign({ commandName: "COMMAND_TOGGLE_MENU_POSITION", type: "checkbox", setting: "VIVALDI_MENU_POSITION" }, D("Horizontal Main Menu")), Object.assign({ commandName: "COMMAND_TOGGLE_PANEL", type: "checkbox", panelState: "SHOW_PANEL" }, D("Show Panel")), Object.assign({ commandName: "COMMAND_TOGGLE_FOOTER", type: "checkbox", setting: "SHOW_VIVALDI_FOOTER" }, D("Show Status Bar")), Object.assign({ commandName: "COMMAND_SHOW_BOOKMARK_BAR", type: "checkbox", setting: "BOOKMARK_BAR_VISIBLE" }, D("Show Bookmarks Bar")), { name: "---" }, { commandName: "COMMAND_SHOW_BOOKMARK_PANEL", iconName: "menu_bookmarks" }, { commandName: "COMMAND_SHOW_MAIL_PANEL", iconName: "menu_mail", testVisibility: b.getIsMailWindow }, { commandName: "COMMAND_SHOW_CONTACTS_PANEL", iconName: "menu_contacts", testVisibility: b.getIsMailWindow }, { commandName: "COMMAND_SHOW_DOWNLOADS_PANEL", iconName: "menu_downloads" }, { commandName: "COMMAND_SHOW_NOTES_PANEL", iconName: "menu_notes" }, { name: "---" }, { commandName: "COMMAND_MAIN_ZOOM_IN" }, { commandName: "COMMAND_MAIN_ZOOM_OUT" }, { commandName: "COMMAND_MAIN_ZOOM_RESET" }] }, D("win_linux", "View")), Object.assign({ items: [{ commandName: "COMMAND_SHOW_SETTINGS", ellipsis: !0, iconName: "menu_settings" }, { name: "---" }, { commandName: "COMMAND_SHOW_QUICK_COMMANDS", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_SHOW_BOOKMARKS" }, { commandName: "COMMAND_SHOW_HISTORY" }, { commandName: "COMMAND_SHOW_EXTENSIONS" }, { commandName: "COMMAND_SHOW_PLUGINS" }, { name: "---" }, Object.assign({ iconName: "menu_capture", items: [Object.assign({ commandName: "COMMAND_CAPTURE_PAGE_TO_DISK" }, D("Page To Disk")), Object.assign({ commandName: "COMMAND_CAPTURE_PAGE_TO_CLIPBOARD" }, D("Page To Clipboard")), { name: "---" }, Object.assign({ commandName: "COMMAND_CAPTURE_AREA_TO_DISK" }, D("Area To Disk")), Object.assign({ commandName: "COMMAND_CAPTURE_AREA_TO_CLIPBOARD" }, D("Area To Clipboard"))] }, D("Capture")), { name: "---" }, { commandName: "COMMAND_SHOW_CLEAR_PRIVATE_DATA", ellipsis: !0 }, { name: "---" }, { commandName: "COMMAND_TASK_MANAGER" }, { commandName: "COMMAND_DEVELOPER_TOOLS" }] }, D("Tools")), Object.assign({ tag: R, items: [Object.assign({ commandName: "COMMAND_FULLSCREEN" }, D("Go Fullscreen")), { name: "---" }] }, D("win_linux", "Window")), Object.assign({ items: [{ commandName: "COMMAND_SHOW_HELP" }, { commandName: "COMMAND_SHOW_KEYBOARDSHORTCUTS", ellipsis: !0 }, { commandName: "COMMAND_SHOW_WELCOME" }, { commandName: "COMMAND_SHOW_COMMUNITY" }, { name: "---" }, { commandName: "COMMAND_CHECK_FOR_UPDATES", ellipsis: !0, platform: ["win"] }, { name: "---" }, { commandName: "COMMAND_SHOW_ABOUT", iconName: "menu_vivaldi" }] }, D("win_linux", "Help"))], G = [{ name: L("Vivaldi"), tag: 44002, items: [{ commandName: "COMMAND_SHOW_ABOUT", tag: 54017 }, { name: "---" }, { commandName: "COMMAND_SHOW_SETTINGS", tag: 54014, name: L("Preferences...") }, { name: "---" }, { commandName: "COMMAND_CHECK_FOR_UPDATES", ellipsis: !0, tag: 54022 }, { name: "---" }, { commandName: "COMMAND_HIDE_VIVALDI", tag: 44003, name: L("Hide $1", ["Vivaldi"]), shortcut: "cmd+h" }, { commandName: "COMMAND_HIDE_OTHERS", tag: 54026, name: L("Hide Others"), shortcut: "cmd+alt+h" }, { name: "---" }, { commandName: "COMMAND_EXIT", tag: 34031 }] }, { name: L("mac", "File"), tag: 44001, items: [{ commandName: "COMMAND_NEW_TAB", tag: 54001 }, { commandName: "COMMAND_NEW_WINDOW", tag: 54002 }, { commandName: "COMMAND_NEW_PRIVATE_WINDOW", tag: 54031 }, { commandName: "COMMAND_OPEN_PAGE", ellipsis: !0, tag: 54033 }, { commandName: "COMMAND_FOCUS_ADDRESSFIELD", ellipsis: !0, tag: 54047, name: L("Open Location...") }, { name: "---" }, { commandName: "COMMAND_CLOSE_TAB", tag: 54034 }, { commandName: "COMMAND_CLOSE_WINDOW", tag: 54041 }, { commandName: "COMMAND_SAVE_PAGE", ellipsis: !0, tag: 54019 }, { name: "---" }, { commandName: "COMMAND_IMPORT_DATA", ellipsis: !0, tag: 54003 }, { commandName: "COMMAND_EXPORT_DATA", ellipsis: !0, tag: 54038 }, { name: "---" }, { commandName: "COMMAND_OPEN_SESSION", ellipsis: !0, tag: 54044 }, { commandName: "COMMAND_SAVE_SESSION", ellipsis: !0, tag: 54045 }, { name: "---" }, { commandName: "COMMAND_PRINT_PAGE", ellipsis: !0, tag: 54004 }] }, { name: L("noun_mac", "Edit"), tag: 36004, items: [{ commandName: "COMMAND_CLIPBOARD_UNDO", tag: 50144, shortcut: "cmd+z" }, { commandName: "COMMAND_CLIPBOARD_REDO", tag: 50145, shortcut: "shift+cmd+z" }, { name: "---" }, { commandName: "COMMAND_CLIPBOARD_CUT", tag: 50141, shortcut: "cmd+x" }, { commandName: "COMMAND_CLIPBOARD_COPY", tag: 50140, shortcut: "cmd+c" }, { commandName: "COMMAND_CLIPBOARD_PASTE", tag: 50142, shortcut: "cmd+v" }, { commandName: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO", tag: 54027 }, { commandName: "COMMAND_DELETE", tag: 50143, name: L("text_mac", "Delete") }, { commandName: "COMMAND_CLIPBOARD_SELECT_ALL", tag: 50146, shortcut: "cmd+a" }, { name: "---" }, { commandName: "COMMAND_FIND_IN_PAGE", tag: 54006 }] }, { name: L("mac", "View"), tag: 54901, items: [{ commandName: "COMMAND_SHOW_BOOKMARK_BAR", tag: 54025 }, { commandName: "COMMAND_TOGGLE_FOOTER", tag: 54009 }, { commandName: "COMMAND_TOGGLE_PANEL", tag: 54008 }, { name: "---" }, { commandName: "COMMAND_SHOW_BOOKMARK_PANEL", tag: 54010 }, { commandName: "COMMAND_SHOW_MAIL_PANEL", tag: 54011, testVisibility: b.isMailWindow }, { commandName: "COMMAND_SHOW_CONTACTS_PANEL", tag: 54012, testVisibility: b.isMailWindow }, { commandName: "COMMAND_SHOW_DOWNLOADS_PANEL", tag: 54013 }, { commandName: "COMMAND_SHOW_NOTES_PANEL", tag: 54020 }, { name: "---" }, { commandName: "COMMAND_MAIN_ZOOM_IN", tag: 54035 }, { commandName: "COMMAND_MAIN_ZOOM_OUT", tag: 54036 }, { commandName: "COMMAND_MAIN_ZOOM_RESET", tag: 54037 }, { name: "---" }, { commandName: "COMMAND_FULLSCREEN", tag: 54016, name: L("Full Screen") }] }, { name: L("Tools"), tag: 54902, items: [{ commandName: "COMMAND_SHOW_QUICK_COMMANDS", ellipsis: !0, tag: 54015 }, { name: "---" }, { commandName: "COMMAND_SHOW_BOOKMARKS", tag: 54039 }, { commandName: "COMMAND_SHOW_HISTORY", tag: 54040 }, { commandName: "COMMAND_SHOW_EXTENSIONS", tag: 54029 }, { commandName: "COMMAND_SHOW_PLUGINS", tag: 54024 }, { name: "---" }, { name: L("Capture"), items: [{ commandName: "COMMAND_CAPTURE_PAGE_TO_DISK", name: L("Page To Disk"), tag: 54049 }, { commandName: "COMMAND_CAPTURE_PAGE_TO_CLIPBOARD", name: L("Page To Clipboard"), tag: 54050 }, { name: "---" }, { commandName: "COMMAND_CAPTURE_AREA_TO_DISK", name: L("Area To Disk"), tag: 54051 }, { commandName: "COMMAND_CAPTURE_AREA_TO_CLIPBOARD", name: L("Area To Clipboard"), tag: 54052 }] }, { name: "---" }, { commandName: "COMMAND_SHOW_CLEAR_PRIVATE_DATA", ellipsis: !0, tag: 54030 }, { name: "---" }, { commandName: "COMMAND_TASK_MANAGER", tag: 54021 }, { commandName: "COMMAND_DEVELOPER_TOOLS", tag: 54023 }] }, { name: L("mac", "Window"), tag: R, items: [{ commandName: "COMMAND_MINIMIZE", tag: 34046, name: L("Minimize"), shortcut: "cmd+m" }, { commandName: "COMMAND_MAC_ZOOM", tag: 34047, name: L("Zoom") }, { name: "---" }, { commandName: "COMMAND_MAC_ALL_TO_FRONT", tag: 34048, name: L("Bring All to Front") }, { name: "---", tag: 55555 }] }, { name: L("mac", "Help"), tag: 54903, items: [{ commandName: "COMMAND_SHOW_HELP", tag: 54042 }, { commandName: "COMMAND_SHOW_KEYBOARDSHORTCUTS", ellipsis: !0, tag: 54028 }, { name: "---" }, { commandName: "COMMAND_SHOW_WELCOME", tag: 54046 }, { commandName: "COMMAND_SHOW_COMMUNITY", tag: 54018 }] }], K = { 54001: "COMMAND_NEW_TAB", 54002: "COMMAND_NEW_WINDOW", 54003: "COMMAND_IMPORT_DATA", 54004: "COMMAND_PRINT_PAGE", 54005: "COMMAND_EXIT", 54006: "COMMAND_FIND_IN_PAGE", 54007: "COMMAND_TOGGLE_MENU_POSITION", 54008: "COMMAND_TOGGLE_PANEL", 54009: "COMMAND_TOGGLE_FOOTER", 54010: "COMMAND_SHOW_BOOKMARK_PANEL", 54011: "COMMAND_SHOW_MAIL_PANEL", 54012: "COMMAND_SHOW_CONTACTS_PANEL", 54013: "COMMAND_SHOW_DOWNLOADS_PANEL", 54014: "COMMAND_SHOW_SETTINGS", 54015: "COMMAND_SHOW_QUICK_COMMANDS", 54016: "COMMAND_FULLSCREEN", 54017: "COMMAND_SHOW_ABOUT", 54018: "COMMAND_SHOW_COMMUNITY", 54019: "COMMAND_SAVE_PAGE", 54020: "COMMAND_SHOW_NOTES_PANEL", 54021: "COMMAND_TASK_MANAGER", 54022: "COMMAND_CHECK_FOR_UPDATES", 54023: "COMMAND_DEVELOPER_TOOLS", 54024: "COMMAND_SHOW_PLUGINS", 54025: "COMMAND_SHOW_BOOKMARK_BAR", 54027: "COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO", 54028: "COMMAND_SHOW_KEYBOARDSHORTCUTS", 54029: "COMMAND_SHOW_EXTENSIONS", 54030: "COMMAND_SHOW_CLEAR_PRIVATE_DATA", 54031: "COMMAND_NEW_PRIVATE_WINDOW", 54033: "COMMAND_OPEN_PAGE", 54034: "COMMAND_CLOSE_TAB", 54035: "COMMAND_MAIN_ZOOM_IN", 54036: "COMMAND_MAIN_ZOOM_OUT", 54037: "COMMAND_MAIN_ZOOM_RESET", 54038: "COMMAND_EXPORT_DATA", 54039: "COMMAND_SHOW_BOOKMARKS", 54040: "COMMAND_SHOW_HISTORY", 54041: "COMMAND_CLOSE_WINDOW", 54042: "COMMAND_SHOW_HELP", 54044: "COMMAND_OPEN_SESSION", 54045: "COMMAND_SAVE_SESSION", 54046: "COMMAND_SHOW_WELCOME", 54047: "COMMAND_FOCUS_ADDRESSFIELD", 54048: "COMMAND_CLIPBOARD_PASTE_AS_NOTE", 54049: "COMMAND_CAPTURE_PAGE_TO_DISK", 54050: "COMMAND_CAPTURE_PAGE_TO_CLIPBOARD", 54051: "COMMAND_CAPTURE_AREA_TO_DISK", 54052: "COMMAND_CAPTURE_AREA_TO_CLIPBOARD" }, j = {}, z = Object.assign({}, A.prototype, { _getCommandsByType: function(e) { var t = {}; for (var n in j) if (void 0 !== j[n]) for (var i = j[n], a = 0; a < V.length; a++) if (V[a].name === n && i.hasOwnProperty(e)) { var r = i[e]; if (r) for (var s = 0; s < r.length; s++) t[r[s]] = { function: c(V[a].action, V[a].param), label: V[a].gestureLabel || V[a].label } } return t }, getMenuItems: function() { return "MacIntel" === navigator.platform ? G : W }, getIconByName: function(e) { for (var t = 0; t < F.length; t++) if (e === F[t].name) return F[t].icon }, getCommandShortcuts: function() { return this._getCommandsByType("shortcut") }, getCommandsGestures: function() { return this._getCommandsByType("gestures") }, getCommands: function() { return V }, getQuickCommands: function() { return V.filter(function(e) { if ("function" == typeof e.showInQC && !e.showInQC()) return !1; for (var t in j) if (void 0 !== j[t]) { var n = j[t]; if (e.name === t) return n.hasOwnProperty("shortcut") && (e.shortcut = n.shortcut), n.showInQC === !0 } return !1 }.bind(this)) }, getAllCommands: function() { return V.filter(function(e) { for (var t in j) if (void 0 !== j[t]) { var n = j[t]; if (e.name === t) return n.hasOwnProperty("shortcut") && (e.shortcut = n.shortcut), n.hasOwnProperty("gestures") && (e.gestures = n.gestures), n.hasOwnProperty("showInQC") && (e.showInQC = n.showInQC), !0 } }) }, getFunction: function(e, t) { return function() { e.apply(null, t) } }, getVerticalMenu: function(e) { return this._getMenu(e) }, getHorizontalMenu: function(e) { return this._getMenu(e) }, getHandlerFromChromeId: function(e, t) { var n; if (54043 === e) { var i = parseInt(t), a = g.getPages().find(function(e) { return e.get("id") === i }); a && (n = c(f.openPage, a)) } return n }, getOpenTabsMenuList: function(e) { var t = []; return e.forEach(function(e) { t.push({ handler: c(f.openPage, e), name: M.getDisplayTitle(e), tag: 54043, url: e.get("url"), parameter: e.get("id").toString(), emphasized: e.get("active"), mnemonic: !1 }) }), t }, _getMenu: function(e) { function t(e) { if (e.commandName) { for (var n = 0, i = V.length; n < i; n++) if (V[n].name === e.commandName) { e.handler = c(V[n].action, V[n].param), e.name || (e.name = e.label ? e.label : V[n].label), e.englishName || (e.englishName = V[n].labelEnglish); break } } else e.name || (e.name = e.label), e.englishName || (e.englishName = e.labelEnglish); e.items && e.items.forEach(function(e) { t(e) }) } x || (this._initializeCheckmarks(z.getMenuItems()), x = !0); var n = O(this.getMenuItems()); if (n.forEach(function(e) { t(e) }), e) { var i = this._getMenuElementById(n, R); if (void 0 !== i && i.items) { var a = this.getOpenTabsMenuList(e); a.forEach(function(e) { i.items.push(e) }) } } return this._pruneOtherPlatforms(n, w()), n }, _isChecked: function(e) { return e === !0 || "top" === e || "on" === e }, _initializeCheckmarks: function(e) { for (var t = e.length - 1; t >= 0; t--) { var n = e[t]; n.items ? this._initializeCheckmarks(n.items) : n.setting ? (C.get(n.setting, function(e, t) { e.checked = this._isChecked(t) }.bind(this, n)), C.addListener(n.setting, function(e, t, n) { e.checked = this._isChecked(n), z.emitChange() }.bind(this, n))) : n.panelState && "SHOW_PANEL" === n.panelState && (n.checked = b.getPanelButtonsVisible(), b.addChangeListener(function() { this.checked !== b.getPanelButtonsVisible() && (this.checked = b.getPanelButtonsVisible(), z.emitChange()) }.bind(n))) } }, _getMenuElementById: function(e, t) { for (var n, i = 0; i < e.length; i++) { var a = e[i]; if (void 0 !== a.tag && a.tag === t) { n = a; break } if (a.items && (n = this._getMenuElementById(a.items, t), void 0 !== n)) break } return n }, _pruneOtherPlatforms: function(e, t) { for (var n = 0; n < e.length;) { var i = e[n]; void 0 !== i.platform && Array.isArray(i.platform) && i && i.platform && i.platform.indexOf(t) === -1 ? e.splice(n, 1) : (i.items && this._pruneOtherPlatforms(i.items, t), n++) } }, chromeIdToCommand: function(e) { return K[e] }, emitChange: function() { this.emit(P) }, addChangeListener: function(e) { this.on(P, e) }, removeChangeListener: function(e) { this.removeListener(P, e) }, getUserEditableCommands: function() { return this.getAllCommands().filter(function(e) { return e.notEditable !== !0 }) }, getUserEditableCommandsList: function() { return V.filter(function(e) { return e.customizable === !0 }).map(function(e) { return e.name }) } }); T.register(function(e) { var t = e.action; switch (t.actionType) { case y.COMMAND_LOAD_ICONS: a(t.resolve); break; case y.COMMAND_SET_CONFIGURATION: o(t.commands), i(); break; case y.COMMAND_UPDATE_SINGLE_COMMAND: l(t.commandKey, t.commandValue), i(), z.emitChange(); break; default: return !0 } }), e.exports = z }, , function(e, t, n) { // ========================= // Function_54 // ========================= "use strict"; var i = n(40), a = n(51), r = n(17), s = n(8), o = n(6), l = n(3), c = n(2), u = n(4), A = n(44), d = n(27), h = d.List, m = n(20), p = m.urls, f = n(108), g = f.PLACEHOLDER_URL, _ = !1, v = { loadPromise: function() { return new Promise(function(e, t) { u.bookmarks.getTree(function(t) { var n = l.getSync("BOOKMARKS_BAR_FOLDER_IDS")[0]; s.handleViewAction({ actionType: o.BOOKMARKS_LOAD_ALL, bookmarks: t, bookmarksBarFolderId: n }), e() }) }) }, setBookmarkBarFolderAndToggleVisibility: function(e) { l.get(["BOOKMARK_BAR_VISIBLE", "BOOKMARKS_BAR_FOLDER_IDS"], function(t) { t.BOOKMARKS_BAR_FOLDER_IDS[0] === e ? l.set({ BOOKMARK_BAR_VISIBLE: !t.BOOKMARK_BAR_VISIBLE }) : l.set({ BOOKMARKS_BAR_FOLDER_IDS: [e], BOOKMARK_BAR_VISIBLE: !0 }) }) }, setBookmarkBarFolderAndShow: function(e) { l.get(["BOOKMARK_BAR_VISIBLE", "BOOKMARKS_BAR_FOLDER_IDS"], function(t) { t.BOOKMARKS_BAR_FOLDER_IDS[0] === e ? l.set({ BOOKMARK_BAR_VISIBLE: !0 }) : l.set({ BOOKMARKS_BAR_FOLDER_IDS: [e], BOOKMARK_BAR_VISIBLE: !0 }) }) }, setBookmarkBarFolder: function(e) { a.validateAsBookmarkBarFolder(e) && l.set({ BOOKMARKS_BAR_FOLDER_IDS: [e] }) }, _onKeyPressed: function(e) { "Escape" === e.key && v.setCutIds([]) }, setCutIds: function(e) { e.length > 0 ? window.addEventListener("keydown", v._onKeyPressed, !0) : window.removeEventListener("keydown", v._onKeyPressed, !0), s.handleViewAction({ actionType: o.BOOKMARKS_SET_CUT_IDS, ids: e }) }, copyBookmarks: function(e, t, n) { var i = e.map(function(e) { return a.getItemById(e) }).filter(function(e) { return e && !e.trash }), r = function e(t, n, i) { return Promise.all(t.map(function(t) { return new Promise(function(a, r) { u.bookmarks.create({ parentId: n, index: i++, title: t.title, url: t.url ? t.url : null, description: t.description ? t.description : null, nickname: t.nickname ? t.nickname : null }, function(n) { u.runtime.lastError && console.warn("chrome.bookmarks.create failed: %o", u.runtime.lastError), n ? t.children && t.children.length >= 0 ? e(t.children, n.id, 0).then(function() { a(n) }) : a(n) : r("Bookmark was not created") }) }) })) }; return v.disableBookmarkMutationHandlers(), r(i, t, n).then(function(e) { return v.enableBookmarkMutationHandlers(), v.loadPromise(), e }) }, moveBookmarksPromise: function(e, t, n, i) { return e = e.filter(function(e) { var t = a.getItemById(e); return t.id && !t.trash }), v.disableBookmarkMutationHandlers(), Promise.all(e.map(function(e) { return new Promise(function(i) { var a = { parentId: t, index: n++ }; u.bookmarks.move(e, a, function(e) { i(e.id) }) }) })).then(function(e) { return v.enableBookmarkMutationHandlers(), v.loadPromise(), i && i(), e }) }, createBookmark: function(e, t, n, i, a, r, s) { u.bookmarks.create({ title: e, url: t, parentId: n, description: i, nickname: a, index: r }, function(e) { u.runtime.lastError && console.warn("chrome.bookmarks.create failed: %o", u.runtime.lastError), s && s(e) }) }, createBookmarksPromise: function(e) { var t = this, n = !1, i = function(e) { return !!(e.children && e.children.length > 0) }, a = function(e) { return Promise.all(e.map(function(e) { return n = n || e.isNew, new Promise(function(n, a) { t.createBookmark(e.title, e.url || (e.children ? null : g), e.parentId.toString(), e.description || null, e.nickname || null, e.index, function(r) { if (!r) return void a("Bookmark was not created"); if (i(e)) { var s = !0, o = !1, l = void 0; try { for (var c, u = e.children[Symbol.iterator](); !(s = (c = u.next()).done); s = !0) { var A = c.value; A.parentId = r.id } } catch (e) { o = !0, l = e } finally { try { !s && u.return && u.return() } finally { if (o) throw l } } t.createBookmarksPromise(e.children).then(function() { n(r) }) } else n(r) }) }) })) }; return v.disableBookmarkMutationHandlers(), a(e).then(function(e) { return v.enableBookmarkMutationHandlers(), { isNew: n, nodes: e } }) }, createBookmarks: function(e, t, n) { v.disableBookmarkMutationHandlers(), Promise.all(e.map(function(e) { return new Promise(function(i) { var a = { parentId: t, url: e.url, title: e.title, index: n++ }; u.bookmarks.create(a, function() { i() }) }) })), v.enableBookmarkMutationHandlers(), v.loadPromise() }, removeBookmark: function(e, t) { var n = e.children && e.children.length >= 0; n ? u.bookmarks.removeTree(e.id, function() { t && t() }) : u.bookmarks.remove(e.id, function() { u.runtime.lastError && console.warn("Error removing bookmark folder: " + e.id), t && t() }) }, bookmarkAllOpenPages: function(e) { var t = { pages: r.getPages(), parentId: e, isStack: !1, isSelection: !1, forceFolder: !0 }; this._bookmarkPages(t) }, bookmarkPages: function(e, t, n) { var i = h.isList(e) || Array.isArray(e), a = { pages: i ? h(e) : h.of(e), parentId: n, isStack: t, isSelection: !0, forceFolder: i }; this._bookmarkPages(a) }, bookmarkPageInFolder: function(e, t) { var n = e.get("url"); if (a.canBookmarkUrl(n)) { var i = void 0 === t ? a.getRootNode().id : t; u.bookmarks.create({ parentId: i, url: n, title: p.getDisplayTitle(e) }) } }, _bookmarkPages: function(e) { var t = r.getTabs(!1, e.pages).map(function(e) { return { page: e.pages ? void 0 : e.page, url: e.pages ? void 0 : e.page.get("url"), title: e.pages ? c("Stack") : p.getDisplayTitle(e.page), children: e.pages ? e.pages.map(function(e) { return { page: e, url: e.get("url"), title: p.getDisplayTitle(e) } }).filter(function(e) { return a.canBookmarkUrl(e.url) }).toArray() : void 0 } }).filter(function(e) { return e.children || a.canBookmarkUrl(e.url) }).toArray(); if (1 !== t.length || e.forceFolder) { if (t.length >= 1) if (e.isStack) t.forEach(function(t) { if (t.children && t.children.length > 0) { var n = { parentId: e.parentId, title: t.title }; u.bookmarks.create(n, function(e) { v.createBookmarks(t.children, e.id, 0) }) } }); else { var n = { parentId: e.parentId, title: e.isSelection ? c("Saved Tab Selection ($1)", [""]) : c("Saved Tabs ($1)1", [""]) }; u.bookmarks.create(n, function(n) { var i = A(n.dateAdded).format("YYYY-MM-DD, HH:mm:ss"), a = e.isSelection ? c("Saved Tab Selection ($1)", [i]) : c("Saved Tabs ($1)", [i]); u.bookmarks.update(n.id, { title: a }, function() { t.forEach(function(e) { if (e.children && e.children.length > 0) { var t = { parentId: n.id, title: e.title }; u.bookmarks.create(t, function(t) { v.createBookmarks(e.children, t.id, 0) }) } else if (!e.children) { var i = { parentId: n.id, title: e.title, url: e.url }; u.bookmarks.create(i) } }) }) }) } } else ! function() { var n = t[0]; if (n.children && n.children.length > 0) { var i = { parentId: e.parentId, title: n.title }; u.bookmarks.create(i, function(e) { v.createBookmarks(n.children, e.id, 0) }) } else n.children || v.bookmarkPageInFolder(n.page, e.parentId) }() }, _setClipboard: function(e, t, n) { var r = []; t = a.validateForClipboard(t), t.forEach(function(e) { var t = a.getItemById(e); t && r.push(t) }); var s = [], o = [], l = function e(t) { var n = !0, i = !1, a = void 0; try { for (var l, c = r[Symbol.iterator](); !(n = (l = c.next()).done); n = !0) { var u = l.value; if (t.id === u.id) { o.push(t), s.push(t.url || t.title); break } } } catch (e) { i = !0, a = e } finally { try { !n && c.return && c.return() } finally { if (i) throw a } } t.children && t.children.forEach(e) }; r.forEach(l), e.clipboardData.setData("isCut", n), e.clipboardData.setData("mimeType", i.getMimeType()), e.clipboardData.setData("text/plain", s.join("\n")), e.clipboardData.setData("application/json", JSON.stringify(o)) }, cut: function(e, t) { v._setClipboard(e, t, "true"), v.setCutIds(t), e.stopPropagation(), e.preventDefault() }, copy: function(e, t) { v._setClipboard(e, t, "false"), e.stopPropagation(), e.preventDefault() }, pastePromise: function(e, t, n) { var r = a.getItemById(t); if (!r) return Promise.resolve({ isCut: !1, ids: [] }); var s = void 0, o = void 0; a.isFolder(r) ? (s = r.id, o = n === !0 && r.children ? r.children.length : 0, o > 0 && r.children[o - 1].trash && o--) : (s = r.parentId, o = r.index); var l = e.clipboardData.getData("mimeType"); if (l !== i.getMimeType()) return Promise.resolve({ isCut: !1, ids: [] }); var c = []; try { c = JSON.parse(e.clipboardData.getData("application/json")) } catch (e) {} var u = a.getCutIds().length > 0; if (u && "true" === e.clipboardData.getData("isCut")) { var A = c.map(function(e) { return e.id }); return v.moveBookmarksPromise(A, s, o).then(function(e) { return v.setCutIds([]), { isCut: !0, ids: e } }) } return c.forEach(function(e) { e.parentId = s, e.index = o++ }), v.createBookmarksPromise(c).then(function(e) { return { isCut: !1, ids: e.nodes.map(function(e) { return e.id }) } }) }, disableBookmarkMutationHandlers: function() { _ = !0 }, enableBookmarkMutationHandlers: function() { _ = !1, v.loadPromise() } }; l.addListener("BOOKMARKS_BAR_FOLDER_IDS", function(e, t, n) { s.handleViewAction({ actionType: o.BOOKMARKS_SET_BOOKMARK_BAR_FOLDER, folderId: t[0] }) }), u.bookmarks.onImportBegan.addListener(v.disableBookmarkMutationHandlers), u.bookmarks.onImportEnded.addListener(v.enableBookmarkMutationHandlers); var b = { onChanged: o.CHROME_BOOKMARKS_CHANGED, onCreated: o.CHROME_BOOKMARKS_CREATED, onRemoved: o.CHROME_BOOKMARKS_REMOVED, onMoved: o.CHROME_BOOKMARKS_MOVED, onChildrenReordered: o.CHROME_BOOKMARKS_REORDERED }; Object.keys(b).forEach(function(e) { return u.bookmarks[e].addListener(function() { _ || v.loadPromise() }) }), e.exports = v }, function(e, t, n) { // ========================= // Function_55 // ========================= "use strict"; var i = n(8), a = n(6), r = n(87), s = void 0, o = { doAction: function(e, t) { s = n(17), i.handleViewAction({ actionType: a.WEBPAGEVIEW_ACTIONS, action: e, page: s.getActivePage(), modifiers: t ? t : {} }) }, findInPage: function(e, t, n, i) { var a = { findNext: !1, matchCase: n || !1 }; i && i.find(t, a, this._findCallback.bind(this, e, t, n)) }, findNextInPage: function(e, t, n, i, a) { var r = { backward: n || !1, findNext: !0, matchCase: i || !1 }; a && a.find(t, r, this._findCallback.bind(this, e, t, i)) }, _findCallback: function(e, t, n, r) { r.canceled !== !0 && i.handleViewAction(Object.assign({ actionType: a.FIND_IN_PAGE_RESULT_ACTION, matchCase: n, page: e, searchText: t }, r)) }, showFindInPageToolbar: function(e) { i.handleViewAction({ actionType: a.SHOW_FIND_IN_PAGE_ACTION, page: e }) }, closeFindInPageToolbar: function(e) { r.isFindInPageOpen(e) === !0 && i.handleViewAction({ actionType: a.CLOSE_FIND_IN_PAGE_ACTION, page: e }) }, go: function(e) { i.handleViewAction({ actionType: a.PAGE_GO, index: e ? e : 0 }) }, back: function() { i.handleViewAction({ actionType: a.PAGE_BACK }) }, forward: function() { i.handleViewAction({ actionType: a.PAGE_FORWARD }) }, stop: function() { i.handleViewAction({ actionType: a.PAGE_STOP }) }, reload: function() { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; i.handleViewAction({ actionType: a.PAGE_RELOAD, bypassCache: e }) }, updated: function(e) { i.handleViewAction({ actionType: a.PAGE_UPDATED, page: e }) } }; e.exports = o }, , , function(e, t, n) { // ========================= // Function_58 // ========================= "use strict"; function i(e) { "REG_PANEL_LIST" === e && (Q = C.isEnabled(C.kNewHistoryPage) ? [{ id: L, format: M, available: !1, forMailOnly: !1, width: -1, resizeable: !1 }, { id: P, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }, { id: R, available: !0, forMailOnly: !0, width: -1, resizeable: !1 }, { id: x, available: !0, forMailOnly: !0, width: -1, resizeable: !1 }, { id: B, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }, { id: U, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }, { id: F, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }] : [{ id: L, format: M, available: !1, forMailOnly: !1, width: -1, resizeable: !1 }, { id: P, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }, { id: R, available: !0, forMailOnly: !0, width: -1, resizeable: !1 }, { id: x, available: !0, forMailOnly: !0, width: -1, resizeable: !1 }, { id: B, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }, { id: U, available: !0, forMailOnly: !1, width: -1, resizeable: !1 }]) } function a() { var e = {}; e.barVisible = W, e.selectedPanel = H, e.width = K, e.panelVisible = V, E.set({ PANEL_STATE: e }), T(O, { SHOW_PANEL: e.barVisible, SELECTED_PANEL: e.selectedPanel, PANEL_WIDTH: e.width, SHOW_PANEL_CONTENT: e.panelVisible }) } function r(e, t) { A(e, t), Z.getResizableByPanel(e) !== !0 && (K = t), a() } function s(e) { return !!Z.getPanelAvailable(e) && !!(e !== Z.getMailName() && e !== Z.getContactName() || Z.getIsMailWindow()) } function o(e, t, n) { var i = S.getIndexByShortcut(e); i !== -1 && void 0 !== J && i >= 1 && J.length >= i && (e = J[i - 1].id), V === t && H === e || s(e) && (W = !0, K = 0 === K ? w : K, V = t, V === !0 && (H = e, j = n), a()) } function l(e) { var t = S.getIndexByShortcut(e); t !== -1 && void 0 !== J && t >= 1 && J.length >= t && (e = J[t - 1].id), s(e) && (W = !0, K = 0 === K ? w : K, e === H ? V = !V : (H = e, V = !0), V && (j = m), a()) } function c(e, t) { if (Z.getIsWebPanel(e)) { S.setAvailable(e, t); for (var n = 0; n < J.length; n++) { var i = J[n]; if (i.id === e && i.available !== t) { i.available = t, E.set({ WEB_PANEL_LIST: J }); break } } } else for (var a = 0; a < Q.length; a++) { var r = Q[a]; if (r.id === e && r.available !== t) { r.available = t, E.set({ REG_PANEL_LIST: Q }); break } } } function u(e, t) { if (Z.getIsWebPanel(e)) for (var n = 0; n < J.length; n++) { var i = J[n]; if (i.id === e && i.resizable !== t) { i.resizable = t, i.width = -1, E.set({ WEB_PANEL_LIST: J }); break } } else for (var a = 0; a < Q.length; a++) { var r = Q[a]; if (r.id === e && r.resizable !== t) { r.resizable = t, r.resizable || (r.width = -1), E.set({ REG_PANEL_LIST: Q }); break } } } function A(e, t) { if (Z.getIsWebPanel(e)) for (var n = 0; n < J.length; n++) { var i = J[n]; if (i.id === e && i.width !== t) { i.width = t, E.set({ WEB_PANEL_LIST: J }); break } } else for (var a = 0; a < Q.length; a++) { var r = Q[a]; if (r.id === e && r.width !== t) { r.width = t, E.set({ REG_PANEL_LIST: Q }); break } } } function d() { V === !1 ? W ? (H = "", W = !1) : (W = !0, H && l(H)) : (K = 0 === K ? w : K, W = !W, V = !V), a() } function h(e) { e ? (W = !0, V = !0, H || (H = Z.getDefaultPanel())) : V = !1, a() } function m() { V === !1 ? (j = !0, h(!0)) : Z.emitChange("setFocus") } function p(e) { var t = this; V === !1 ? m() : ! function() { var n = Z.getWebPanels(), i = []; if (Z.getPanelAvailable(P) && i.push(P), Z.getPanelAvailable(R) && Z.getIsMailWindow() && i.push(R), Z.getPanelAvailable(x) && Z.getIsMailWindow() && i.push(x), Z.getPanelAvailable(B) && i.push(B), Z.getPanelAvailable(U) && i.push(U), Z.getPanelAvailable(F) && i.push(F), void 0 !== n && n.forEach(function(e) { e.available && i.push(e.id) }), H) { for (var a = 0; a < i.length; a++) if (i[a] === H) { a += "next" === e ? 1 : -1, a < 0 ? a = i.length - 1 : a >= i.length && (a = 0), H !== i[a] && l(i[a]); break } } else { var r = Z.getFirstAvailablePanel(); void 0 !== r && l(t.getDefaultPanel()) } Z.emitChange("") }() } function f(e) { W = void 0 !== e.showButtons ? e.showButtons : W, V = void 0 !== e.showContent ? e.showContent : V, K = void 0 !== e.width ? e.width : K, H = void 0 !== e.selectedPanel ? e.selectedPanel : H, s(H) || (H = Z.getFirstAvailablePanel(), H || (V = !1)) } function g(e, t, n) { if ("WEB_PANEL_LIST" === e) { var i = Z.getSelectedWebPanelIndex(), a = J.length; if (J = y.clone(t), J.length > a) n || Y !== O || l(J[J.length - 1].id); else if (J.length < a && void 0 !== i) { var r = void 0; Z.getAvailablePanelCount() > 0 && (r = void 0 === Z.getSelectedWebPanelIndex() ? i >= J.length ? 0 === J.length ? Z.getLastAvailablePanel() : J[J.length - 1].id : J[i].id : J[Z.getSelectedWebPanelIndex()].id), void 0 === r ? (H = "", h(!1)) : r !== H && (V ? l(r) : H = r) } } else "REG_PANEL_LIST" === e && (t.length > 0 && (t[0].id !== L || t[0].format !== M) ? (Q = y.clone(_(t)), E.set({ REG_PANEL_LIST: Q })) : Q = y.clone(t), !H || Z.getIsWebPanel(H) || Z.getPanelAvailable(H) || (H = "", h(!1))) } function _(e) { for (var t = y.clone(e), n = [], i = 0; i < Q.length; i++) { var a = Q[i]; if (i > 0) for (var r = 0; r < t.length; r++) { var s = t[r]; if (a.id === s.id) { void 0 !== s.available && (a.available = s.available), void 0 !== s.forMailOnly && (a.forMailOnly = s.forMailOnly), void 0 !== s.width && (a.width = s.width), void 0 !== s.resizable && (a.resizeable = s.resizeable), t.splice(r, 1); break } } n.push(a) } return n } var v = n(18).EventEmitter, b = n(8), N = n(6), E = n(3), S = n(242), T = n(399), y = n(7), C = n(74), I = "change", O = window.vivaldiWindowId, w = 250, D = 34, k = "MacIntel" === navigator.platform ? 6 : 10, M = "1rev", L = "format", P = "bookmarks", R = "mail", x = "contacts", B = "downloads", U = "notes", F = "history", H = "", V = !1, W = !0, G = !1, K = 0, j = !1, z = -1, Y = -1, J = [], Q = [], Z = Object.assign({}, v.prototype, { getResizableByPanel: function(e) { for (var t = 0; t < Q.length; t++) if (Q[t].id === e) return Q[t].resizable; for (var n = 0; n < J.length; n++) if (J[n].id === e) return J[n].resizable; return !1 }, getWidthByPanel: function(e) { for (var t = 0; t < Q.length; t++) if (Q[t].id === e) return Q[t].width; for (var n = 0; n < J.length; n++) if (J[n].id === e) return J[n].width; return -1 }, getPanelAvailable: function(e) { for (var t = 0; t < Q.length; t++) if (Q[t].id === e) return Q[t].available !== !1; for (var n = 0; n < J.length; n++) if (J[n].id === e) return J[n].available !== !1; return !1 }, getAvailablePanelCount: function() { for (var e = 0, t = 0; t < Q.length; t++) Q[t].available !== !1 && e++; for (var n = 0; n < J.length; n++) J[n].available !== !1 && e++; return e }, getFirstAvailablePanel: function() { for (var e = 0; e < Q.length; e++) if (Q[e].available !== !1) { if (Q[e].forMailOnly === !0 && !this.getIsMailWindow()) continue; return Q[e].id } for (var t = 0; t < J.length; t++) if (J[t].available !== !1) return J[t].id }, getLastAvailablePanel: function() { for (var e = J.length - 1; e >= 0; e--) if (J[e].available !== !1) return J[e].id; for (var t = Q.length - 1; t >= 0; t--) if (Q[t].available !== !1) { if (Q[t].forMailOnly === !0 && !this.getIsMailWindow()) continue; return Q[t].id } }, getIsLastAvailablePanel: function(e) { for (var t = J.length - 1; t >= 0; t--) if (J[t].available !== !1) return J[t].id === e; for (var n = Q.length - 1; n >= 0; n--) if (Q[n].available !== !1) return Q[n].id === e; return !0 }, getAvailablePanelByIndex: function(e) { var t = this.getAvailablePanelCount(); if (e >= t && (e = t - 1), !(e < 0)) { for (var n = 0, i = 0; i < Q.length; i++) if (Q[i].available !== !1) { if (n === e) return Q[i].id; n++ } for (var a = 0; a < J.length; a++) if (J[a].available !== !1) { if (n === e) return J[a].id; n++ } } }, getRegPanels: function() { return Q }, getWebPanels: function() { return J }, getIsWebPanel: function(e) { var t = S.getPanelPrefix(); return e.substr(0, t.length) === t }, getPanelButtonsVisible: function() { return W }, getPanelContentVisible: function() { return V }, getPanelSwitchVisible: function() { return G }, getSelectedPanel: function() { return H }, getIsWebPanelSelected: function() { var e = void 0; if (H) { var t = S.getPanelPrefix(); e = H.substr(0, t.length) === t } return e }, getSelectedWebPanelIndex: function() { var e = void 0; if (this.getIsWebPanelSelected()) for (var t = 0; t < J.length; t++) { var n = J[t]; if (n.id === H) { e = t; break } } return e }, getFocusContent: function() { return j }, getPanelWidth: function() { if (G === !0 && W === !1 && V === !1) return k; if (G === !0 && W === !0 && V === !1) return D + k; if (W === !0 && V === !1) return D; if (W === !0 && V === !0) { var e = K; if (Z.getResizableByPanel(H) === !0) { var t = Z.getWidthByPanel(H); t > 0 && (e = t) } return e <= 0 ? w : e } return 0 }, getDefaultPanel: function() { return P }, getBookmarkName: function() { return P }, getMailName: function() { return R }, getContactName: function() { return x }, getDownloadName: function() { return B }, getNotesName: function() { return U }, getHistoryName: function() { return F }, getIsMailWindow: function() { return z === O }, getIsActiveWindow: function() { return Y === O }, emitChange: function(e) { this.emit(I, e) }, addChangeListener: function(e) { this.on(I, e) }, removeChangeListener: function(e) { this.removeListener(I, e) } }); b.register(function(e) { var t = e.action; switch (t.actionType) { case N.PANEL_RESET_PANELS: i(t.key); break; case N.PANEL_SET_ACTIVE_WINDOW_ID: Y = t.windowId; break; case N.PANEL_SET_AVAILABLE: c(t.panel, t.available); break; case N.PANEL_SET_CONTENT_VISIBLE: h(t.visible); break; case N.PANEL_SET_FOCUS: m(); break; case N.PANEL_SET_MAIL_WINDOW_ID: z = t.windowId; break; case N.PANEL_SET_RESIZABLE: u(t.panel, t.resizable); break; case N.PANEL_SET_PANELS: g(t.key, t.value, null === t.oldValue); break; case N.PANEL_SET_STATE: f(t.state); break; case N.PANEL_SET_SWITCHER_VISIBLE: G = t.visible; break; case N.PANEL_SET_WIDTH: r(t.panel, t.width); break; case N.PANEL_SHOW_NEXT: p(t.DIRECTION); break; case N.PANEL_SHOW_CONTENT: o(t.panel, t.show, t.setFocus); break; case N.PANEL_TOGGLE_CONTENT: l(t.panel); break; case N.PANEL_TOGGLE_PANEL: d(); break; default: return !0 } return Z.emitChange(""), !0 }), e.exports = Z }, function(e, t) { // ========================= // Function_59 // ========================= "use strict"; var n = function() { return navigator.platform.indexOf("Linux") !== -1 ? "linux" : navigator.platform.indexOf("MacIntel") !== -1 ? "mac" : "win" }; e.exports = n }, , , , , , function(e, t, n) { // ========================= // Function_65 // ========================= (function(t) { "use strict"; function i(e) { return Array.isArray(e) ? e : Array.from(e) } function a(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (!e) throw TypeError("No url provided"); t = Object.assign({ inCurrent: null == t.inBackground, isTyped: !0 }, t), u.openURL(e.replace(/ /g, "%20"), t) } function r(e, t) { var n = _(e).split(" "), i = n[0] || ""; return p.getSync("SEARCH_ENGINES").some(function(e) { return e.Keyword.toLowerCase() === i.toLowerCase() }) } function s(e) { e && e.allHistory && h.handleViewAction({ actionType: m.NAVIGATION_HISTORY_ALL_DELETED }) } function o(e) { null != e.isReaderable && h.handleViewAction({ actionType: m.READERABLE, isReaderable: e.isReaderable, pageId: e.pageId }) } var l = n(231), c = n(172), u = n(15), A = n(17), d = n(232), h = n(8), m = n(6), p = n(3), f = n(4), g = n(826), _ = n(404), v = n(10), b = { clearUrlfieldState: function(e) { h.handleViewAction({ actionType: m.URLFIELD_CLEAR_STATE, pageId: e }) }, setUrlfieldState: function(e, t) { h.handleViewAction({ actionType: m.URLFIELD_SET_STATE, pageId: e, state: t }) }, clearSelection: function(e) { h.handleViewAction({ actionType: m.URLFIELD_SET_STATE, pageId: e, state: { selectionStart: -1, selectionEnd: -1 } }) }, addTypedHistory: function(e, n) { var i = p.getSync("URLFIELD_TYPED_HISTORY_ENABLED") === !0, a = A.getActivePage().get("incognito") !== !1; i && !a && t.nextTick(function() { h.handleViewAction({ actionType: m.NAVIGATION_ADD_TYPED_HISTORY, title: n, url: e, when: Date.now() }) }) }, goSearchURL: function(e) { function t(e, t, n) { e = e.replace("%s", encodeURIComponent(t)), e = e.replace("%S", t), a(e, n), n.addTypedSearchHistory === !0 && d.addTypedSearchHistory(t) } var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return e = _(e), n.useSearchEngineURL ? t(n.useSearchEngineURL, e, n) : void p.get(["SEARCH_ENGINES", "DEFAULT_SEARCH_ENGINE"], function(i) { var a = void 0; for (a = 0; a < i.SEARCH_ENGINES.length; a++) if (e.toLowerCase().startsWith(i.SEARCH_ENGINES[a].Keyword.toLowerCase() + " ")) return t(i.SEARCH_ENGINES[a].Url, e.substr(i.SEARCH_ENGINES[a].Keyword.length + 1), n); for (a = 0; a < i.SEARCH_ENGINES.length; a++) if (parseInt(i.SEARCH_ENGINES[a].Id) === parseInt(i.DEFAULT_SEARCH_ENGINE)) return t(i.SEARCH_ENGINES[a].Url, e, n) }) }, go: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; e = [].concat(e), e.forEach(function(n, s) { if ("string" == typeof n && n.length > 0) { if (e.length > 1 && (t.inBackground = s !== e.length - 1), n.startsWith("?")) return b.goSearchURL(n.substr(1), t); v.utilities.isUrlValid(n, function(e) { e.urlValid && e.schemeValid ? a(n, t) : ! function() { var e = "http://" + n, s = n.split("/"), o = i(s), l = o[0], c = o.slice(1), u = "http://" + l; c.length && (u += c.join("/").replace(/\s/g, "+")), g(u) ? v.utilities.isUrlValid(u, function(i) { i.urlValid && i.schemeValid ? a(e, t) : b.goSearchURL(n, t) }) : r(n) || t.enableSearch === !0 && (!n.includes("/") || n.includes(" ")) ? b.goSearchURL(n, t) : a(e, t) }() }), n && t.addTypedHistory && b.addTypedHistory(n) } }) }, showTypedHistory: function() { h.handleViewAction({ actionType: m.URLFIELD_TYPED_HISTORY_SHOW }) }, hideTypedHistory: function() { h.handleViewAction({ actionType: m.URLFIELD_TYPED_HISTORY_HIDE }) }, deleteHistory: function(e) { h.handleViewAction({ actionType: m.URLFIELD_HISTORY_DELETE, url: e }) }, deleteTypedHistory: function(e) { h.handleViewAction({ actionType: m.URLFIELD_TYPED_HISTORY_DELETE, url: e }) }, readerableActive: function(e) { l.addContentScript(e.get("id"), "Reader View") }, readerableInactive: function(e) { l.removeContentScript(e.get("id"), "Reader View") }, readerableToggle: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : A.getActivePage(); (c.getPageScripts(e.get("id")).get("Reader View") === !0 && this.readerableInactive || this.readerableActive)(e) }, load: function() { var e = p.getSync("TYPED_HISTORY"); h.handleViewAction({ actionType: m.URLFIELD_TYPED_HISTORY_INIT, typedHistory: e }) } }; f.history.onVisitRemoved.addListener(s), f.runtime.onMessage.addListener(o), e.exports = b }).call(t, n(16)) }, function(e, t) { // ========================= // Function_66 // ========================= "use strict"; e.exports = null }, , , , , , function(e, t) { // ========================= // Function_72 // ========================= "use strict"; var n = { kVivaldiTabZoom: "vivaldi.tab_zoom_enabled", kVivaldiHomepage: "vivaldi.home_page", kDeferredTabLoadingAfterRestore: "vivaldi.deferred_tab_loading_after_restore", kAlwaysLoadPinnedTabAfterRestore: "vivaldi.always_load_restored_pinned_tabs", kVivaldiNumberOfDaysToKeepVisits: "vivaldi.days_to_keep_visits", MESSAGE_START_DRAGGING: "vivaldiStartDragging", MESSAGE_END_DRAGGING: "vivaldiEndDragging" }; e.exports = n }, function(e, t, n) { // ========================= // Function_73 // ========================= "use strict"; var i = n(27), a = n(114), r = ["id", "index", "windowId", "openerTabId", "active", "pinned", "audible", "url", "title", "favIconUrl", "incognito", "sessionId", "discarded"], s = function(e) { return o(new a, e) }, o = function(e) { for (var t = arguments.length, n = Array(t > 1 ? t - 1 : 0), a = 1; a < t; a++) n[a - 1] = arguments[a]; return n.reduce(function(e, t) { var n = Object.keys(t).reduce(function(e, n) { return r.indexOf(n) !== -1 ? e.set(n, t[n]) : e }, e), a = {}; if (t.extData) try { a = JSON.parse(t.extData) } catch (e) { a = {} } return n = n.set("extData", (n.extData || i.Map()).merge(a)) }, e.asMutable()).asImmutable() }; t.tabToPage = s, t.updatePage = o }, function(e, t, n) { // ========================= // Function_74 // ========================= "use strict"; var i = n(10), a = n(204), r = a.fromPairs, s = a.map, o = function(e) { return [e.name, e.value] }, l = { allItems: [], flagsCache: {}, kDragTabsOutOfWindow: "drag_tabs_out_of_window", kNewHistoryPage: "new_history_page", kHueIntegration: "hue_integration", loadPromise: function(e) { var t = this; return new Promise(function(e) { return t.loadAllFlags_(function(n) { t.flagsCache = Object.assign(t.flagsCache, n), e() }) }) }, loadAllFlags_: function(e) { var t = this; i.runtimePrivate.getAllFeatureFlags(function(n) { t.allItems = n, e(r(s(o, n))) }) }, isEnabled: function(e) { return !!this.flagsCache.hasOwnProperty(e) && "true" === this.flagsCache[e] }, enableFeature: function(e, t) { var n = this; return this.flagsCache.hasOwnProperty(e) && i.runtimePrivate.setFeatureEnabled(e, t, function(i) { return i ? (n.flagsCache[e] = t ? "true" : "false", !0) : void console.warn("Enabling feature failed: " + e) }), !1 }, getFlags: function() { return this.allItems } }; Object.keys(l).filter(function(e) { return "function" == typeof l[e] }).forEach(function(e) { return l[e] = l[e].bind(l) }), e.exports = window.VivaldiFeatureFlags = l }, , , , , , function(e, t) { // ========================= // Function_80 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_81 // ========================= e.exports = '\n \n\n' }, , , , , , function(e, t, n) { // ========================= // Function_87 // ========================= "use strict"; var i = n(18).EventEmitter, a = n(8), r = n(6), s = "change", o = {}, l = {}, c = "", u = Object.assign({}, i.prototype, { emitChange: function() { this.emit(s) }, emitChangeParam: function(e) { this.emit(s, e) }, addChangeListener: function(e) { this.on(s, e) }, removeChangeListener: function(e) { this.removeListener(s, e) }, isFindInPageOpen: function(e) { return o[e.get("id")] === !0 }, getFindResultsForPage: function(e) { var t = l[e.get("id")]; return void 0 === t && (t = { activeMatchOrdinal: 0, numberOfMatches: 0, searchText: c, canceled: !1, matchCase: !1 }), t.isFindInPageToolbarOpen = o[e.get("id")] === !0 || !1, t } }); a.register(function(e) { var t = e.action; switch (t.actionType) { case r.WEBPAGEVIEW_ACTIONS: "findInPage" === t.action ? o[t.page.get("id")] = !0 : "findNextInPage" === t.action || "findPreviousInPage" === t.action ? o[t.page.get("id")] !== !0 && (o[t.page.get("id")] = !0, u.emitChangeParam({ type: r.WEBPAGEVIEW_ACTIONS, action: "findInPage", page: t.page })) : "focusWebView" !== t.action && "focusSearchField" !== t.action || u.emitChangeParam({ type: r.URLFIELD_BLUR }), u.emitChangeParam({ type: r.WEBPAGEVIEW_ACTIONS, action: t.action, page: t.page, modifiers: t.modifiers }); break; case r.NAVIGATION_SET_STATE: if (t.navigationState && "start" !== t.navigationState.get("trigger") || o[t.page.get("id")] === !1) return; o[t.page.get("id")] === !0 && (o[t.page.get("id")] = !1, u.emitChangeParam({ type: r.CLOSE_FIND_IN_PAGE_ACTION, page: t.page })); break; case r.FIND_IN_PAGE_RESULT_ACTION: o[t.page.get("id")] && (l[t.page.get("id")] = t, c = t.searchText, u.emitChangeParam(Object.assign({ type: r.FIND_IN_PAGE_RESULT_ACTION, page: t.page }, t.results))); break; case r.SHOW_FIND_IN_PAGE_ACTION: o[t.page.get("id")] ? u.emitChangeParam({ type: r.FIND_IN_PAGE_FOCUS, page: t.page }) : (o[t.page.get("id")] = !0, u.emitChangeParam({ type: r.SHOW_FIND_IN_PAGE_ACTION, page: t.page })); break; case r.CLOSE_FIND_IN_PAGE_ACTION: o[t.page.get("id")] && (o[t.page.get("id")] = !1, u.emitChangeParam({ type: r.CLOSE_FIND_IN_PAGE_ACTION, page: t.page })); break; case r.PAGE_GO: u.emitChangeParam({ type: r.PAGE_GO, index: t.index }); break; case r.PAGE_UPDATED: u.emitChangeParam({ type: t.actionType, page: t.page }); break; case r.PAGE_RELOAD: u.emitChangeParam({ type: r.PAGE_RELOAD, bypassCache: t.bypassCache }); break; case r.PAGE_STOP: case r.PAGE_BACK: case r.PAGE_FORWARD: u.emitChangeParam({ type: t.actionType }); break; case r.MAIN_SHOW_QUICKCOMMANDS: case r.PANEL_SET_FOCUS: u.emitChangeParam({ type: r.URLFIELD_BLUR }); break; default: return !0 } return !0 }), e.exports = u }, function(e, t) { // ========================= // Function_88 // ========================= "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.default = function(e) { return Boolean(e && ["ctrlKey", "altKey", "metaKey", "shiftKey"].some(function(t) { return e[t] === !0 })) } }, , , , function(e, t) { // ========================= // Function_92 // ========================= e.exports = '\r\n \r\n' }, , function(e, t, n) { // ========================= // Function_94 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function a(e, t) { return function() { e.apply(null, t) } } var r = n(52), s = n(15), o = n(8), l = n(6), c = n(3), u = n(10), A = { loadPromise: function() { return new Promise(function(e, t) { var n = []; r.getCommands().forEach(function(e) { c.addListener(e.name, A.commandChanged), n.push(e.name) }); for (var i = c.getKeysSync(n), a = [], s = 0; s < n.length; s++) { var u = i[n[s]]; void 0 !== u && a.push({ command: n[s], value: u }) } A.setConfiguration(a), o.handleViewAction({ actionType: l.COMMAND_LOAD_ICONS, resolve: e }) }) }, restoreCommandShortcutKeys: function() { r.getUserEditableCommands().forEach(function(e) { var t = c.getDefault(e.name); if (t) { var n = { shortcut: t.shortcut ? t.shortcut : null, gestures: e.gestures, showInQC: t.showInQC }; c.set(i({}, e.name, n)) } }) }, restoreCommandGestures: function() { r.getUserEditableCommands().forEach(function(e) { var t = c.getDefault(e.name); if (t) { var n = { shortcut: e.shortcut, gestures: t.gestures ? t.gestures : null, showInQC: t.showInQC }; c.set(i({}, e.name, n)) } }) }, setConfiguration: function(e) { o.handleViewAction({ actionType: l.COMMAND_SET_CONFIGURATION, commands: e }) }, commandChanged: function(e, t, n) { o.handleViewAction({ actionType: l.COMMAND_UPDATE_SINGLE_COMMAND, commandKey: n, commandValue: t }) }, runAction: function(e) { "COMMAND_OPEN_TAB" === e.commandName ? s.openPage(e.param) : A.executeActions(e.commandName) }, executeActions: function(e) { for (var t = r.getCommands(), n = 0; n < t.length; n++) if (e === t[n].name) { var i = a(t[n].action, [t[n].param]); return void i() } } }; u.showMenu.onMainMenuCommand.addListener(function(e, t) { if (document.hasFocus()) { var n = r.getHandlerFromChromeId(e, t); n ? n() : A.executeActions(r.chromeIdToCommand(e)) } }), e.exports = A }, function(e, t, n) { // ========================= // Function_95 // ========================= "use strict"; var i = n(8), a = n(6), r = { setNavigationState: function(e, t) { i.handleViewAction({ actionType: a.NAVIGATION_SET_STATE, page: e, navigationState: t }) }, setProgressState: function(e, t) { i.handleViewAction({ actionType: a.NAVIGATION_SET_PROGRESS, page: e, progressState: t }) }, setSSLState: function(e, t, n) { i.handleViewAction({ actionType: a.PAGE_SET_SSL_STATE, page: e, state: t, issuer: n }) }, addBlockedPopupEvent: function(e, t) { i.handleViewAction({ actionType: a.NAVIGATION_ADD_POPUP, page: e, popupEvent: t }) }, removeBlockedPopupEvent: function(e, t) { i.handleViewAction({ actionType: a.NAVIGATION_REMOVE_POPUP, page: e, popupEvent: t }) }, setPermission: function(e, t, n, r) { i.handleViewAction({ actionType: a.NAVIGATION_SET_PERMISSION, page: e, permission: t, requestEvent: n, blocked: r }) }, resetPermissions: function(e) { i.handleViewAction({ actionType: a.NAVIGATION_RESET_PERMISSIONS, page: e }) }, setPageHasBlockedContent: function(e, t) { i.handleViewAction({ actionType: a.NAVIGATION_SET_BLOCKED_CONTENT, page: e, content_type: t }) }, resetPageHasBlockedContent: function(e) { i.handleViewAction({ actionType: a.NAVIGATION_RESET_BLOCKED_CONTENT, page: e }) } }; e.exports = r }, function(e, t, n) { // ========================= // Function_96 // ========================= "use strict"; var i = n(4), a = n(20).urls, r = n(550), s = n(745), o = n(2); window.THUMBNAIL_UPDATE = 0; var l = 440, c = 360, u = 330, A = 270, d = { activePageThumbnailUpdates: 0, lastPageThumbnailStartTime: 0, MAX_CONCURRENT_UPDATES: 4, THUMBNAIL_TIMEOUT: 6e4, calculateDimensions_: function(e) { var t, n = e.thumbUrl && !e.captureAsBase64; return t = n ? { width: l, height: c } : { width: u, height: A } }, getPageThumbnail: function(e, t, n, i, a) { var r = this; (this.activePageThumbnailUpdates < 0 || this.activePageThumbnailUpdates > 0 && Date.now() - this.lastPageThumbnailStartTime > this.THUMBNAIL_TIMEOUT) && (console.warn("Dead or mismatched thumbnails updates, active updates: ", this.activePageThumbnailUpdates), this.activePageThumbnailUpdates = 0), this.activePageThumbnailUpdates > this.MAX_CONCURRENT_UPDATES || (this.lastPageThumbnailStartTime = Date.now(), this.activePageThumbnailUpdates++, this._updateWebviewThumbnail(n, t, i, this.calculateDimensions_(i), function(e) { r.activePageThumbnailUpdates--, e && a(e) })) }, updateBookmarkThumbnail: function(e) { e && this._requestUpdateBookmarkThumbnail(e.id, a.getUrl(e.url), "http://bookmark_thumbnail/" + e.id, function(t) { t ? i.bookmarks.update(e.id, { thumbnail: t + "?" + Date.now() }, function(e) {}.bind(this)) : console.warn("will not update thumbnail as none was generated") }.bind(this), 1024, 838, !1) }, isBookmarkThumbnailCapture: function(e) { return this._isInArrayById(e, this.thumbnailCaptureQueue) || this._isInArrayById(e, this.thumbnailCaptureActive) }, getBookmarkThumbnailCaptureBackgroundTaskInfo: function(e) { this._getFromArrayById(e, this.backgroundTasks) }, _updateOffscreenServiceThumbnail: function(e, t, n, a, r, s) { var o = window.vivaldiWindowId + "_vivaldi_window_screenshot_" + a + "x" + r + "-" + Math.random(), l = i.app.window.get(o); l ? (console.warn("Tab capture window " + o + " was already open!!"), l.close(), setTimeout(function() { this._updateOffscreenServiceThumbnailHelper(e, t, n, a, r, o, s) }.bind(this), 1e3)) : this._updateOffscreenServiceThumbnailHelper(e, t, n, a, r, o, s) }, _updateOffscreenServiceThumbnailHelper: function(e, t, n, a, r, s, o) { a = a ? a : 640, r = r ? r : 500, i.app.window.create("components/thumbnail/capture.html", { id: s, outerBounds: { left: 100, top: 5e3, width: 1024, height: 838 }, frame: "none", hidden: !1, focused: !1, thumbnailWindow: !0 }, function(i) { var l = !1, c = function() { var s = i.contentWindow.document.getElementById("capture_view"); if (!s) return console.warn("Unable to create capture window with capture_view element!"), i.contentWindow.close(), void(n && n(void 0)); var c, u = function() { s.setVisible(!0), this._updateWebviewThumbnail(s, 100, { thumbUrl: t, incognito: o }, { width: a, height: r }, function(e) { c(e) }.bind(this)) }.bind(this), A = function() {}.bind(this); c = function(e) { l = !0, s.removeEventListener("loadstop", u), s.removeEventListener("loadabort", A), i.contentWindow.close(), n && n(e) }.bind(this), s.addEventListener("loadstop", u), s.addEventListener("loadabort", A), s.src = e; var d = 6e4; setTimeout(function() { l || (console.warn("Capture thumbnail operation timeout after " + d / 1e3 + "s for " + e), c(void 0)) }, d) }.bind(this); i.isOpen ? (c(), console.warn("Tab capture window " + s + " was already open!!")) : (i.isOpen = !0, i.contentWindow.addEventListener("load", c)) }.bind(this)) }, _updateWebviewThumbnail: function(e, t, n, a, r) { t = t || 0, a = a || this.calculateDimensions_(n); var s = function(e) { i.runtime.lastError && r && r(void 0), e && r && r(e) }.bind(this), o = function() { var t = n.thumbUrl && !n.captureAsBase64, i = Object.assign({ incognito: n.incognito }, a); t ? e.addToThumbnailService(n.thumbUrl, i, s) : e.getThumbnail(a, s) }; t ? setTimeout(o, t) : o() }, thumbnailCaptureQueue: [], thumbnailCaptureActive: [], thumbnailCaptureMaxActive: 1, thumbnailCaptureProcessId: "thumbnailCapture", backgroundTasks: [], _requestUpdateBookmarkThumbnail: function(e, t, n, i, a, s, l) { if (!this.isBookmarkThumbnailCapture(e)) { if (this.thumbnailCaptureQueue.push({ id: e, url: t, thumbUrl: n, callback: i, width: a, height: s, incognito: l }), this.thumbnailCaptureActive.length >= this.thumbnailCaptureMaxActive) { var c = this._getFromArrayById(this.thumbnailCaptureProcessId, this.backgroundTasks); return c && (c.description = o("$1 bookmark waiting for update.", "$1 bookmarks waiting for update.", [this.thumbnailCaptureQueue.length]), c.text = this.thumbnailCaptureQueue.length + 1), void r.setBackgroundTasks(this.backgroundTasks) } this._processCaptureQueue() } }, _processCaptureQueue: function() { var e = this._getFromArrayById(this.thumbnailCaptureProcessId, this.backgroundTasks); if (e || (e = new s(this.thumbnailCaptureProcessId, "", "Thumbnail Capture", { backgroundImage: "url(/resources/reload-status@2x.png)", backgroundColor: "transparent", backgroundSize: "16px 16px", animation: "spin 2s infinite linear", display: "inline-block", minWidth: "16px", padding: "0px" }, "", [{ name: o("Cancel"), handler: function() { this.thumbnailCaptureQueue = [] }.bind(this) }]), this.backgroundTasks.push(e)), 0 === this.thumbnailCaptureQueue.length) return void(0 === this.thumbnailCaptureActive.length && (this._removeFromArrayById(this.thumbnailCaptureProcessId, this.backgroundTasks), r.setBackgroundTasks(this.backgroundTasks))); var t = this.thumbnailCaptureQueue.shift(); this.thumbnailCaptureActive.push(t); var n = function(e) { t.callback && t.callback(e), this._removeFromArrayById(t.id, this.thumbnailCaptureActive), setTimeout(function() { this._processCaptureQueue() }.bind(this), 500) }.bind(this); this._updateOffscreenServiceThumbnail(t.url, t.thumbUrl, n, t.width, t.height, t.incognito), e.title = o("Updating thumbnail for $1", [t.url]), e.description = o("$1 bookmark waiting for update.", "$1 bookmarks waiting for update.", [this.thumbnailCaptureQueue.length]), e.text = this.thumbnailCaptureQueue.length + 1, r.setBackgroundTasks(this.backgroundTasks) }, _getFromArrayById: function(e, t) { for (var n = 0; n < t.length; n++) if (t[n].id === e) return t[n]; return null }, _isInArrayById: function(e, t) { return !!this._getFromArrayById(e, t) }, _removeFromArrayById: function(e, t) { for (var n = 0; n < t.length; n++) t[n].id === e && t.splice(n, 1) } }; e.exports = d }, function(e, t, n) { // ========================= // Function_97 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { var n = e || z; return e && e.h && Array.isArray(e.h) && e.h.length > V && (n.h = R(e.h, V)), n && n.h && t && (n.h = n.h.filter(function(e) { return e.u !== t })), n } function r(e) { return x(e, function(e, t, n) { return "t" === n ? e.title = t : "u" === n ? e.url = t : "w" === n && (e.when = t), e }, {}) } function s(e) { return B(e ? e.h : [], r) } function o(e) { if ("function" != typeof e) throw TypeError("loadTypedHistory: callback required"); var t = w.getSync("TYPED_HISTORY"); l(t, e) } function l(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : P, n = z; try { e && (n = JSON.parse(e)) } catch (e) { console.warn("Unable to parse typed history JSON. TODO: fix!", e) } n && t(n) } function c(e) { var t = e.title, n = e.when, i = e.url; o(function(e) { var r = a(e, i), o = { u: i }; t && (o.t = t), o.w = n || Date.now(), r.h = [o].concat(r.h), w.set({ TYPED_HISTORY: JSON.stringify(r) }), K = s(r), J.emitChange() }) } function u() { w.remove("TYPED_HISTORY"), K = [], J.emitChange() } function A(e) { y.default.history.deleteUrl({ url: e }, J.emitChange) } function d(e, t) { var n = { h: Array.from(e.h).filter(function(e) { return !t.includes(e.u) || D(e.u) !== D(t) }) }; w.set({ TYPED_HISTORY: JSON.stringify(n) }), K = s(n) } function h(e) { o(function(t) { d(t, e), J.emitChange(O.URLFIELD_TYPED_HISTORY_DELETE) }) } function m(e) { var t = e.since, n = e.dataTypes.typedHistory; if (null == n || "boolean" === !("undefined" == typeof n ? "undefined" : v(n))) throw TypeError("Typed history must be true or false"); o(function(e) { var n = { h: Array.from(e.h).filter(function(e) { var n = e.w; return t - n > 0 }) }; w.set({ TYPED_HISTORY: JSON.stringify(n) }), K = s(n), J.emitChange(O.URLFIELD_TYPED_HISTORY_DELETE) }) } function p(e, t) { var n = (e || "").toString(); if (e) { var i = W[n] || {}; W[n] = Object.assign({}, i, t), H("set state", e, "next", t, "old", i, "now", W[n]) } } function f(e) { if (null != e) { for (var t = (e || "").toString(), n = !1, i = arguments.length, a = Array(i > 1 ? i - 1 : 0), r = 1; r < i; r++) a[r - 1] = arguments[r]; return 0 === a.length ? W[t] = U(W[t], function(e, t) { return t.startsWith("isReaderable") }) : a.forEach(function(e) { delete W[t][e], n = !0 }), n } } function g() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; Array.isArray(e) && e.forEach(function(e) { var t = e.id; return delete W[t] }) } function _(e) { l(e, function(e) { K = s(e), J.emitChange() }) } var v = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, b = n(172), N = i(b), E = n(90), S = i(E), T = n(4), y = i(T), C = n(17), I = n(8), O = n(6), w = n(3), D = n(116), k = n(18), M = k.EventEmitter, L = n(7), P = L.noop, R = L.take, x = L.reduce, B = L.map, U = L.pickBy, F = L.get, H = (0, S.default)("urlbarstore"), V = 50, W = {}, G = !1, K = [], j = !1, z = { h: [] }, Y = { editUrl: void 0, isActive: !1, hasLostFocus: !1, isOmniDropdownOpen: !1, isReaderable: !1, isReaderableActive: !1, selectionEnd: -1, selectionStart: -1 }, J = Object.assign({}, M.prototype, { getUrlfieldState: function(e) { return this.getUrlfieldStateFromId(e.get("id")) }, getUrlfieldStateFromId: function(e) { var t = Object.assign({}, null != e ? W[e.toString()] : {}), n = Object.keys(Y).reduce(function(e, t) { return void 0 === e[t] && (e[t] = Y[t]), e }, t); return n }, showTypedHistory: function() { return G === !0 }, getTypedHistory: function(e) { return "function" == typeof e ? K.filter(e) : K }, emitChange: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; this.emit(O.CHANGED, e) }, addChangeListener: function(e) { this.on(O.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(O.CHANGED, e) } }); I.register(function(e) { var t = e.action; switch (t.actionType) { case O.URLFIELD_SET_STATE: p(t.pageId, t.state), J.emitChange(); break; case O.NAVIGATION_SET_STATE: if (t.navigationState.get("isLoading") === !1 && (j = !1, "abort" === t.navigationState.get("trigger"))) { var n = t.page.get("id"); W[n] && !W[n].editUrl && f(n), h(t.navigationState.get("webviewUrl")), J.emitChange() } break; case O.CHROME_TABS_CREATED: j = !0; break; case O.CHROME_TABS_UPDATED: "loading" === t.args[1].status && (C.isActivePage(t.args[0]) || f(t.args[0])); break; case O.NAVIGATION_ADD_TYPED_HISTORY: c(t); break; case O.NAVIGATION_HISTORY_ALL_DELETED: u(); break; case O.URLFIELD_TYPED_HISTORY_DELETE: h(t.url); break; case O.PAGE_RELOAD: f(C.getActivePage().get("id")), J.emitChange(); break; case O.PAGE_CLOSE: g(t.pages); break; case O.URLFIELD_TYPED_HISTORY_SHOW: G !== !0 && (G = !0, J.emitChange()); break; case O.URLFIELD_HISTORY_DELETE: A(t.url); break; case O.READERABLE: p(t.pageId, { isReaderable: t.isReaderable, isReaderableActive: N.default.getPageScripts(t.pageId).get("Reader View") === !0 || !1 }), J.emitChange(); break; case O.CONTENT_SCRIPT_PAGE_ADD: "Reader View" === t.script && (p(t.pageId, { isReaderableActive: !0 }), J.emitChange()); break; case O.CONTENT_SCRIPT_PAGE_REMOVE: "Reader View" === t.script && (p(t.pageId, { isReaderableActive: !1 }), J.emitChange()); break; case O.URLFIELD_CLEAR_STATE: j === !1 && f(t.pageId) && setTimeout(function() { return J.emitChange() }, 16); break; case O.URLFIELD_TYPED_HISTORY_HIDE: G !== !1 && (G = !1, J.emitChange()); break; case O.URLFIELD_TYPED_HISTORY_INIT: _(t.typedHistory); break; case O.BROWSING_DATA_REMOVED: F(t, "dataTypes.typedHistory") === !0 && m(t) } }), e.exports = J }, function(e, t) { // ========================= // Function_98 // ========================= "use strict"; var n = 1, i = 2, a = 3, r = function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : i, t = arguments[1]; return function(a, r) { return e <= n ? 0 : (t && (a = a[t], r = r[t]), a || r ? a ? r ? "number" == typeof a && "number" == typeof r ? e === i ? a - r : r - a : (a = a.toString().toLowerCase(), r = r.toString().toLowerCase(), a > r ? e === i ? 1 : -1 : a < r ? e === i ? -1 : 1 : 0) : e === i ? -1 : 1 : e === i ? 1 : -1 : 0) } }, s = function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : r(), n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "children", i = function e(i) { var a = !0, r = !1, s = void 0; try { for (var o, l = i[Symbol.iterator](); !(a = (o = l.next()).done); a = !0) { var c = o.value, u = c[n]; Array.isArray(u) && e(u) } } catch (e) { r = !0, s = e } finally { try { !a && l.return && l.return() } finally { if (r) throw s } } i.sort(t) }; i(e) }; e.exports = { treeSort: s, getDefaultComparator: r, NO_SORTING: n, ASCENDING_SORT: i, DESCENDING_SORT: a } }, , , , , , , , , , function(e, t) { // ========================= // Function_108 // ========================= "use strict"; e.exports = { VIVALDI_ROOT_BOOKMARK_FOLDER: "1", PLACEHOLDER_URL: "http://bookmark.placeholder.url/" } }, function(e, t, n) { // ========================= // Function_109 // ========================= (function(t) { "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/VivaldiTreeList.jsx", a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = n(1), s = n(11), o = n(40), l = n(45), c = n(50), u = n(37), A = n(9), d = n(1116), h = n(575), m = n(576), p = n(577), f = n(98), g = n(69), _ = n(3), v = n(249), b = n(30), N = n(88).default, E = 1200, S = -1, T = 24, y = 700, C = "F2", I = { id: S, position: "" }, O = r.createClass({ displayName: "VivTree", mixins: [A, h], inlineEditTimeoutId: -1, expandTimer: void 0, expandId: -1, canSaveScrollTop: !1, propTypes: { settings: r.PropTypes.string, nodes: r.PropTypes.array.isRequired, hasChildren: r.PropTypes.func.isRequired, enableDragAndDrop: r.PropTypes.bool, treeType: r.PropTypes.oneOf(["simple", "variable", "uniform"]), allFoldersExpandedOnLoad: r.PropTypes.bool }, getDefaultProps: function() { return { enableDragAndDrop: !0, treeType: "uniform" } }, getInitialState: function() { var e = {}; return this.props.allFoldersExpandedOnLoad ? e = this.getAllFoldersExpandedModel(this.props.nodes) : (this.props.settings && (e = _.getSync("EXPAND_" + this.props.settings) || {}), this.prepareNodesForRender(this.props.nodes, e)), { dragOverObj: I, hasFocus: !1, expandModel: e, renderedArray: this.getRenderedItems(this.props.nodes, e, this.props.sorting), cutIds: this.props.getCutIds ? this.props.getCutIds() : [], inlineEditId: -1, inlineEditText: "" } }, _initializeSettings: function(e) { this._expandSettings = "EXPAND_" + e.settings, this._scrollTopSettings = "SCROLL_TOP_" + e.settings, this._searchStyleSettings = "SEARCH_STYLE_" + e.settings; var t = {}; t = this.props.allFoldersExpandedOnLoad ? this.getAllFoldersExpandedModel(this.props.nodes) : _.getSync(this._expandSettings) || this.state.expandModel || {}, this.prepareDataForRender(e.nodes, t) }, _updateSelectionStateIfNeeded: function(e) { if (e.settings) { this._selectionSettings = "SELECTION_" + e.settings; var t = _.getSync(this._selectionSettings); t && this.updateSelectionState(t) } }, componentWillMount: function() { this._updateSelectionStateIfNeeded(this.props) }, componentDidMount: function() { var e = this; this.props.settings && (this._initializeSettings(this.props), t.nextTick(function() { e.refs.treeItems && (e.canSaveScrollTop = !0, e.refs.treeItems.scrollTop = _.getSync(e._scrollTopSettings)) })) }, componentWillReceiveProps: function(e) { if (e.settings !== this.props.settings) this._initializeSettings(e), this._updateSelectionStateIfNeeded(e); else { var t = {}; if (Object.keys(this.state.expandModel).length > 0 && this.props.allFoldersExpandedOnLoad) { var n = this.getAllFoldersExpandedModel(e.nodes); t = Object.assign(n, this.state.expandModel) } else t = this.state.expandModel; this.prepareDataForRender(e.nodes, t) } this.props.sorting !== e.sorting && this._onSortChange(e.sorting) }, componentDidUpdate: function(e, t) { if (this.state.renderedArray.length === t.renderedArray.length && this.rerenderVisibleTreeItems(), this.canSaveScrollTop) { var n = {}; n[this._scrollTopSettings] = this.refs.treeItems.scrollTop, _.set(n) } }, componentWillUnmount: function() { var e = this.getKeyEventMap(); Object.keys(e).forEach(function(t) { return u.unbind(t, e[t]) }), this.stopInlineEditTimer(), this.resetAutoExpandTimer() }, _onSortChange: function(e) { var t = this.getRenderedItems(this.props.nodes, this.state.expandModel, e); this.setState({ renderedArray: t }) }, prepareNodesForRender: function(e, t) { var n = this, i = function e(i) { n.props.hasChildren(i) && i.children.forEach(function(n) { n.level = i.level + 1, i.isExpanded = !!t[i.id], e(n) }) }, a = !0, r = !1, s = void 0; try { for (var o, l = e[Symbol.iterator](); !(a = (o = l.next()).done); a = !0) { var c = o.value; c.level = 0, i(c) } } catch (e) { r = !0, s = e } finally { try { !a && l.return && l.return() } finally { if (r) throw s } } }, prepareDataForRender: function(e, t) { var n = this; this.prepareNodesForRender(e, t); var i = this.getRenderedItems(e, t, this.props.sorting), a = g(this.state, { renderedArray: { $set: i }, expandModel: { $set: t } }); this.setState(a, function() { n._pendingSelectId && (n.selectById(n._pendingSelectId), n._pendingSelectId = void 0) }) }, setCutIds: function(e) { this.setState({ cutIds: e }) }, onCut: function(e) { var t = this, n = this.SelectionMixinGetAllSelected().filter(function(e) { return t.props.isValidForClipboard(e) }).map(function(e) { return e.id }); this.props.onCutToClipboard ? this.props.onCutToClipboard(e, n) : (this.setCutIds(n), this.setClipboard(e, !0)) }, onCopy: function(e) { var t = this; if (this.props.onCopyToClipboard) { var n = this.getAllSelectedItems(!0).filter(function(e) { return t.props.isValidForClipboard(e) }).map(function(e) { return e.id }); this.props.onCopyToClipboard(e, n) } else this.setClipboard(e, !1) }, toggleSelectedExpansion: function() { this.stopInlineEditTimer(); var e = this.SelectionMixinGetLead(); if (e !== S && this.state.inlineEditId !== e) { var t = this.findTreeItem(e); this.props.isFolder(t) && this.toggleExpandModel(t.id) } }, toggleExpandModel: function(e) { this.state.expandModel[e] = !this.state.expandModel[e], this.saveExpandModel(this.state.expandModel), this.prepareDataForRender(this.props.nodes, this.state.expandModel) }, saveExpandModel: function(e) { if (!this.props.allFoldersExpandedOnLoad) { var t = {}; t[this._expandSettings] = e, _.set(t) } }, saveSelectionModel: function() { var e = {}; e[this._selectionSettings] = this.state.selectionModel.getData(), _.set(e) }, _findTreeIndex: function(e) { return this.state.renderedArray.findIndex(function(t) { return t.id === e }) }, _scrollLeadNodeIntoView: function() { var e = this._findTreeIndex(this.SelectionMixinGetLead()); this.scrollIntoView(e) }, collapseAll: function() { this.saveExpandModel({}), this.prepareDataForRender(this.props.nodes, {}), this._scrollLeadNodeIntoView() }, getAllFoldersExpandedModel: function(e) { var t = this, n = {}, i = function e(i) { t.props.isFolder(i) && (n[i.id] = !0), t.props.hasChildren(i) && i.children.forEach(e) }; return e.forEach(i), n }, expandAll: function() { var e = this.getAllFoldersExpandedModel(this.props.nodes); this.saveExpandModel(e), this.prepareDataForRender(this.props.nodes, e), this._scrollLeadNodeIntoView() }, setClipboard: function(e, t) { var n = this, i = this.SelectionMixinGetAllSelected(), a = this.findTreeItem(this.SelectionMixinGetLead()), r = [], s = "", o = function e(t) { if (n.props.isValidForClipboard(t)) { var a = !0, o = !1, l = void 0; try { for (var c, u = i[Symbol.iterator](); !(a = (c = u.next()).done); a = !0) { var A = c.value; if (A.id === t.id) { r.push(t), s += (t.url || t.title) + "\n"; break } } } catch (e) { o = !0, l = e } finally { try { !a && u.return && u.return() } finally { if (o) throw l } } t.children && t.children.forEach(e) } }; if (this.props.nodes.forEach(o), e.clipboardData.setData("isCut", t), e.clipboardData.setData("text/plain", s), e.clipboardData.setData("application/json", JSON.stringify(r)), !this.props.textOnlyClipboard && a && a.url && a.title) { var l = "" + a.title + ""; e.clipboardData.setData("text/html", l) } e.stopPropagation(), e.preventDefault() }, onPaste: function(e) { var t = this; if (this.props.onPasteFromClipboard) { var n = this.SelectionMixinGetSelected(); return void(n !== S && this.props.onPasteFromClipboard(e, n).then(function(e) { e.isCut === !0 && t.setCutIds([]), t.state.selectionModel.setSelectedIds(e.ids) })) } var i = []; try { i = JSON.parse(e.clipboardData.getData("application/json")) } catch (e) {} var a = { index: 0 }, r = this.SelectionMixinGetSelected(); if (r !== S) { var s = this.findTreeItem(r); s && (this.props.isFolder(s) ? a.parentId = s.id : (a.parentId = s.parentId, a.index = s.index + 1)) } var o = "true" === e.clipboardData.getData("isCut"); if (o) { if (0 === this.state.cutIds.length) return; this.props.onMove(i, a).then(function(e) { t.setCutIds([]), t.state.selectionModel.setSelectedIds(e.map(function(e) { return e.id })), e.length > 0 && t.props.onSelect && t.props.onSelect(e[0]) }) } else { var l = a.index, c = !0, u = !1, A = void 0; try { for (var d, h = i[Symbol.iterator](); !(c = (d = h.next()).done); c = !0) { var m = d.value; m.parentId = a.parentId, m.index = l++ } } catch (e) { u = !0, A = e } finally { try { !c && h.return && h.return() } finally { if (u) throw A } } this.props.onCreate(i).then(function(e) { t.state.selectionModel.setSelectedIds(e.map(function(e) { return e.id })) }) } }, getKeyEventMap: function() { var e = "MacIntel" === navigator.platform; return Object.assign({ up: this.onKeyArrowUp, down: this.onKeyArrowDown, left: this._collapseFolderOrSelectParent, right: this._expandFolder, del: this.onKeyDelete, home: this.onKeyHome, end: this.onKeyEnd, esc: this.onKeyEsc, "shift+up": this.onKeyArrowUp, "shift+down": this.onKeyArrowDown, "shift+home": this.onKeyHome, "shift+end": this.onKeyEnd }, e ? { "meta+a": this.onKeySelectAll, "meta+left": this._collapseFolderOrSelectParent, "meta+right": this._expandFolder, "meta+backspace": this.onKeyDelete } : { "ctrl+a": this.onKeySelectAll, "ctrl+left": this._collapseFolderOrSelectParent, "ctrl+right": this._expandFolder, "ctrl+space": this.onKeyCtrlSpace, "ctrl+up": this.onKeyCtrlUp, "ctrl+down": this.onKeyCtrlDown }) }, onLostFocus: function() { this.stopInlineEditTimer(); var e = this.getKeyEventMap(); Object.keys(e).forEach(function(t) { return u.unbind(t, e[t]) }), this.setState({ hasFocus: !1, cutItem: [] }) }, onGotFocus: function() { var e = this; this.state.inlineEditId === -1 && ! function() { var t = e.getKeyEventMap(); Object.keys(t).forEach(function(e) { return u.bind(e, t[e]) }), e.setState({ hasFocus: !0 }) }() }, scrollIntoView: function(e) { this.refs.treeListEntries && this.refs.treeListEntries.scrollAround(e) }, selectById: function(e, t, n) { var i = this.findTreeItem(e) || { id: e }; return this.props.onSelect && this.props.onSelect(i), e === S ? void this.SelectionMixinSelectItem(e) : (n || (n = this._findTreeIndex(e)), this.scrollIntoView(n), t ? this.SelectionMixinSelectItem(e, t.ctrlKey, t.shiftKey, t.metaKey, "contextmenu" === t.type) : this.SelectionMixinSelectItem(e), void this.saveSelectionModel()) }, scrollToId: function(e) { this.scrollIntoView(this._findTreeIndex(e)) }, onClick: function() { this.selectById(S) }, onItemClick: function(e, t) { this.props.onItemClick && this.props.onItemClick(t) }, onItemDoubleClick: function(e, t) { this.stopInlineEditTimer(), !this.props.isFolder(e) && this.props.onItemDoubleClick && this.props.onItemDoubleClick(t, e) }, onItemMouseDown: function(e, t) { var n = this.SelectionMixinGetAllSelected(), i = !1, a = !0, r = !1, s = void 0; try { for (var o, l = n[Symbol.iterator](); !(a = (o = l.next()).done); a = !0) { var c = o.value; if (c.id === e.id) { i = !0; break } } } catch (e) { r = !0, s = e } finally { try { !a && l.return && l.return() } finally { if (r) throw s } } this.state.hasFocus && i && 1 === n.length && 0 === t.button && !N(t) ? this.startInlineEditTimerForId(e.id) : this.stopInlineEditTimer(); var u = "MacIntel" === navigator.platform ? t.metaKey : t.ctrlKey; (!i || u || this.props.reselectionAllowed) && this.selectById(e.id, t), "function" == typeof this.props.onItemMouseDown && this.props.onItemMouseDown(e, t) }, onItemMouseUp: function(e, t) { var n = this.SelectionMixinGetAllSelected(), i = "MacIntel" === navigator.platform ? t.metaKey : t.ctrlKey; n.length > 1 && 2 !== t.button && !i && this.selectById(e.id, t), "function" == typeof this.props.onItemMouseUp && this.props.onItemMouseUp(e, t) }, onContextMenuOpen: function(e, t) { this.scrollIntoView(t.treeIndex) }, rerenderVisibleTreeItems: function() { this.refs.treeListEntries && this.refs.treeListEntries.forceUpdate() }, onAdd: function(e) { var t = this, n = this.SelectionMixinGetSelected(), i = void 0; n && n !== S && (i = this.findTreeItem(n), this.props.isValidAddTarget(i) || (i = null)); var a = { children: e ? [] : void 0, isNew: !0 }; i ? this.props.isFolder(i) ? (i.isExpanded || this.toggleExpandModel(i.id), a.parentId = i.id) : a.parentId = i.parentId : a.parentId = this.props.rootId || 0, this.props.onCreate(a).then(function(e) { e && 1 === e.length && (t.SelectionMixinUnSelectAll(), t._pendingSelectId = e[0].id) }) }, onDelete: function(e) { var t = this.SelectionMixinGetAllSelected().map(function(e) { return e.id }); return e === !0 && this.props.validateForDeletion && (t = this.props.validateForDeletion(t)), this.onDeleteItems(t) }, onDeleteItems: function(e) { var t = this; if (!(e && e.length > 0)) return Promise.resolve(); var n = function() { var n = Math.min(t._findTreeIndex(t.SelectionMixinGetLead()), t._findTreeIndex(t.SelectionMixinGetAnchor())), i = t.state.renderedArray[n]; return { v: t.props.delete(e).then(function() { if (!t.props.disableSelectAfterDelete) { var a = t.state.renderedArray.filter(function(t) { return !e.includes(t.id) }); if (0 === a.length) t.selectById(S); else { var r = void 0 !== i.parentId ? t.findTreeItem(i.parentId) : void 0; if (r) if (t.props.hasChildren(r) && (r = Object.assign({}, r), r.children = r.children.filter(function(t) { return !e.includes(t.id) })), t.props.hasChildren(r)) { var s = r.children; if (1 === s.length) t.selectById(s[0].id); else { var o = s[0], l = s[s.length - 1], c = t._findTreeIndex(o.id), u = t._findTreeIndex(l.id); if (n <= c) t.selectById(o.id); else if (n >= u) t.selectById(l.id); else { var A = 0, d = u - c + 1; if (d > s.length) for (var h = n - c, m = 0; m < h; m++) { var p = a[c + m]; t.props.hasChildren(p) && p.isExpanded && (A -= p.children.length) } var f = s[n - c + A]; t.selectById(f.id) } } } else t.selectById(r.id); else { var g = a.length - 1, _ = a[Math.min(n, g)]; t.selectById(_.id) } } } }) } }(); return "object" === ("undefined" == typeof n ? "undefined" : a(n)) ? n.v : void 0 }, onKeyCtrlUp: m.throttleSync(function(e) { var t = this.SelectionMixinGetLead(), n = this._findTreeIndex(t); if (0 !== n) { var i = n - 1, a = this.state.renderedArray[i]; this.SelectionMixinSetLead(a.id), this.scrollIntoView(i) } }), onKeyCtrlDown: m.throttleSync(function(e) { var t = this.SelectionMixinGetLead(), n = this._findTreeIndex(t), i = this.state.renderedArray.length; if (n !== i - 1) { var a = n + 1, r = this.state.renderedArray[a]; this.SelectionMixinSetLead(r.id), this.scrollIntoView(a) } }), onKeyArrowDown: m.throttleSync(function(e) { var t = this.SelectionMixinGetLead(), n = this._findTreeIndex(t), i = this.state.renderedArray.length; if (n !== i - 1) { var a = n + 1, r = this.state.renderedArray[a]; this.selectById(r.id, e, a) } }), onKeyArrowUp: m.throttleSync(function(e) { var t = this.SelectionMixinGetLead(), n = this._findTreeIndex(t); if (0 !== n) { var i = n - 1, a = this.state.renderedArray[i]; this.selectById(a.id, e, i) } }), onKeyHome: function(e) { var t = this.state.renderedArray[0]; this.selectById(t.id, e, 0), e.preventDefault(), e.stopPropagation() }, onKeyEnd: function(e) { var t = this.state.renderedArray.length, n = this.state.renderedArray[t - 1]; this.selectById(n.id, e, t - 1), e.preventDefault(), e.stopPropagation() }, onKeyDelete: function() { this.onDelete(!0) }, onKeySelectAll: function() { this.SelectionMixinSelectAll() }, onKeyCtrlSpace: function(e) { var t = this.SelectionMixinGetLead(); this.SelectionMixinSelectItem(t, e.ctrlKey, e.shiftKey, e.metaKey, "contextmenu" === e.type) }, onKeyEsc: function(e) { this.unSelectAll() }, _setExpandState: function(e, t) { if (this.state.expandModel && this.state.selectionModel.isSingleItemSelected) { var n = this.findTreeItem(this.SelectionMixinGetLead()); (n.isExpanded && !t || !n.isExpanded && t) && this.toggleExpandModel(this.state.selectionModel.FirstSingleItemSelected) } e.preventDefault(), e.stopPropagation() }, _collapseFolderOrSelectParent: function(e) { var t = this.getSelectedItem(); if (this.isfolderAndHasItems(t) === !0 && t.isExpanded) this._setExpandState(e, !1); else { var n = this.SelectionMixinGetLead(); if (n) { var i = this._findTreeIndex(n); if (i) for (var a = this.state.renderedArray[i].level, r = i - 1; r >= 0; r--) { var s = this.state.renderedArray[r]; if (s.level < a) { this.selectById(s.id); break } } } } }, _expandFolder: function(e) { var t = this.getSelectedItem(); this.isfolderAndHasItems(t) === !0 && this._setExpandState(e, !0) }, unSelectAll: function() { this.SelectionMixinUnSelectAll() }, isItemLead: function(e) { return e === this.SelectionMixinGetLead() }, isItemSelected: function(e) { return this.SelectionMixinIsSelected(e) }, supportDropForItem: function(e, t) { return !this.props.supportDropForItem || this.props.supportDropForItem(t, e) }, onDragLeaveItem: function(e, t) { this.cancelDragOverObject(), this.resetAutoExpandTimer() }, onDragOverItem: function(e, t) { var n = t.currentTarget, i = n.getBoundingClientRect(), a = (t.clientY - i.top) / T, r = ""; this.props.isFolder(e) ? r = a <= .25 ? "above" : a > .75 ? "below" : "on" : a <= .5 ? r = "above" : a > .5 && (r = "below"), (this.state.dragOverObj.id !== e.id || this.state.dragOverObj.id === e.id && this.state.dragOverObj.position !== r) && this.setState({ dragOverObj: { id: e.id, position: r } }, this.initAutoExpandTimer(e, r)) }, initAutoExpandTimer: function(e, t) { e.isExpanded || !this.props.isFolder(e) || "on" !== t ? this.resetAutoExpandTimer() : this.expandId !== e.id && (this.resetAutoExpandTimer(), this.expandId = e.id, this.expandTimer = window.setTimeout(this.onAutoExpandTimer, E)) }, resetAutoExpandTimer: function() { this.expandTimer && (window.clearTimeout(this.expandTimer), this.expandTimer = void 0, this.expandId = -1) }, onAutoExpandTimer: function() { this.expandId !== -1 && (this.state.dragOverObj.id === this.expandId && "on" === this.state.dragOverObj.position && this.toggleExpandModel(this.expandId), this.resetAutoExpandTimer()) }, onDragEmptyArea: function(e) { if (this.state.renderedArray.length > 0) { var t = this.state.renderedArray[this.state.renderedArray.length - 1]; this.supportDropForItem(t, e) && (e.nativeEvent.dataTransfer.dropEffect = "move", this.state.dragOverObj.id !== t.id && "below" !== this.state.dragOverObj.position && this.setState({ dragOverObj: { id: t.id, position: "below" } })) } e.preventDefault(), e.stopPropagation() }, onDropEmptyArea: function(e) { if (this.resetAutoExpandTimer(), this.state.renderedArray.length > 0) { var t = this.state.renderedArray[this.state.renderedArray.length - 1]; this.onDrop(e, t) } e.preventDefault(), e.stopPropagation() }, onDrop: function(e, t) { var n = this; this.resetAutoExpandTimer(); var i = o.isCopyModifierPressed(e), a = this.state.dragOverObj.position, r = void 0; this.props.mimeType && (r = "function" == typeof this.props.mimeType ? this.props.mimeType() : this.props.mimeType); var s = void 0; if (r && e.dataTransfer.types.findIndex(function(e) { return e === r }) !== -1 ? s = JSON.parse(e.dataTransfer.getData(r)) : this.props.onDrop && this.props.onDrop(e, t, a).then(function(e) { n.cancelDragOverObject(), e.length > 0 && n.selectById(e[0].id) }), !s || s.length <= 0) return void this.cancelDragOverObject(); var l = this.props.isFolder(t), c = !1, u = { index: 0, parentId: void 0 }; this.props.getTargetSpec ? u = this.props.getTargetSpec(t, a) : ("on" !== a && (u.index = parseInt(t.index), "below" === a && u.index++), u.parentId = l && "on" === a ? t.id : t.parentId); var A = s.map(function(e) { if (e === t.id) return void(c = !0); var a = n.findTreeItem(e); return !i && n.props.isFolder(a) && n.findItemInFolder(a, t.id) ? void(c = !0) : a }).filter(function(e) { return null !== e }); if (c || A.length <= 0) return void this.cancelDragOverObject(); if (i) { var d = v(A); d.map(function(e) { e.parentId = u.parentId, e.index = u.index, u.index++ }), this.props.onCreate(d).then(function() { n.cancelDragOverObject() }) } else this.props.onMove(A, u).then(function() { n.cancelDragOverObject() }) }, cancelDragOverObject: function() { this.setState({ dragOverObj: I }) }, onDragEndItem: function() { this.cancelDragOverObject() }, onKeyDown: function(e) { var t = this, n = "MacIntel" === navigator.platform; if (this.stopInlineEditTimer(), this.state.inlineEditId !== -1) return void("Escape" === e.key ? (e.preventDefault(), this.cancelInlineEdit(function() { s.findDOMNode(t).focus() })) : "Enter" === e.key && (e.preventDefault(), this.saveInlineEdit(function() { s.findDOMNode(t).focus() }))); if (e.keyCode === l.KEY_ESCAPE) this.setCutIds([]); else if (!n && e.key === C || n && "Enter" === e.key) { var i = this.SelectionMixinGetSelected(); i !== -1 && this.props.supportsInlineEdit === !0 && (e.preventDefault(), this.startInlineEdit(i)) } else { var a = !1; if (this.props.onItemsActivated && (!n && "Enter" === e.key || n && " " === e.key)) { var r = this.getAllSelectedItems(!0); r && this.props.onItemsActivated(e, r), a = !0 }!a && this.props.onKeyDown && this.props.onKeyDown(e) } }, startInlineEditTimerForId: function(e) { this.stopInlineEditTimer(), this.props.supportsInlineEdit === !0 && (this.inlineEditTimeoutId = window.setTimeout(this.startInlineEdit.bind(this, e), y)) }, stopInlineEditTimer: function() { this.inlineEditTimeoutId !== -1 && (window.clearTimeout(this.inlineEditTimeoutId), this.inlineEditTimeoutId = -1) }, startInlineEditForSelectedItem: function() { var e = this.SelectionMixinGetSelected(); e !== -1 && this.startInlineEdit(e) }, startInlineEdit: function(e) { if (this.props.isValidToEdit && this.props.saveTitle) { var t = this.SelectionMixinGetAllSelected(); if (1 === t.length && t[0].id === e) { var n = this.state.renderedArray.filter(function(t) { return t.id === e }); 1 === n.length && this.props.isValidToEdit(n[0].id) && this.setState({ inlineEditId: e, inlineEditText: this.props.getTitle(e) }) } } }, setInlineEditText: function(e) { this.setState({ inlineEditText: e }) }, onInlineEditBlur: function() { "MacIntel" === navigator.platform ? this.saveInlineEdit() : this.cancelInlineEdit() }, cancelInlineEdit: function(e) { this.setState({ inlineEditId: -1, inlineEditText: "" }, e) }, saveInlineEdit: function(e) { this.state.inlineEditId !== -1 && (this.props.saveTitle(this.state.inlineEditId, this.state.inlineEditText), this.setState({ inlineEditId: -1, inlineEditText: "" }, e)) }, onScrollEvent: function(e) { this.forceUpdate() }, getSelectedItem: function() { return this.findTreeItem(this.SelectionMixinGetLead()) }, isfolderAndHasItems: function(e) { return e && e.children && e.children.length > 0 }, getSelected: function() { return this.SelectionMixinGetSelected() }, getRenderedItems: function(e, t, n) { var i = []; if (!e || 0 === e.length) return i; e = this.sortItems(e, n); var a = function e(n) { i.push(n), n.children && ("0" === n.id || t && t[n.id]) && n.children.forEach(e) }; return e.forEach(a), i }, sortItems: function(e, t) { if (!t || !t.sortOrder || t.sortOrder <= f.NO_SORTING) return e; e = v(e); var n = t.comparator || f.getDefaultComparator(t.sortOrder, t.sortField); return f.treeSort(e, n), e }, getAllSelectedItems: function(e) { var t = this.SelectionMixinGetAllSelected(); if (t.length <= 1 || e !== !0) return t; t = t.slice(); var n = [], i = function e(i) { for (var a = 0; a < i.length && t.length > 0; a++) { for (var r = i[a], s = !1, o = 0; o < t.length; o++) if (t[o].id === r.id) { s = !0, n.push(t.splice(o, 1)[0]); break }!s && r.children && e(r.children) } }; return i(this.props.nodes), n }, findTreeItem: function(e) { var t = null, n = function n(i) { return i.id === e ? t = i : void(i.children && i.children.forEach(n)) }; return this.props.nodes.forEach(n), t }, findItemInFolder: function(e, t) { var n = null, i = function e(i) { return i.id === t ? n = i : void(i.children && i.children.forEach(e)) }; return e.children.forEach(i), n }, getIdsBetween: function(e, t) { var n = this._findTreeIndex(e), i = this._findTreeIndex(t), a = []; return a = n > i ? this.state.renderedArray.slice(i, n + 1) : this.state.renderedArray.slice(n, i + 1), a.map(function(e) { return e.id }) }, getAllIds: function() { return this.state.renderedArray.map(function(e, t) { return e.id || t }) }, getSearchStyle: function() { var e = _.getSync(this._searchStyleSettings); return void 0 === e && (e = "tree"), e }, setSearchStyle: function(e) { var t = this, n = {}; n[this._searchStyleSettings] = e, _.set(n, function() { t.props.onSearchStyleChanged(e) }) }, getContextMenuItems: function(e) { var t = this, n = this.props.getContextMenuItems ? this.props.getContextMenuItems(e) : [], i = this.props.getContextMenuItemProps ? this.props.getContextMenuItemProps(e) : {}, a = function() { n.length > 0 && (n = n.concat([{ name: "---" }])) }; if ((i.showNewItem || i.showNewFolder || i.showEdit || i.showRename) && (a(), n = n.concat([Object.assign({ handler: function() { t.onAdd(!1) }, testVisibility: function() { return i.showNewItem } }, this.props.getContextMenuNewItemString()), Object.assign({ handler: function() { t.onAdd(!0) }, testVisibility: function() { return i.showNewFolder } }, b("New Folder")), Object.assign({ handler: function() { t.props.onEdit() }, testVisibility: function() { return i.showEdit } }, b("verb", "Edit")), Object.assign({ handler: function() { return t.startInlineEditForSelectedItem() }, testVisibility: function() { return i.showRename } }, b("Rename"))])), (i.showCut || i.showCopy || i.showPaste) && (a(), n = n.concat([Object.assign({ handler: function() { document.addEventListener("cut", t.onCut), document.execCommand("cut"), document.removeEventListener("cut", t.onCut) }, visible: i.showCut === !0 }, b("verb", "Cut")), Object.assign({ handler: function() { document.addEventListener("copy", t.onCopy), document.execCommand("copy"), document.removeEventListener("copy", t.onCopy) }, visible: i.showCopy === !0 }, this.props.getContextMenuCopyString ? this.props.getContextMenuCopyString() : b("verb", "Copy")), Object.assign({ handler: function() { document.addEventListener("paste", t.onPaste), document.execCommand("paste"), document.removeEventListener("paste", t.onPaste) }, visible: i.showPaste === !0 }, b("verb", "Paste"))])), i.showDelete && (a(), n = n.concat([Object.assign({ handler: function() { t.onDelete(!0) } }, b("verb", "Delete"))])), i.showExpandCollapse && (a(), n = n.concat([Object.assign({ handler: this.expandAll }, b("Expand All Folders")), Object.assign({ handler: this.collapseAll }, b("Collapse All Folders"))])), i.showSettings) { a(); var r = this.getSearchStyle(); n = n.concat([Object.assign({ items: [Object.assign({ type: "checkbox", checked: "flat" === r, handler: this.setSearchStyle.bind(this, "flat") }, b("Flat Search")), Object.assign({ type: "checkbox", checked: "tree" === r, handler: this.setSearchStyle.bind(this, "tree") }, b("Tree Search"))] }, b("Settings"))]) } return i.showFullscreen && (a(), n = n.concat([Object.assign({ handler: c.fullScreen }, b("Fullscreen"))])), n }, renderTreeItem: function(e, t) { var n = this.state.renderedArray[e]; n.treeIndex = e, void 0 === n.id && (n.id = e); var a = this.SelectionMixinIsSelected(n.id), s = this.SelectionMixinGetLead() === n.id, o = this.state.cutIds.indexOf(n.id) > S, l = !1; a === !0 && (l = this.state.hasFocus || n.id === this.state.inlineEditId); var c = this.props.enableDragAndDrop && this.state.inlineEditId !== n.id; return c && this.props.isValidDragSource && (c = this.props.isValidDragSource(n)), r.createElement(p, { key: t, index: e, treeItem: n, ref: "treeItem", isExpanded: n.isExpanded, childCount: n.children ? n.children.length : 0, toggle: this.toggleExpandModel, onContextMenuOpen: this.onContextMenuOpen, onMouseDown: this.onItemMouseDown, onMouseUp: this.onItemMouseUp, selected: a, hasFocus: l, lead: s, isCut: o, validateForDrag: this.props.validateForDrag, onDragStart: this.stopInlineEditTimer, supportDrop: this.props.enableDragAndDrop ? this.supportDropForItem : null, onDragLeave: this.props.enableDragAndDrop ? this.onDragLeaveItem : null, onDragOver: this.props.enableDragAndDrop ? this.onDragOverItem : null, onDragEnd: this.onDragEndItem, onDrop: this.onDrop, mimeType: this.props.mimeType, getDragData: this.props.getDragData, dragover: this.state.dragOverObj.id === n.id, dragOverObj: this.state.dragOverObj, inlineEditText: this.state.inlineEditId === n.id ? this.state.inlineEditText : void 0, setInlineEditText: this.setInlineEditText, onInlineEditBlur: this.onInlineEditBlur, getSelectedItem: this.getSelectedItem, getAllSelectedItems: this.getAllSelectedItems, isFolder: this.props.isFolder, isDraggable: c, hasChildren: this.props.hasChildren, renderItemContent: this.props.renderItemContent, getContextMenuItems: this.getContextMenuItems, onItemClick: this.onItemClick, onItemDoubleClick: this.onItemDoubleClick, openInNewTab: this.openInNewTab, onKeyDown: this.onItemKeyDown, enableDragAndDrop: this.props.enableDragAndDrop, __source: { fileName: i, lineNumber: 1550 } }) }, render: function() { return r.createElement("div", { ref: "treeItems", tabIndex: "0", className: "vivaldi-tree", onBlur: this.onLostFocus, onFocus: this.onGotFocus, onScroll: this.onScrollEvent, onKeyDown: this.onKeyDown, onDragOver: this.props.enableDragAndDrop ? this.onDragEmptyArea : null, onDragLeave: this.props.enableDragAndDrop ? this.cancelDragOverObject : null, onDrop: this.props.enableDragAndDrop ? this.onDropEmptyArea : null, onClick: this.onClick, __source: { fileName: i, lineNumber: 1606 } }, r.createElement(d, { ref: "treeListEntries", itemRenderer: this.renderTreeItem, length: this.state.renderedArray.length, itemSizeGetter: this.props.itemSizeGetter, type: this.props.treeType, __source: { fileName: i, lineNumber: 1620 } })) } }); e.exports = O }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_110 // ========================= "use strict"; function i(e) { e ? "string" == typeof e ? (this.id = r(), this.address = e) : (this.id = e.id || r(), this.address = e.address, this.photo = e.photo, this.name = e.name, this.phone = e.phone, this.postal = e.postal, this.isGeneratedFromSentMail = e.isGeneratedFromSentMail) : this.id = r() } var a = n(360), r = n(584); i.prototype = { defaultPhoto: n(949), toString: function() { return a(this) }, isEmpty: function() { return !(this.address || this.photo || this.name || this.phone || this.postal) }, clearGenerated: function() { this.isGeneratedFromSentMail && (this.isGeneratedFromSentMail = !1) }, getAsJSON: function() { return { id: this.id, photo: this.photo, name: this.name, address: this.address, phone: this.phone, postal: this.postal, isGeneratedFromSentMail: this.isGeneratedFromSentMail } } }, e.exports = i }, function(e, t, n) { // ========================= // Function_111 // ========================= "use strict"; function i(e) { l = e, c.emitChange() } var a = n(18).EventEmitter, r = n(8), s = n(6), o = "change", l = {}, c = Object.assign({}, a.prototype, { getActiveWebView: function(e) { return l }, emitChange: function() { this.emit(o) }, addChangeListener: function(e) { this.on(o, e) }, removeChangeListener: function(e) { this.removeListener(o, e) } }); r.register(function(e) { var t = e.action; switch (t.actionType) { case s.WEBVIEW_SET_ACTIVE: i(t.webview); break; default: return !0 } }), e.exports = c }, function(e, t, n) { // ========================= // Function_112 // ========================= "use strict"; function i(e, t) { t.get("isLoading") === !0 && "start" === t.get("trigger") && (v[e.get("id")] = h.Map()), g[e.get("id")] = t, S.emitChange() } function a(e, t) { _[e.get("id")] = t, S.emitChange() } function r(e, t, n) { v[e.get("id")] = h.Map({ state: t, issuer: n }), S.emitChange() } function s(e, t) { var n = b[e.get("id")] || h.List(); n = n.push(t), b[e.get("id")] = n, S.emitChange() } function o(e, t) { var n = b[e.get("id")]; n && (b[e.get("id")] = n.filter(function(e) { return e !== t }), S.emitChange()) } function l(e, t, n, i) { N = N.update(e.get("id"), h.Map(), function(e) { return e.set(t, h.Map({ requestEvent: n, blocked: i })) }), S.emitChange() } function c(e, t) { var n = E[e.get("id")] || h.List(); n = n.push(t), E[e.get("id")] = n, S.emitChange() } function u(e) { E[e.get("id")] = h.List(), S.emitChange() } function A(e) { N = N.update(e.get("id"), h.Map(), function(e) { return e.clear() }), S.emitChange() } var d = n(18).EventEmitter, h = n(27), m = n(8), p = n(6), f = "change", g = {}, _ = {}, v = {}, b = {}, N = h.Map(), E = h.List(), S = Object.assign({}, d.prototype, { getNavigationInfo: function(e) { return g[e.get("id")] || h.Map() }, getProgressInfo: function(e) { return _[e.get("id")] || h.Map() }, getSSLInfo: function(e) { return v[e.get("id")] || h.Map() }, getBlockedPopups: function(e) { return b[e.get("id")] || h.List() }, getPermissionInfo: function(e) { return N.get(e.get("id"), h.Map()) }, getblockedPageContents: function(e) { return E[e.get("id")] || h.List() }, emitChange: function() { this.emit(f) }, addChangeListener: function(e) { this.on(f, e) }, removeChangeListener: function(e) { this.removeListener(f, e) } }); m.register(function(e) { var t = e.action; switch (t.actionType) { case p.NAVIGATION_SET_STATE: i(t.page, t.navigationState); break; case p.NAVIGATION_SET_PROGRESS: a(t.page, t.progressState); break; case p.PAGE_SET_SSL_STATE: r(t.page, t.state, t.issuer); break; case p.NAVIGATION_ADD_POPUP: s(t.page, t.popupEvent); break; case p.NAVIGATION_REMOVE_POPUP: o(t.page, t.popupEvent); break; case p.NAVIGATION_SET_PERMISSION: l(t.page, t.permission, t.requestEvent, t.blocked); break; case p.NAVIGATION_RESET_PERMISSIONS: A(t.page); break; case p.NAVIGATION_SET_BLOCKED_CONTENT: c(t.page, t.content_type); break; case p.NAVIGATION_RESET_BLOCKED_CONTENT: u(t.page); break; default: return !0 } }), e.exports = S }, function(e, t) { // ========================= // Function_113 // ========================= "use strict"; function n(e) { var t = document.activeElement; return !!t && i(t, e) } var i = function e(t, n) { for (var i = n.children, a = !1, r = 0; r < i.length; r++) { if (i[r] === t) return !0; if (e(t, i[r])) { a = !0; break } } return a }; e.exports = n }, function(e, t, n) { // ========================= // Function_114 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function a(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function r(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var s = n(27), o = function(e) { function t() { return i(this, t), a(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return r(t, e), t }((0, s.Record)({ id: 0, index: -1, windowId: void 0, openerTabId: null, active: !1, pinned: !1, audible: "", url: "", title: "", favIconUrl: "", incognito: "", sessionId: "", extData: (0, s.Map)(), target: (0, s.Map)(), isRemoved: !1, mediastate: void 0, discarded: !1, processexitstate: void 0, favIcon: "", fullscreen: !1 })); e.exports = o }, function(e, t, n) { // ========================= // Function_115 // ========================= "use strict"; var i = n(17), a = function(e) { if (!e) return !1; var t = e.getIn(["extData", "tiling", "id"]); if (!t) return !1; var n = i.getPages().filter(function(e) { return e.getIn(["extData", "tiling", "id"]) === t }); if (n.count() < 2) return !1; var a = i.getActivePage().getIn(["extData", "tiling", "id"]); return t && a && t === a }, r = function(e) { return !!e && (!!e.get("active") || !!a(e)) }, s = function(e) { return !!e && i.isGroup(e.getIn(["extData", "group"])) }; t.isPageVisible = r, t.isPageTiled = a, t.isPageGrouped = s }, function(e, t, n) { // ========================= // Function_116 // ========================= "use strict"; function i(e) { return r(e) } function a(e) { try { e = i(e) } catch (e) {} return e } var r = n(935); e.exports = a }, , , , , , , , , , , , , function(e, t, n) { // ========================= // Function_129 // ========================= "use strict"; function i(e, t) { return (null === t.tab || void 0 === t.tab) && l.runtime.id === t.id && 0 === t.frameId } var a = n(173), r = n(8), s = n(6), o = n(55), l = n(4), c = n(36), u = void 0, A = { setFastForwardUrl: function(e, t, n) { r.handleViewAction({ actionType: s.FAST_FORWARD_SET_FORWARD_URL, pageId: e, forwardUrl: t }) }, _updateRewindInfo: function(e, t, n, i) { r.handleViewAction({ actionType: s.FAST_FORWARD_SET_REWIND_INFO, pageId: e, history: i, currentHostname: t, currentIndex: n }) }, setRewindInfo: function(e, t) { var n = c.parse(t.get("url")).hostname; e.getPageHistory(this._updateRewindInfo.bind(this, t.get("id"), n)) }, copyFastForwardState: function(e, t) { r.handleViewAction({ actionType: s.FAST_FORWARD_COPY_STATE, pageId: e.get("id"), fastForwardState: t }) }, navigateRewind: function(e) { e && e.has("id") || (e = u.getActivePage()); var t = a.getRewindRelativeIndex(e); o.go(t * -1) }, navigateFastforward: function(e) { e && e.has("id") || (e = u.getActivePage()), l.tabs.sendMessage(e.get("id"), { navigateFastforward: !0 }) }, initTab: function(e) { return e && e.has("id") ? void l.tabs.sendMessage(e.get("id"), { pageId: e.get("id") }) : TypeError("page with id required") }, initFastForward: function() { u = n(17), l.runtime.onMessage.addListener(function(e, t) { "fastforwardUrlChanged" === e.action && i(e.pageId, t) && A.setFastForwardUrl(e.pageId, e.nextUrl, t.url) }) } }; e.exports = A }, function(e, t, n) { // ========================= // Function_130 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function a() { var e = h().startOf("date"), t = h().endOf("date"); return new Promise(function(n) { m.historyPrivate.visitSearch({ startTime: e.valueOf(), endTime: t.valueOf() }, function(e) { o.handleViewAction({ actionType: l.VIVALDI_HISTORY_LOAD_TODAY, historyItems: e }), n() }) }) } function r() { var e = h().add(-1, "d").endOf("date"); return new Promise(function(t) { m.historyPrivate.visitSearch({ startTime: 0, endTime: e.valueOf() }, t) }) } var s = n(245), o = n(8), l = n(6), c = n(74), u = n(3), A = n(4), d = n(7), h = n(44), m = n(10), p = [], f = 5e3, g = { loadPromise: function() { var e = this; return c.isEnabled(c.kNewHistoryPage) ? a().then(function() { var t = "HISTORY_" + s.getPanelResourceKey(), n = u.getSync(t); return n && o.handleViewAction({ actionType: l.VIVALDI_HISTORY_INIT_FILTER, tab_id: s.getPanelResourceKey(), setting: n }), A.history.onVisited.addListener(a), r().then(function(t) { p = d.map(t, function(e, n) { return n % f === 0 ? t.slice(n, n + f) : null }).filter(function(e) { return e }), window.requestIdleCallback(e.processHistoryData) }) }) : Promise.resolve() }, deleteHistoryPromise: function(e) { return Promise.all(e.map(function(e) { return new Promise(function(t) { var n = new h(e.at), i = { url: e.url, startTime: new h(n.startOf("day")).valueOf(), endTime: new h(n.endOf("day")).valueOf() }; m.historyPrivate.deleteVisits(i, function() { o.handleViewAction({ actionType: l.CHROME_HISTORY_DELETE, url: i.url, startTime: i.startTime, endTime: i.endTime }), t() }) }) })) }, removeLocalHistory: function(e) { o.handleViewAction({ actionType: l.VIVALDI_HISTORY_REMOVE_AFTER, since: e }) }, processHistoryData: function(e) { for (; e.timeRemaining() > 0 && p.length > 0;) { var t = p.pop(); o.handleViewAction({ actionType: l.VIVALDI_HISTORY_LOAD_YESTERDAY_AND_OLDER, historyItems: t }) } p.length > 0 && window.requestIdleCallback(g.processHistoryData) }, searchHistory: function(e, t) { o.handleViewAction({ actionType: l.CHROME_HISTORY_SEARCH, historyQuery: t, tab_id: e }) }, setDisplayMode: function(e, t) { o.handleViewAction({ actionType: l.VIVALDI_HISTORY_DISPLAY_MODE_CHANGE, tab_id: e, displayMode: t }) }, saveStateFromSearchQuery: function(e, t) { var n = t.toJS(); u.set(i({}, "HISTORY_" + e, { rangePicker: n.rangePicker, startTime: n.startTime.valueOf(), endTime: n.endTime.valueOf() })) } }; e.exports = g }, function(e, t, n) { // ========================= // Function_131 // ========================= "use strict"; function i(e, t) { l.setSwitcherVisible(t) } var a = n(8), r = n(6), s = n(3), o = n(4), l = { loadPromise: function() { return new Promise(function(e, t) { o.windows.get(window.vivaldiWindowId, function(t) { var n = t && t.extData ? JSON.parse(t.extData) : {}, i = {}; n.hasOwnProperty("SHOW_PANEL_CONTENT") && (i.showContent = n.SHOW_PANEL_CONTENT), n.hasOwnProperty("SHOW_PANEL") && (i.showButtons = n.SHOW_PANEL), n.hasOwnProperty("PANEL_WIDTH") && (i.width = n.PANEL_WIDTH), n.hasOwnProperty("SELECTED_PANEL") && (i.selectedPanel = n.SELECTED_PANEL), void 0 === i.showButtons ? s.get("PANEL_STATE", function(e) { if (void 0 !== e) { var t = Array.isArray(e) ? e[0] : e; i.showButtons = t.barVisible, i.showContent = t.panelVisible, i.width = t.width, i.selectedPanel = t.selectedPanel, l.setState(i) } }) : l.setState(i), e() }), l.setSwitcherVisible(s.getSync("SHOW_PANEL_SWITCH")), s.addListener("SHOW_PANEL_SWITCH", i), s.addListener("WEB_PANEL_LIST", l.setPanels), s.addListener("REG_PANEL_LIST", l.setPanels), l.resetPanels("REG_PANEL_LIST"); var n = s.getSync("WEB_PANEL_LIST"); void 0 !== n && l.setPanels(null, n, "WEB_PANEL_LIST"); var a = s.getSync("REG_PANEL_LIST"); void 0 !== a && l.setPanels(null, a, "REG_PANEL_LIST") }) }, setFocus: function() { a.handleViewAction({ actionType: r.PANEL_SET_FOCUS }) }, showNextPanel: function(e) { a.handleViewAction({ actionType: r.PANEL_SHOW_NEXT, DIRECTION: e }) }, setContentVisible: function(e) { a.handleViewAction({ actionType: r.PANEL_SET_CONTENT_VISIBLE, visible: e }) }, setSwitcherVisible: function(e) { a.handleViewAction({ actionType: r.PANEL_SET_SWITCHER_VISIBLE, visible: e }) }, togglePanel: function() { a.handleViewAction({ actionType: r.PANEL_TOGGLE_PANEL }) }, toggleContent: function(e) { a.handleViewAction({ actionType: r.PANEL_TOGGLE_CONTENT, panel: e }) }, showContent: function(e, t, n) { a.handleViewAction({ actionType: r.PANEL_SHOW_CONTENT, panel: e, show: t, setFocus: n }) }, setAvailable: function(e, t) { a.handleViewAction({ actionType: r.PANEL_SET_AVAILABLE, panel: e, available: t }) }, setWidth: function(e, t) { a.handleViewAction({ actionType: r.PANEL_SET_WIDTH, panel: e, width: t }) }, setPanelResizable: function(e, t) { a.handleViewAction({ actionType: r.PANEL_SET_RESIZABLE, panel: e, resizable: t }) }, resetPanels: function(e) { a.handleViewAction({ actionType: r.PANEL_RESET_PANELS, key: e }) }, setPanels: function(e, t, n) { a.handleViewAction({ actionType: r.PANEL_SET_PANELS, key: n, value: t, oldValue: e }) }, setState: function(e) { a.handleViewAction({ actionType: r.PANEL_SET_STATE, state: e }) }, setMailWindowId: function(e) { a.handleViewAction({ actionType: r.PANEL_SET_MAIL_WINDOW_ID, windowId: e }) }, setActiveWindowId: function(e) { a.handleViewAction({ actionType: r.PANEL_SET_ACTIVE_WINDOW_ID, windowId: e }) } }; e.exports = l }, function(e, t, n) { // ========================= // Function_132 // ========================= "use strict"; var i = n(8), a = n(6), r = n(204), s = r.values, o = function(e, t) { return t ? setTimeout(e, t) : e() }, l = {}, c = { clearTooltip: function() { c._clearAllTooltipTimeouts(), i.handleViewAction({ actionType: a.TOOLTIP_CLEAR }) }, showTooltip: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; c._clearTooltipTimeout(e), l[e] = o(function() { return i.handleViewAction({ actionType: a.TOOLTIP_SHOW, id: e }) }, t) }, hideTooltip: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; c._clearTooltipTimeout(e), l[e] = o(function() { return i.handleViewAction({ actionType: a.TOOLTIP_HIDE, id: e }) }, t) }, _clearAllTooltipTimeouts: function() { s(l).filter(Boolean).forEach(clearTimeout), l = {} }, _clearTooltipTimeout: function(e) { l[e] && (l[e] = clearTimeout(l[e])) } }; e.exports = window.TooltipActions = c }, function(e, t, n) { // ========================= // Function_133 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/FocusTrap.jsx", r = n(1), s = n(11), o = n(13), l = n(7), c = l.omit, u = r.createClass({ displayName: "FocusTrap", mixins: [o], vivaldiSettingsKeys: ["FOCUS_CYCLE_TRAP"], propTypes: { focusName: r.PropTypes.string.isRequired, component: r.PropTypes.any }, getDefaultProps: function() { return { component: "div" } }, _getFocusable: function() { var e = s.findDOMNode(this).querySelectorAll("a[href]:not([tabindex='-1']),\n button:not([disabled]):not([tabindex='-1']),\n input:not([disabled]):not([tabindex='-1']),\n select:not([disabled]):not([tabindex='-1']),\n textarea:not([disabled]):not([tabindex='-1']),\n [tabindex]:not([tabindex='-1']):not(." + this.props.focusName + ")"); return { firstFocus: e[0], lastFocus: e[e.length - 1] } }, handleTopFocus: function(e) { var t = this._getFocusable(), n = t.firstFocus, i = t.lastFocus; e.relatedTarget === n ? i.focus() : n.focus() }, handleBottomFocus: function(e) { var t = this._getFocusable(), n = t.firstFocus, i = t.lastFocus; e.relatedTarget === i ? n.focus() : i.focus() }, render: function() { var e = this.props.component, t = c(this.props, Object.keys(u.propTypes)); return this.state.FOCUS_CYCLE_TRAP === !1 ? r.createElement(e, i({}, t, { __source: { fileName: a, lineNumber: 63 } }), this.props.children) : r.createElement(e, i({}, t, { __source: { fileName: a, lineNumber: 69 } }), r.createElement("span", { tabIndex: "0", className: this.props.focusName, onFocus: this.handleTopFocus, __source: { fileName: a, lineNumber: 70 } }), this.props.children, r.createElement("span", { tabIndex: "0", className: this.props.focusName, onFocus: this.handleBottomFocus, __source: { fileName: a, lineNumber: 74 } })) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_134 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/SlideBar.jsx", r = n(1), s = n(5), o = n(7), l = o.noop, c = ".fullwidth, .fullheight", u = r.createClass({ displayName: "SlideBar", rafHandle: null, propTypes: { margin: r.PropTypes.number, onStart: r.PropTypes.func, onStop: r.PropTypes.func, onDoubleClick: r.PropTypes.func, onSlidebarMove: r.PropTypes.func }, getDefaultProps: function() { return { margin: 0, onStart: l, onStop: l, onDoubleClick: l } }, getInitialState: function() { return { touchActive: !1 } }, componentWillUnmount: function() { window.removeEventListener("touchmove", this.handleTouchMove), window.removeEventListener("mousemove", this.handleMouseMove), window.removeEventListener("touchend", this.handleStop), window.removeEventListener("mouseup", this.handleStop) }, handleClick: function(e) { 1 === e.button && this.handleDoubleClick(e) }, handleDoubleClick: function(e) { this.props.onDoubleClick(e) }, handleMouseDown: function(e) { 0 === e.button && (e.preventDefault(), window.addEventListener("mousemove", this.handleMouseMove, { passive: !0 }), window.addEventListener("mouseup", this.handleStop, { passive: !0 }), this.startDragging(e)) }, handleMouseUp: function(e) { 1 === e.button ? this.handleDoubleClick(e) : this.handleStop() }, handleTouchStart: function(e) { e.preventDefault(), window.addEventListener("touchmove", this.handleTouchMove, { passive: !0 }), window.addEventListener("touchend", this.handleStop, { passive: !0 }), this.setState({ touchActive: !0 }), this.startDragging(e.touches[0]) }, handleMouseMove: function(e) { this.handleMove(e) }, handleTouchMove: function(e) { e.preventDefault(), this.handleMove(e.touches[0]) }, startDragging: function(e) { this.props.onStart(), this.setParentWillChange() }, handleMove: function(e) { this.props.onSlidebarPosition(e.pageX, e.pageY) }, handleStop: function() { this.props.onStop(), this.setState({ touchActive: !1 }), this.removeParentWillChange(), window.removeEventListener("touchmove", this.handleTouchMove), window.removeEventListener("touchend", this.handleStop), window.removeEventListener("mousemove", this.handleMouseMove), window.removeEventListener("mouseup", this.handleStop) }, setParentWillChange: function() { [].forEach.call(document.querySelectorAll(c), function(e) { e.parentNode.style.setProperty("will-change", "width, height"), e.parentNode.style.setProperty("transition-duration", "0ms") }) }, removeParentWillChange: function() { [].forEach.call(document.querySelectorAll(c), function(e) { e.parentNode.style.removeProperty("will-change"), e.parentNode.style.removeProperty("transition-duration") }) }, render: function() { var e, t = this.props.position, n = "left" === t || "right" === t ? "fullheight" : "fullwidth", o = "right" === t || "bottom" === t ? "alternate" : ""; return r.createElement("button", { tabIndex: "-1", onTouchStart: this.handleTouchStart, onTouchEnd: this.handleStop, onMouseDown: this.handleMouseDown, onMouseUp: this.handleMouseUp, onDoubleClick: this.handleDoubleClick, className: s((e = {}, i(e, n, !0), i(e, o, "" !== o), i(e, "touch-active", this.state.touchActive), e)), __source: { fileName: a, lineNumber: 137 } }) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_135 // ========================= "use strict"; function i(e) { return e.flags.indexOf("\\Seen") === -1 } function a(e) { return e.flags.indexOf("\\Flagged") >= 0 } function r(e) { return e.flags.indexOf("$Forwarded") >= 0 } function s(e) { return e.flags.indexOf("\\Answered") >= 0 } function o(e) { return e.flags.indexOf("\\Deleted") >= 0 } function l(e, t) { function n(t, n) { n ? e.includes(t) || e.push(t) : m(e, function(e) { return e === t }) } e = h(e); var i = !0, a = !1, r = void 0; try { for (var s, o = Object.keys(t)[Symbol.iterator](); !(i = (s = o.next()).done); i = !0) { var l = s.value, c = t[l]; switch (l) { case "unread": n("\\Seen", !c); break; case "flagged": n("\\Flagged", c); break; case "replied": n("\\Answered", c); break; case "deleted": n("\\Deleted", c); break; case "draft": n("\\Draft", c); break; case "forwarded": n("$Forwarded", c); break; default: console.warn("Unknown flag: " + l) } } } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return e } function c(e, t) { return e.length === t.length && e.every(function(e) { return t.includes(e) }) } function u(e, t) { function n(n, a) { var r = e.includes(a), s = t.includes(a); r !== s && i.push(n) } var i = []; return n("unread", "\\Seen"), n("flagged", "\\Flagged"), n("replied", "\\Answered"), n("deleted", "\\Deleted"), n("draft", "\\Draft"), n("forwarded", "$Forwarded"), i } function A(e) { switch (e) { case "unread": return f; case "flagged": return g; case "forwarded": return _; case "replied": return v; default: console.warn("Unknown flag " + e) } } var d = n(7), h = d.clone, m = d.remove, p = n(42), f = p.BUFFER_OPERATION_MARKUNREAD, g = p.BUFFER_OPERATION_MARKFLAGGED, _ = p.BUFFER_OPERATION_MARKFORWARDED, v = p.BUFFER_OPERATION_MARKREPLIED; e.exports.isUnread = i, e.exports.isFlagged = a, e.exports.isForwarded = r, e.exports.isReplied = s, e.exports.isDeleted = o, e.exports.updateFlags = l, e.exports.areFlagsMatching = c, e.exports.getUpdatedFlags = u, e.exports.getBufferOperation = A }, function(e, t, n) { // ========================= // Function_136 // ========================= (function(t) { "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { return t === g.OMNI_RESULT_BOOKMARK_URL_HOST ? e + 500 : t === g.OMNI_RESULT_BOOKMARK_PROMOTED ? e + 200 : e } function r(e, t) { return 2 * t.visitCount + (e === g.OMNI_RESULT_HISTORY_PROMOTED ? 200 : 0) - 100 * ((t.url.match(/\//g) || []).length - 3) } var s = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/urlfield.jsx", o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, l = n(88), c = i(l), u = n(20), A = n(59), d = i(A), h = n(1178), m = i(h), p = n(40), f = n(51), g = n(171), _ = n(37), v = n(9), b = n(1), N = n(11), E = n(349), S = n(248), T = n(65), y = n(97), C = n(6), I = n(55), O = n(4), w = n(5), D = n(90), k = n(771), M = n(774), L = n(7), P = n(116), R = n(785), x = n(36), B = n(10), U = n(379), F = U.OmniNavigation, H = n(46), V = H.hasUnknownProtocol, W = H.removeProtocol, G = D("urlfield"), K = !1, j = !0, z = 350, Y = "./%?=-#@&;,$\"'()[]<>^~`{}+".split(""), J = {}, Q = [], Z = 0, q = b.createClass({ displayName: "UrlField", mixins: [v], _typedUrl: "", _complist: [], _results: {}, _isSearching: !1, _isIMEOpen: !1, propTypes: { autocompletionEnabled: b.PropTypes.bool, encodeCutCopy: b.PropTypes.bool, hideDropdown: b.PropTypes.func, isOmniDropdownOpen: b.PropTypes.bool, isTypedHistoryOpen: b.PropTypes.bool, onDelete: b.PropTypes.func, onKeyPressed: b.PropTypes.func, onUrlFieldChanged: b.PropTypes.func, selectOnClick: b.PropTypes.bool, suggestEnabled: b.PropTypes.bool }, getInitialState: function() { return { isFocused: !1 } }, componentDidMount: function() { var e = this.refs.urlInput; e.addEventListener("blur", this.onBlur), e.addEventListener("focus", this.onFocus), e.addEventListener("select", this.onSelected), e.addEventListener("compositionstart", this.onCompositionStart), e.addEventListener("compositionupdate", this.onCompositionStart), e.addEventListener("compositionend", this.onCompositionEnd), S.addChangeListener(this._onSearchSuggestionsChanged), y.addChangeListener(this._onUrlbarStoreChanged), addEventListener("keydown", this.onKeyDown), addEventListener("keyup", this.onKeyUp), J[g.OMNI_TYPE_INTERNAL] = u.vivaldiUrls.reduce(function(e, t) { e.push({ url: t, id: t, type: g.OMNI_RESULT_INTERNAL }); var n = t.replace(/\/\//, ""); return e.push({ url: n, id: n, type: g.OMNI_RESULT_INTERNAL }), e }, []) }, componentWillUnmount: function() { var e = this.refs.urlInput; e.removeEventListener("blur", this.onBlur), e.removeEventListener("focus", this.onFocus), e.removeEventListener("select", this.onSelected), e.removeEventListener("compositionstart", this.onCompositionStart), e.removeEventListener("compositionupdate", this.onCompositionStart), e.removeEventListener("compositionend", this.onCompositionEnd), S.removeChangeListener(this._onSearchSuggestionsChanged), y.removeChangeListener(this._onUrlbarStoreChanged), removeEventListener("keydown", this.onKeyDown), removeEventListener("keyup", this.onKeyUp), Object.keys(J).forEach(function(e) { return delete J[e] }) }, componentWillReceiveProps: function(e) { !e.editUrl && this._typedUrl && (this._typedUrl = ""), e.pageId !== this.props.pageId && this._cleanupState() }, _onSearchSuggestionsChanged: function(e) { var n = this, i = e.suggestions, a = e.query, r = e.uid; if (Q.includes(r)) { var s = this._maybeRemovePrefix(this._typedUrl); "" !== s && "" !== a && "string" == typeof s && "string" == typeof a && (s.startsWith(a) || a.startsWith(s)) && t.nextTick(function() { return n.searchDoneSuggest(i) }) } }, _onUrlbarStoreChanged: function(e) { e === C.URLFIELD_TYPED_HISTORY_DELETE && this.props.isOmniDropdownOpen && this.searchTypedHistory(this._typedUrl, !0) }, updateDropDown: function() { G("updating dropdown"), "function" == typeof this.props.showDropdown && (this._hasLeftPage || "" === N.findDOMNode(this).value || this.props.showDropdown(this._complist, this._typedUrl)) }, getTypedURL: function() { return this._typedUrl }, getDropdown: function() { return "function" == typeof this.props.getDropdown && this.props.getDropdown() }, getSelectionIndex: function() { return this.props.selectionIndex }, _shouldAutocompleteTitle: function() { return j && this.props.autocompleteOnTitle === !0 }, updateAutocomplete: function(e) { if (this.props.autocompletionEnabled && !this._isIMEOpen && (!Array.isArray(e) || 0 !== e.length)) { if (null == e || "undefined" == typeof e.url && (!Array.isArray(e.urls) || 0 === e.urls.length)) throw TypeError("updateAutocomplete needs an item with an url(s) property", e); var t = (this._typedUrl || "").length, n = e.url.indexOf("://") + 1; n > 0 && (n += 2); var i = "", a = 0; e.type === g.OMNI_RESULT_BOOKMARK_TITLE_EXACT ? i = this._typedUrl + e.title.substr(this._typedUrl.length) : (a = e.url.startsWith(this._typedUrl) ? 0 : e.url.substr(n).toLowerCase().indexOf(this._typedUrl.toLowerCase()) + n, i = e.url.substr(0, a) + this._typedUrl + e.url.substr(a + this._typedUrl.length)); var r = N.findDOMNode(this), s = r.value && r.selectionEnd === r.value.length; 0 !== a && a !== n && (a !== n + 4 || "www." !== i.substr(n, 4)) || this._completed ? e.nickname && e.nickname === this._typedUrl && s && (T.setUrlfieldState(this.props.pageId, { editUrl: e.nickname, selectionStart: e.nickname.length, selectionEnd: e.nickname.length }), this.refs.urlInput.selectionDirection = "backward") : (this._completed = !0, s && (T.setUrlfieldState(this.props.pageId, { editUrl: i.substr(a), selectionStart: t, selectionEnd: i.length - a }), this.refs.urlInput.selectionDirection = "backward")) } }, getCompleted: function(e) { if (!Array.isArray(e)) throw TypeError("getCompleted needs a list of items"); if (0 === e.length || this.props.autocompletionEnabled === !1) return []; for (var t = -1, n = -1, i = -1, a = -1, r = -1, s = 0; s < e.length; s++) { var o = e[s]; if (o.type !== g.OMNI_RESULT_FOLDER_NICKNAME && "string" == typeof o.url && "" !== o.url.length) { var l = o.url.indexOf("://") + 1; l > 0 && (l += 2); var c = o.url.toLowerCase().indexOf(this._typedUrl.toLowerCase()); 0 !== c && (c = o.url.substr(l).toLowerCase().indexOf(this._typedUrl.toLowerCase()), c > -1 && (c += l)); var u = 0 === o.type.indexOf("OMNI_RESULT_BOOKMARK"), A = 0 === c || c === l || c === l + 4 && "www." === o.url.substr(l, 4); if (o.nickname && this._typedUrl.toLowerCase() === o.nickname.toLowerCase()) return o; A ? (o.type !== g.OMNI_RESULT_HISTORY_PROMOTED || i !== -1 && !R(e[i], o) ? o.type !== g.OMNI_RESULT_BOOKMARK_PROMOTED || t !== -1 && !R(e[t], o) ? 0 !== o.type.indexOf("OMNI_RESULT_HISTORY") && 0 !== o.type.indexOf("OMNI_RESULT_INTERNAL") || i !== -1 ? u && (t === -1 || R(e[t], o)) ? t = s : 0 === o.type.indexOf("OMNI_RESULT_TYPED_HISTORY") && (r === -1 ? r = s : R(e[r], o) && (r = s)) : i = s : t = s : i = s, this.props.autcompletionPreferBookmarks !== !0 && a === -1 && (a = [t, i].find(function(e) { return e !== -1 && "number" == typeof e }))) : this._shouldAutocompleteTitle() && u && 0 === o.title.toLowerCase().indexOf(this._typedUrl.toLowerCase()) && (n === -1 ? n = s : e[n].title.length < o.title.length && (n = s)) } } var d = [t, n, r, i].find(function(e) { return e !== -1 && "number" == typeof e }); return this.props.autocompletionPreferBookmarks === !1 ? a !== -1 && (d = a) : t !== -1 ? d = t : n !== -1 && (d = n), G("Complete", d, "bm=", t, "bt", n, "th=", r, "hi=", i), d >= 0 ? e[d] : void 0 }, canUpdateAutocomplete: function(e) { return this._results[g.OMNI_TYPE_HISTORY] && this._results[g.OMNI_TYPE_BOOKMARK] && (e === g.OMNI_TYPE_HISTORY || e === g.OMNI_TYPE_BOOKMARK) }, searchDone: function(e, t) { this._results[e] = !0, J[e] = t, this._complist = [].concat(J[g.OMNI_TYPE_HISTORY] || [], J[g.OMNI_TYPE_BOOKMARK] || [], (J[g.OMNI_TYPE_TYPED_HISTORY] || []).map(function(e) { return L.assign(e, { type: g.OMNI_RESULT_TYPED_HISTORY, id: e.url }) }).sort(function(e, t) { return t.when - e.when }), J[g.OMNI_TYPE_SUGGEST] || [], J[g.OMNI_TYPE_INTERNAL] || []), this.canUpdateAutocomplete(e) && (G("typed", this._typedUrl, "edit", this.props.editUrl, "display", this.props.displayUrl, "complist", this._complist, "incremeneted?", this.inputWasIncr, "decremented?", this.inputWasDecr), this.inputWasIncr ? (this._completedItem = this.getCompleted([].concat(J[g.OMNI_TYPE_HISTORY] || [], J[g.OMNI_TYPE_BOOKMARK] || [], J[g.OMNI_TYPE_INTERNAL] || [])), this._completedItem && this.updateAutocomplete(this._completedItem), G("picked completed item", this._completedItem)) : (this._completedItem = void 0, this._completed = !1), this._isSearching = !1, void 0 !== this._delayedEnterPressedEvent && (this.onEnterKeyPressed(this._delayedEnterPressedEvent), this._delayedEnterPressedEvent = void 0)), this.updateDropDown() }, searchDoneBookmarks: function(e) { return this.searchDone(g.OMNI_TYPE_BOOKMARK, e) }, searchDoneHistory: function(e) { return this.searchDone(g.OMNI_TYPE_HISTORY, e) }, searchDoneTypedHistory: function(e) { return this.searchDone(g.OMNI_TYPE_TYPED_HISTORY, e) }, _maybePrefixWithKeyword: function(e) { return this.props.typedSearchEngine && this.props.typedSearchEngine.Keyword && !e.startsWith(this.props.typedSearchEngine.Keyword + " ") ? this.props.typedSearchEngine.Keyword + " " + e : e }, _maybeRemovePrefix: function(e) { var t = this.props.typedSearchEngine; return t && this._typedUrl.startsWith(t.Keyword + " ") ? this._typedUrl.substr(t.Keyword.length + 1) : e }, searchDoneSuggest: function(e) { var t = this; return e = e.map(function(e) { return { id: e, url: t._maybePrefixWithKeyword(e), type: g.OMNI_RESULT_SUGGEST } }), this.searchDone(g.OMNI_TYPE_SUGGEST, e) }, getBookmarkType: function(e, t) { var n = "", i = t.join(" "), a = new RegExp(k(i), "gi"); return e.nickname && e.nickname === i ? n = g.OMNI_RESULT_BOOKMARK_NICKNAME : e.children || "string" != typeof e.url || (M(i, e.url) ? n = g.OMNI_RESULT_BOOKMARK_URL_HOST : this._shouldAutocompleteTitle() && e.title && e.title.toLowerCase().startsWith(i.toLowerCase()) ? n = g.OMNI_RESULT_BOOKMARK_TITLE_EXACT : null !== e.url.match(a) ? n = "/" === e.url.charAt(e.url.length - 1) ? g.OMNI_RESULT_BOOKMARK_PROMOTED : g.OMNI_RESULT_BOOKMARK_URL : e.title && null !== e.title.match(a) ? n = g.OMNI_RESULT_BOOKMARK_TITLE : e.description && null !== e.description.match(a) && (n = g.OMNI_RESULT_BOOKMARK_DESCRIPTION)), n }, getHistoryType: function(e, t) { var n = "", i = t.join(" ").toLowerCase(); return e.url && e.url.toLowerCase().includes(i) ? n = "/" === e.url.charAt(e.url.length - 1) ? g.OMNI_RESULT_HISTORY_PROMOTED : g.OMNI_RESULT_HISTORY_URL : e.title && e.title.toLowerCase().includes(i) && (n = g.OMNI_RESULT_HISTORY_TITLE), n }, onBookmarksSearched: function(e, t, n, i, r) { var s = [], o = null, l = 100; if (K && console.timeEnd("bookmarks"), this.props.pageId !== n || this._hasLeftPage) return this.searchDoneBookmarks([]); var c = function(t) { if (!t.trash) { var n = u.urls.getDisplayUrl(t.url); o = this.getBookmarkType(t, e), t.children ? ("" !== o && ! function() { var e = []; t.children.forEach(function(t) { t.children || (e = e.concat(t.url)) }), s.push({ id: t.id, urls: e, title: t.title, type: g.OMNI_RESULT_FOLDER_NICKNAME, score: a(l, g.OMNI_RESULT_FOLDER_NICKNAME), nickname: t.nickname }) }(), t.children.forEach(c)) : "" !== o && s.push({ id: t.id, url: n, title: t.title, type: o, score: a(l, o), nickname: t.nickname }) } }.bind(this); r.forEach(c), this.props.pageId !== n || this._hasLeftPage || this.searchDoneBookmarks(s), K && console.log("Bookmark search for", t, "on", n, "returned", s.length, "results", "took", ((Date.now() - i) / 1e3).toFixed(2), "s") }, searchHistory: function(e) { var t = e.replace(/\s+/g, " ").split(" "); if (0 === t.length) return this.searchDoneHistory([]); G("words", t.length, t, "|" + e + "|"), K && console.time("history"); var n = t.join(" ").replace(/^\s+|\s+$/g, ""); G("searching history", n, this.props.pageId); var i = O.history.search; B.historyPrivate.dbSearch && (i = B.historyPrivate.dbSearch), i({ text: n, startTime: 0, maxResults: 1e3 }, function(e, i, a) { var s = this; if (K && console.timeEnd("history"), this.props.pageId !== e || this._hasLeftPage) return this.searchDoneHistory([]); G("got", a.length, "history results for term", n); var o = a.map(function(e) { if ("string" == typeof e.url && e.url.length < 2048 && ["http", "file", "ftp"].some(function(t) { return e.url.startsWith(t) })) { var n = s.getHistoryType(e, t); if ("" !== n) return { id: e.url, lastVisit: e.lastVisitTime, score: r(n, e), title: e.title, type: n, typed: e.typedCount > 0, url: u.urls.getDisplayUrl(e.url) } } }).filter(L.negate(L.isUndefined)).sort(function(e, t) { return t.score - e.score }); this.props.pageId !== e || this._hasLeftPage || this.searchDoneHistory(o), K && console.log("History search for", n, "on", e, "returned", o.length, "results", "took", ((Date.now() - i) / 1e3).toFixed(2), "s") }.bind(this, this.props.pageId, Date.now())) }, searchBookmarks: function(e) { var t = e.replace(/\s+/g, " ").split(" "); if (0 === t.length) return this.searchDoneBookmarks([]); K && console.time("bookmarks"); var n = this.onBookmarksSearched.bind(this, t, e, this.props.pageId, Date.now()); L.delay(n, 50, [f.getBookmarksRootNode()]) }, searchTypedHistory: function(e, t) { this.searchDoneTypedHistory(y.getTypedHistory(function(t) { return t.url.indexOf(e) !== -1 }), t) }, _throttledSearchSuggest: L.throttle(function(e, t) { var n = E.suggest(e, t); Q = L.takeRight(Q.concat(n), 10) }, 500, { leading: !1 }), onClicked: function(e) { var t = e.target, n = e.ctrlKey, i = e.metaKey, a = t.selectionStart === t.selectionEnd, r = 0 === t.selectionStart && t.selectionEnd === t.value.length; if (0 === e.button && Z && Date.now() - Z < z) { if (Z = 0, a || r) { for (var s = 0, o = t.value.length, l = function(e) { if (Y.some(function(n) { return t.value[e] === n })) return s = e + 1, "break" }, c = this._lastSelectionStart; c >= 0; c--) { var u = l(c); if ("break" === u) break } for (var A = function(e) { if (Y.some(function(n) { return t.value[e] === n })) return o = e, "break" }, h = this._lastSelectionEnd; h < t.value.length; h++) { var m = A(h); if ("break" === m) break } this._lastSelectionStart = s, this._lastSelectinEnd = o, T.setUrlfieldState(this.props.pageId, { selectionStart: s, selectionEnd: o }) } } else { Z = Date.now(); var p = "mac" === (0, d.default)() ? i : n; if (p && a) { for (var f = 0, g = function(e) { if (Y.some(function(n) { return "." !== n && t.value[e] === n })) return f = e, "break" }, _ = t.selectionStart; _ < t.value.length; _++) { var v = g(_); if ("break" === v) break } if (f > 0) { var b = t.value.substr(0, f); t.value = b, this.props.fieldGo() } } else this.props.selectOnClick !== !1 && t.selectionStart === t.selectionEnd ? this._focusedOnMouseDown !== N.findDOMNode(this) ? (this._lastSelectionStart = t.selectionStart, this._lastSelectionEnd = t.selectionEnd, "function" == typeof t.select && t.select(), this._focusedOnMouseDown = null) : this.onSelected({ target: t }) : T.setUrlfieldState(this.props.pageId, { selectionStart: t.selectionStart, selectionEnd: t.selectionEnd }) } }, onMouseDown: function(e) { this._focusedOnMouseDown = document.activeElement }, onMouseMove: function(e) { this._isMouseOver = !0, "mac" === (0, d.default)() && e.metaKey || e.ctrlKey ? this.refs.urlInput.style.cursor = "pointer" : "pointer" === this.refs.urlInput.style.cursor && (this.refs.urlInput.style.cursor = "") }, onMouseOver: function(e) { this.onMouseMove(e) }, onMouseOut: function(e) { this.refs.urlInput.style.cursor = "", this._isMouseOver = !1 }, onChanged: function(e) { var t = e.target; T.setUrlfieldState(this.props.pageId, { editUrl: t.value, selectionStart: t.selectionStart, selectionEnd: t.selectionEnd }), "" !== t.value.trim() ? this.performSearch() : (L.filter(Object.keys(J), function(e) { return e !== g.OMNI_TYPE_INTERNAL }).forEach(function(e) { return J[e] = [] }), this.hideDropdown()), "function" == typeof this.props.onUrlFieldChanged && this.props.onUrlFieldChanged(t.value) }, _ignoreNextSelect: !1, onSelected: function(e) { if (this._ignoreNextSelectEvent === !0) return void(this._ignoreNextSelectEvent = !1); if (e && e.target) { var t = e.target; G("got select event", e, e.nativeEvent, t.selectionStart, t.selectionEnd, t.value), "" !== t.value.trim() ? (T.setUrlfieldState(this.props.pageId, { selectionStart: t.selectionStart, selectionEnd: t.selectionEnd }), t.selectionEnd === t.value.length && (this._typedUrl = t.value.substr(0, t.selectionStart), this._ignoreNextSelectEvent = !0)) : T.setUrlfieldState(this.props.pageId, { selectionStart: null, selectionEnd: null }) } }, onCompositionStart: function() { this._isIMEOpen = !0 }, onCompositionEnd: function() { this._isIMEOpen = !1 }, _cleanupState: function() { this._results = {}, this._completed = !1, this._complist = [], this._delayedEnterPressedEvent = this._completedItem = void 0 }, _throttledSearch: L.throttle(function(e, t, n) { if (G("throttled search fired", this._typedUrl, n, this.props.pageId), this.props.pageId === n && !this._hasLeftPage) if (this._isSearching) this._isSearching = !1, this._throttledSearch.apply(this, arguments); else { this._isSearching = !0, this._cleanupState(), this.searchHistory(this._typedUrl), this.searchBookmarks(this._typedUrl), this.searchTypedHistory(this._typedUrl); var i = this.props, a = i.typedSearchEngine, r = i.defaultSearchEngine; if (this.props.suggestEnabled && (a && a.SuggestUrl || !a && r && r.SuggestUrl)) { var s = a && this._maybeRemovePrefix(this._typedUrl) || this._typedUrl; s.trim() ? this._throttledSearchSuggest(s, a || r) : this.searchDoneSuggest([]) } else this.searchDoneSuggest([]) } }, 200), performSearch: function() { var e = N.findDOMNode(this); G("performing search, val=", e.value, o(e.value), "typed=", this._typedUrl, o(this._typedUrl)), e.value !== this._typedUrl && "" !== e.value.trim() && (G("edit", this.props.editUrl, "display", this.props.displayUrl, "el", e.value, "typed", this._typedUrl), this._typedUrl ? (this.inputWasIncr = e.value.startsWith(this._typedUrl) || !(this.props.editUrl || "").startsWith(e.value), this.inputWasDecr = (this._typedUrl || "").startsWith(e.value) && e.value.length < this._typedUrl.length) : (this.inputWasIncr = e.value.startsWith(this.props.editUrl) || null == this.props.editUrl || null == this.props.displayUrl, this.inputWasDecr = (this.props.displayUrl || "").startsWith(e.value)), this.inputWasDecr && this.inputWasIncr && (this.inputWasIncr = !1), this.inputWasDecr || this.inputWasIncr || (this.inputWasIncr = !0), (this.inputWasDecr || !this.inputWasIncr && !this.inputWasDecr) && (this._completedItem = void 0, J[g.OMNI_TYPE_SUGGEST] = []), G("Incremented:", this.inputWasIncr, "decremented:", this.inputWasDecr, "value", e.value, "display", this.props.displayUrl, "edit", this.props.editUrl, "typed", this._typedUrl), this._typedUrl = e.value, e.value.length > 0 ? (this.inputWasIncr && this._completedItem && "undefined" != typeof this._completedItem.url && this._completedItem.url.includes(this._typedUrl) && (G("updating with", this._completedItem), this._completed = !1, this.updateAutocomplete(this._completedItem)), this._hasLeftPage = !1, this._throttledSearch(this, e, this.props.pageId)) : (this.hideDropdown(), G("hiding dropdown, no search"))) }, isUrlRevertable: function() { var e = N.findDOMNode(this); return e.value !== this.props.url && e.value !== this.props.displayUrl }, removeSelection: function() { var e = this, n = window.getSelection(); n && (n.empty(), G("removed selection"), t.nextTick(function() { return T.setUrlfieldState(e.props.pageId, { selectionStart: null, selectionEnd: null }) })) }, revertUrl: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (this.isUrlRevertable()) { var n = N.findDOMNode(this); G("reverting from", n.value, "to either", this.props.url, "or", this.props.displayUrl, "select?", t), this._typedUrl = ""; var i = Object.assign({ editUrl: null }, t ? { selectionStart: 0, selectionEnd: this.props.url.length } : {}); T.setUrlfieldState(e, i) } }, _onEscPressed: function(e) { this.props.isOmniDropdownOpen === !0 || this.props.isTypedHistoryOpen === !0 ? this.hideDropdown() : this.isUrlRevertable() ? (G("reverting url because its revertable"), this.revertUrl(this.props.pageId, !0)) : (G("not revertable - moving focus to webview"), this.removeSelection(), I.doAction("focusWebView")) }, _onDelete: function(e) { "function" == typeof this.props.onDelete && this.props.onDelete(e) }, hideDropdown: function() { "function" == typeof this.props.hideDropdown && this.props.hideDropdown() }, setAutocompleteHighlight: function() { for (var e = arguments.length, t = Array(e), n = 0; n < e; n++) t[n] = arguments[n]; this.props.setAutocompleteHighlight.apply(this, t) }, _modEnter: function() { var e = N.findDOMNode(this), t = this._typedUrl || ""; if (!t.startsWith("-") && !t.endsWith("-") && !t.includes(" ") && t.match(/(w{3}\.)?([a-z0-9\.\-]+)$/i)) { var n = RegExp.$2; if (!t.endsWith("." + m.default.getPublicSuffix(n))) { var i = "www." + n + "." + ((this.props.autocompleteTLD || "").replace(/^\./, "") || "com"); e.value = i, T.setUrlfieldState(this.props.pageId, { editUrl: i }), e.blur() } } this.props.fieldGo() }, onClipboardEvent: function(e) { if (0 === this.props.selectionStart && null == this.props.editUrl) { var t = e.target.value.substring(0, this.props.selectionEnd); if (this.props.encodeCutCopy !== !0 && (t = u.urls.getDisplayUrl(t)), V(t) && t.match(/[\.\/]/)) { var n = x.parse(u.urls.getDisplayUrl(this.props.url)); t = n.protocol + (n.slashes ? "//" : "") + t } e.clipboardData.setData("text", t.replace(/ /g, "%20")), "cut" === e.type && (T.setUrlfieldState(this.props.pageId, { editUrl: e.target.value.substr(this.props.selectionEnd) }), e.target.setSelectionRange(0, 0)), e.preventDefault() } }, _onOmniSaved: function() { var e = N.findDOMNode(this); e.value && (this._cleanupState(), T.setUrlfieldState(this.props.pageId, { editUrl: e.value, selectionStart: e.value.length, selectionEnd: e.value.length })) }, _saveStateOnKeyEvent: function(e) { var n = this, i = this.refs.urlInput; (0, c.default)(e) || t.nextTick(function() { T.setUrlfieldState(n.props.pageId, { selectionStart: i.selectionStart, selectionEnd: i.selectionEnd }) }) }, _initializeNavigation: function() { var e = this; this._isNavigationInitialized !== !0 && ! function() { var t = new F(e, e._onOmniSaved); e._up = t.up.bind(t), e._down = function(n) { return e.props.isOmniDropdownOpen || e.props.isTypedHistoryOpen ? t.down(n) : void(e.props.triggerTypedHistory !== !1 && T.showTypedHistory()) }, e._pageUp = t.pageUp.bind(t), e._pageDown = t.pageDown.bind(t), _.bind("up", e._up), _.bind("down", e._down), _.bind("pageup", e._pageUp), _.bind("pagedown", e._pageDown), e._isNavigationInitialized = !0, _.bind("esc", e._onEscPressed), _.bind("shift+del", e._onDelete) }() }, _cleanupNavigation: function() { if (this._isNavigationInitialized === !0) try { _.unbind("up", this._up), _.unbind("down", this._down), _.unbind("pageup", this._pageUp), _.unbind("pagedown", this._pageDown), this._up = this._down = this._pageUp = this._pageDown = void 0, _.unbind("esc", this._onEscPressed), _.unbind("shift+del", this._onDelete) } finally { this._isNavigationInitialized = !1 } }, onFocus: function(e) { G("focus"), "function" == typeof this.props.hideDropdown && (document.addEventListener("copy", this.onClipboardEvent, !1), document.addEventListener("cut", this.onClipboardEvent, !1), this._initializeNavigation()), this.state.isFocused === !1 && "function" == typeof this.props.onFocus && (this.props.onFocus(), this.setState({ isFocused: !0 })) }, onBlur: function(e) { var n = this; G("blur"), "function" == typeof this.props.onBlur && this.props.onBlur(), "function" == typeof this.props.hideDropdown && (document.removeEventListener("copy", this.onClipboardEvent, !1), document.removeEventListener("cut", this.onClipboardEvent, !1), this._cleanupNavigation()), e && e.relatedTarget && (this.removeSelection(), this.hideDropdown()), t.nextTick(function() { return T.setUrlfieldState(n.props.pageId, { hasLostFocus: !0 }) }), this.setState({ isFocused: !1 }) }, onKeyDown: function(e) { var t = this._isMouseOver === !0 && "mac" === (0, d.default)() && "Meta" === e.key || "Control" === e.key; (t || document.activeElement === this.refs.urlInput) && ((0, c.default)(e) || "ArrowRight" !== e.key && "ArrowLeft" !== e.key ? "Enter" === e.key && (e.altKey || e.ctrlKey) ? this.onKeyPressed(e) : t && (this.refs.urlInput.style.cursor = "pointer") : this._saveStateOnKeyEvent(e)) }, onKeyUp: function(e) { var t = this._isMouseOver === !0 && "mac" === (0, d.default)() && "Meta" === e.key || "Control" === e.key; (t || document.activeElement === this.refs.urlInput) && t && "pointer" === this.refs.urlInput.style.cursor && (this.refs.urlInput.style.cursor = "") }, onEnterKeyPressed: function(e) { var n = this, i = e.target; if (G("enter pressed!!"), "" === i.value.trim()) return e.preventDefault(); if ("function" == typeof this.props.onUrlFieldChanged) return void this.props.onUrlFieldChanged(i.value); if (this._isSearching) return e.persist(), void(this._delayedEnterPressedEvent = e); var a = {}, r = "mac" === (0, d.default)(), s = e.shiftKey && "shift" === this.props.openShortcutModifier || e.altKey && "alt" === this.props.openShortcutModifier, o = s && (r ? "Meta" === e.key : e.ctrlKey === !0), l = !o && e.ctrlKey === !0; if (s && (a.inCurrent = !1, a.inBackground = o), this._hasLeftPage = !0, this.removeSelection(), this.hideDropdown(), e.preventDefault(), l) this._modEnter(e); else if (f.hasNickname(this._typedUrl)) { var c = p.getOpenOptionsFromEvent(e); c.bookmarks = f.getNicknamed(this._typedUrl), p.open(c, !0), this.revertUrl(this.props.pageId) } else this._completedItem && (this._shouldAutocompleteTitle() && (this._completedItem.title || "").toLowerCase() === i.value.toLowerCase() || this._completedItem.url && W(P(this._completedItem.url)) === W(P(i.value))) ? (a.addTypedHistory = !0, a.enableSearch = !1, T.go(this._completedItem.url, a)) : s || o ? ! function() { n.props.fieldGo(e, a); var i = e.shiftKey === !0; t.nextTick(function() { return n.revertUrl(n.props.pageId, i) }) }() : this.props.fieldGo(e, a); e.ctrlKey || setTimeout(function() { document.activeElement === N.findDOMNode(n) && document.activeElement.blur() }, 40) }, onKeyPressed: function(e) { this.props.onKeyPressed && this.props.onKeyPressed(e), "function" == typeof this._throttledSearchSuggest.cancel && this._throttledSearchSuggest.cancel(), "function" == typeof this._throttledSearch.cancel && this._throttledSearch.cancel(), e && e.key && ("Enter" === e.key ? this.onEnterKeyPressed(e) : (0, c.default)(e) || this._saveStateOnKeyEvent(e)) }, onDrop: function(e) { "function" == typeof this.props.onDrop && (e.stopPropagation(), e.preventDefault(), this.props.onDrop(e)) }, onDragStart: function(e) { var t = N.findDOMNode(this.refs.urlInput), n = t.value.substr(t.selectionStart, t.selectionEnd - t.selectionStart); e.dataTransfer.setData("text/plain", n) }, componentDidUpdate: function() { if (!this._isIMEOpen) { var e = N.findDOMNode(this); if (document.activeElement === e) { var t = "number" == typeof this.props.selectionStart ? this.props.selectionStart : -1, n = "number" == typeof this.props.selectionEnd ? this.props.selectionEnd : -1; t > -1 && e.selectionStart !== t && (e.selectionStart = t, G("setting selectionStart on update", t, " was ", e.selectionStart)), n > -1 && e.selectionEnd !== n && (e.selectionEnd = n, G("setting selectionEnd on update", n, " was ", e.selectionEnd)) } } }, render: function() { var e = null == this.props.editUrl ? this.props.displayUrl : this.props.editUrl, t = w({ url: !0, "vivaldi-addressfield": !0 }); return b.createElement("input", { ref: "urlInput", autoComplete: "off", autoFocus: this.props.autoFocus, className: this.props.className ? this.props.className : t, disabled: this.props.disabled ? this.props.disabled : null, onChange: this.onChanged, onClick: this.onClicked, onContextMenu: this.onClicked, onDragStart: this.onDragStart, onDrop: this.onDrop, onKeyPress: this.onKeyPressed, onMouseDown: this.onMouseDown, onMouseOut: this.onMouseOut, onMouseMove: this.onMouseMove, placeholder: this.props.placeholder ? this.props.placeholder : null, spellCheck: "false", title: this.props.title ? this.props.title : null, type: "text", value: e, __source: { fileName: s, lineNumber: 1568 } }) } }); e.exports = q }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_137 // ========================= "use strict"; var i, a = n(4); a.runtime.getPlatformInfo(function(e) { i = e.os }); var r = function(e) { return e && e.constructor === Array && (e = e.join(", ")), e && (e = e.replace(/left/g, "←").replace(/right/g, "→").replace(/up/g, "↑").replace(/down/g, "↓"), e = "mac" === i ? e.replace(/shift/g, "⇧").replace(/capslock/g, "⇪").replace(/command/g, "⌘").replace(/meta/g, "⌘").replace(/ctrl/g, "⌃").replace(/alt/g, "⌥").replace(/([^+ ]){1}\+/g, "$1") : e.replace(/(^|\+)(\w)/g, function(e) { return e.toUpperCase() })), e }, s = function(e) { return e && e.constructor === Array && (e = e.join(", ")), e && (e = "mac" === i ? e.replace(/shift/g, "⇧").replace(/capslock/g, "⇪").replace(/command/g, "⌘").replace(/meta/g, "⌘").replace(/ctrl/g, "⌃").replace(/alt/g, "⌥").replace(/([^+ ]){1}\+/g, "$1") : e.replace(/(^|\+)(\w)/g, function(e) { return e.toUpperCase() })), e }; e.exports = r, s }, function(e, t, n) { // ========================= // Function_138 // ========================= "use strict"; function i(e, t) { var n = ["get", "getTokens", "markSeen", "getSearchListThreaded", "getSearchList"]; return n.includes(e) ? A.HIGH_PRIORITY : "add" === e && 1 === t[2].length ? A.HIGH_PRIORITY : A.LOW_PRIORITY } function a(e) { var t = !0, n = !1, i = void 0; try { for (var a, r = e[Symbol.iterator](); !(t = (a = r.next()).done); t = !0) { var s = a.value; s.tokens = l.getMessageTokens({ from: s.from, to: s.to, cc: s.cc, replyTo: s.replyTo, subject: s.subject, bodyParts: s.bodyParts }) } } catch (e) { n = !0, i = e } finally { try { !t && r.return && r.return() } finally { if (n) throw i } } } var r = n(361), s = n(790), o = n(792), l = n(364), c = n(117), u = n(o() ? 1286 : 791), A = c({ LOW_PRIORITY: null, HIGH_PRIORITY: null }), d = new s(u, Object.keys(A)); e.exports = Object.keys(r).reduce(function(e, t) { return "function" == typeof r[t] && ("add" === t ? e[t] = function() { for (var e = arguments.length, n = Array(e), r = 0; r < e; r++) n[r] = arguments[r]; a(n[2]); var s = i(t, n); return d.work(t, n, s) } : "getTokens" === t ? e[t] = r.getTokens : e[t] = function() { for (var e = arguments.length, n = Array(e), a = 0; a < e; a++) n[a] = arguments[a]; var r = i(t, n); return d.work(t, n, r) }), e }, {}) }, , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_160 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n\n' }, , , , , , , function(e, t, n) { // ========================= // Function_167 // ========================= "use strict"; function i(e, t, n) { var i = o.getNodeById(e); if (i) { var a = { attachments: i.attachments }; !i.url && t && (a.url = t), a.attachments.push({ id: "0", content: n }), f.notes.update(e, a) } } function a(e) { i(e.target.id, void 0, e.target.result) } var r = n(111), s = n(176), o = n(247), l = n(131), c = n(58), u = n(17), A = n(20), d = A.urls, h = n(8), m = n(6), p = n(3), f = n(10), g = !1, _ = { loadPromise: function() { return new Promise(function(e, t) { f.notes.getTree(function(t) { h.handleViewAction({ actionType: m.NOTES_LOAD_ALL, notes: t }), e() }) }) }, addItem: function(e, t) { h.handleViewAction({ actionType: m.NOTES_ADD_ITEM, id: e, item: t }), c.getIsActiveWindow() && t.url && (p.getSync("SHOW_NOTESPANEL_FOR_NEW_NOTES") && l.showContent(c.getNotesName(), !0, !1), p.getSync("NOTES_ADD_SCREENSHOT") && _.addScreenshot(e)) }, moveItem: function(e, t) { h.handleViewAction({ actionType: m.NOTES_MOVE_ITEM, id: e, targetFolder: t.parentId, targetIndex: t.index }) }, changeItem: function(e, t) { h.handleViewAction({ actionType: m.NOTES_CHANGE_ITEM, id: e, changes: t }) }, removeItem: function(e) { h.handleViewAction({ actionType: m.NOTES_REMOVE_ITEM, id: e }) }, emptyTrash: function() { f.notes.emptyTrash(function(e) { e === !1 && console.warn("Empty trash failed.") }) }, addSelectedTextFromActivePage: function() { var e = u.getActivePage().get("id"), t = u.getActivePage().get("url"); f.utilities.getSelectedText(e.toString(), function(e) { e.length > 0 && f.notes.create({ type: "note", content: e, url: t }) }) }, addScreenshot: function(e) { var t = r.getActiveWebView(); if (t) { var n = { scale: 1, width: 0, height: 0 }; t.getThumbnail(n, i.bind(this, e, t.src)) } }, addAreaCapture: function(e) { s.captureArea("png", "", !0, function(t, n) { if (!t && n && n.length) { var a = r.getActiveWebView(), s = !a || d.isInternalUrl(a.src); i(e, s ? "" : a.src, n) } }) }, addImageFile: function(e, t) { var n = new FileReader; n.id = e, n.onloadend = a, n.readAsDataURL(t) }, removeAttachment: function(e, t) { var n = o.getNodeById(e); if (n) { var i = n.attachments.filter(function(e, n) { return n !== t }); f.notes.update(e, { attachments: i }) } }, disableNoteMutationHandlers: function() { g = !0 }, enableNoteMutationHandlers: function() { g = !1, _.loadPromise() } }; f.notes.onImportBegan.addListener(_.disableNoteMutationHandlers), f.notes.onImportEnded.addListener(_.enableNoteMutationHandlers); var v = { onChanged: m.CHROME_NOTES_CHANGED, onCreated: m.CHROME_NOTES_CREATED, onRemoved: m.CHROME_NOTES_REMOVED, onMoved: m.CHROME_NOTES_MOVED }; Object.keys(v).forEach(function(e) { return f.notes[e].addListener(function() { g || ("onCreated" === e ? _.addItem(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1]) : "onMoved" === e ? _.moveItem(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1]) : "onChanged" === e ? _.changeItem(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1]) : "onRemoved" === e && _.removeItem(arguments.length <= 0 ? void 0 : arguments[0])) }) }), e.exports = _ }, function(e, t, n) { // ========================= // Function_168 // ========================= "use strict"; var i = n(73), a = i.tabToPage, r = n(15), s = n(174), o = n(8), l = n(6), c = n(4), u = n(10), A = { emptyTrash: function() { u.utilities.clearAllRecentlyClosedSessions() }, undelete: function(e) { r.setIsRestored(a(e), !0), c.sessions.restore(e.sessionId, function(t) { c.runtime.lastError && console.warn("Error restoring tab: ", e, c.runtime.lastError) }) }, undeletePrevious: function() { var e = s.getTrash().find(function(e) { return e.tab }); e && A.undelete(e) }, restoreWindow: function(e) { c.sessions.restore(e.sessionId, function(t) { c.runtime.lastError && console.warn("Error restoring page: ", e, c.runtime.lastError.message) }) }, setTrash: function(e, t) { o.handleViewAction({ actionType: l.TRASH_SET_STATE, page: e, trashState: t }) }, loadPromise: function() { return new Promise(function(e, t) { return c.sessions.getRecentlyClosed(function(t) { o.handleViewAction({ actionType: l.CHROME_SET_SESSION, session: t }), e() }) }) } }; c.sessions.onChanged.addListener(A.loadPromise), e.exports = A }, function(e, t, n) { // ========================= // Function_169 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/SortingSelector.jsx", a = n(1), r = n(5), s = n(2), o = n(98), l = n(9), c = a.createClass({ displayName: "SortingSelector", mixins: [l], propTypes: { fields: a.PropTypes.array.isRequired, fullsize: a.PropTypes.bool, keyAccess: a.PropTypes.oneOf(["-1", "0"]), onSortChange: a.PropTypes.func, sortField: a.PropTypes.string.isRequired, sortOrder: a.PropTypes.number.isRequired }, updateField: function(e) { var t = e.target.value, n = void 0; n = "manually" === t ? o.NO_SORTING : "manually" !== t && this.props.sortOrder === o.NO_SORTING ? o.ASCENDING_SORT : this.props.sortOrder, this.props.onSortChange(n, t) }, updateSort: function(e) { var t = void 0; if (e === this.props.sortField) switch (this.props.sortOrder) { case o.ASCENDING_SORT: t = o.DESCENDING_SORT; break; case o.DESCENDING_SORT: t = o.NO_SORTING; break; case o.NO_SORTING: t = o.ASCENDING_SORT } else t = o.ASCENDING_SORT; this.props.onSortChange(t, e) }, updateOrder: function() { var e = this.props.sortOrder === o.DESCENDING_SORT ? o.ASCENDING_SORT : o.DESCENDING_SORT; this.props.onSortChange(e, this.props.sortField) }, _getSortLabel: function(e, t) { var l = r({ "sortselector-button": !0, "sortselector-button-active": this.props.sortField === e && this.props.sortOrder !== o.NO_SORTING, "direction-ascending": this.props.sortField === e && this.props.sortOrder === o.ASCENDING_SORT, "direction-descending": this.props.sortField === e && this.props.sortOrder === o.DESCENDING_SORT }); return a.createElement("label", { key: "key_" + e, __source: { fileName: i, lineNumber: 88 } }, a.createElement("button", { className: l, onClick: this.updateSort.bind(this, e), title: s("Toggle Sort Order"), tabIndex: this.props.keyAccess, dangerouslySetInnerHTML: { __html: t + n(460) }, __source: { fileName: i, lineNumber: 89 } })) }, render: function() { var e = this, t = r({ "sortselector-button": !0, "direction-ascending": this.props.sortOrder === o.ASCENDING_SORT, "direction-descending": this.props.sortOrder === o.DESCENDING_SORT }); if (this.props.fullsize === !0) { var l = this.props.fields.map(function(t) { return e._getSortLabel(t.value, t.text) }); return a.createElement("div", { className: "sortselector sortselector-tableheader", __source: { fileName: i, lineNumber: 115 } }, l) } var c = this.props.fields.map(function(e) { return a.createElement("option", { key: e.value, value: e.value, __source: { fileName: i, lineNumber: 121 } }, e.fullScreenTitle) }); return c.unshift(a.createElement("option", { key: "manually", value: "manually", __source: { fileName: i, lineNumber: 124 } }, s("Sort Manually"))), a.createElement("div", { className: "sortselector sortselector-compact", __source: { fileName: i, lineNumber: 128 } }, a.createElement("select", { className: "sortselector-dropdown", title: s("Sort by..."), value: this.props.sortField, tabIndex: this.props.keyAccess, onChange: this.updateField, __source: { fileName: i, lineNumber: 129 } }, c), a.createElement("button", { className: t, onClick: this.updateOrder, title: s(this.props.sortOrder === o.ASCENDING_SORT ? "Sort Descending" : "Sort Ascending"), tabIndex: this.props.keyAccess, disabled: this.props.sortOrder === o.NO_SORTING && "disabled", dangerouslySetInnerHTML: { __html: n(460) }, __source: { fileName: i, lineNumber: 137 } })) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_170 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/thumbnail/Thumbnail.jsx", a = n(1), r = n(9), s = "/resources/bookmark_item.png", o = 4, l = a.createClass({ displayName: "Thumbnail", mixins: [r], getInitialState: function() { return { imageUrl: this.props.src || s } }, componentDidMount: function() { this.loadImage(0) }, componentWillReceiveProps: function(e) { e.src !== this.props.src && this.setState({ imageUrl: e.src }, this.loadImage.bind(this, 0)) }, loadImage: function(e) { var t = this, n = this.state.imageUrl, i = new Image; i.onload = function() { t.refs.thumbnail && t.isMounted() && (t.refs.thumbnail.style.backgroundImage = "url(" + i.src + ")") }, i.onError = function() { t.refs.thumbnail && t.isMounted() && (t.refs.thumbnail.style.backgroundImage = "url(" + s + ")", e < o && t.props.src && ! function() { var i = e + 1; setTimeout(function() { this.isMounted() && this.loadImage(n, i) }.bind(t), 1e3 * Math.pow(i, 2)) }()) }, i.src = n }, render: function() { return a.createElement("div", { ref: "thumbnail", className: "thumbnail-image", style: { backgroundImage: "url(" + this.state.imageUrl + ")" }, onMouseEnter: this.props.onMouseEnter, onMouseLeave: this.props.onMouseLeave, onMouseDown: this.props.onMouseDown, onMouseUp: this.props.onMouseUp, __source: { fileName: i, lineNumber: 73 } }) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_171 // ========================= "use strict"; var i = n(117); e.exports = Object.assign({ OMNI_RESULT_COUNT: 15, OMNI_RESULT_COUNT_SUGGEST: 5 }, i({ OMNI_RESULT_BOOKMARK_DESCRIPTION: null, OMNI_RESULT_BOOKMARK_NICKNAME: null, OMNI_RESULT_BOOKMARK_PROMOTED: null, OMNI_RESULT_BOOKMARK_TITLE: null, OMNI_RESULT_BOOKMARK_TITLE_EXACT: null, OMNI_RESULT_BOOKMARK_UNKNOWN: null, OMNI_RESULT_BOOKMARK_URL: null, OMNI_RESULT_BOOKMARK_URL_HOST: null, OMNI_RESULT_FOLDER_NICKNAME: null, OMNI_RESULT_HISTORY_PROMOTED: null, OMNI_RESULT_HISTORY_TITLE: null, OMNI_RESULT_HISTORY_UNKNOWN: null, OMNI_RESULT_HISTORY_URL: null, OMNI_RESULT_INTERNAL: null, OMNI_RESULT_SUGGEST: null, OMNI_RESULT_TYPED_HISTORY: null, OMNI_RESULT_TYPED_HISTORY_SEARCH: null, OMNI_TYPE_BOOKMARK: null, OMNI_TYPE_HISTORY: null, OMNI_TYPE_INTERNAL: null, OMNI_TYPE_SEARCH: null, OMNI_TYPE_SUGGEST: null, OMNI_TYPE_TYPED_HISTORY: null })) }, function(e, t, n) { // ========================= // Function_172 // ========================= "use strict"; function i(e) { u = c.fromJS(e) } function a(e, t) { var n = A[e] || c.Map(); A[e] = n.set(t, !0) } function r(e, t) { A[e] && (A[e] = A[e].delete(t)) } var s = n(8), o = n(6), l = n(18).EventEmitter, c = n(27), u = c.List(), A = {}, d = Object.assign({}, l.prototype, { getContentScripts: function(e) { return u }, getPageScripts: function(e) { return A[e] || c.Map() }, emitChange: function() { this.emit(o.CHANGED) }, addChangeListener: function(e) { this.on(o.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(o.CHANGED, e) } }); s.register(function(e) { var t = e.action; switch (t.actionType) { case o.CONTENT_SCRIPT_LOAD: i(t.contentScripts), d.emitChange(); break; case o.CONTENT_SCRIPT_PAGE_ADD: a(t.pageId, t.script), d.emitChange(); break; case o.CONTENT_SCRIPT_PAGE_REMOVE: r(t.pageId, t.script), d.emitChange(); break; default: return !0 } return !0 }), e.exports = window.ContentScriptStore = d }, function(e, t, n) { // ========================= // Function_173 // ========================= "use strict"; function i(e, t) { return l.parse(e).hostname === l.parse(t).hostname } function a(e, t, n, a) { e.rewindHistory || (e.rewindHistory = [], e.rewindIndexes = []); var r = e.prev && e.prev.url && i(e.prev.url, t.url); return n !== a.length - 1 && (e.prev && !r && n < a.length - 1 ? (a.length - 1 - n > 1 && (e.rewindHistory.length > 0 && i(e.rewindHistory[e.rewindHistory.length - 1].url, e.prev.url) && e.rewindHistory[e.rewindHistory.length - 1].url !== e.prev.url ? (e.rewindHistory.push(e.prev), e.rewindIndexes.push(a.length - n - 2)) : i(a[a.length - 1].url, e.prev.url) && a[a.length - 1].url !== e.prev.url && (e.rewindHistory.push(e.prev), e.rewindIndexes.push(a.length - n - 2))), e.rewindHistory.push(t), e.rewindIndexes.push(a.length - n - 1)) : 0 === n && a.length > 0 && (e.rewindHistory.push(t), e.rewindIndexes.push(a.length - n - 1))), e.prev = t, e } var r = n(8), s = n(6), o = n(18).EventEmitter, l = n(36), c = {}, u = {}, A = Object.assign({}, o.prototype, { getState: function(e) { return c[e.get("id")] }, setState: function(e, t) { c[e] = t }, getFastForwardUrl: function(e) { return (c[e.get("id")] || u).forwardUrl || "" }, getRewindRelativeIndex: function(e) { if (c[e.get("id")]) { var t = c[e.get("id")].rewindIndexes; if (Array.isArray(t) && t.length > 0) return t[0] } return 0 }, getRewindHistory: function(e) { return (c[e.get("id")] || u).rewindHistory }, getRewindIndexes: function(e) { return (c[e.get("id")] || u).rewindIndexes }, emitChange: function() { this.emit(s.CHANGED) }, addChangeListener: function(e) { this.on(s.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(s.CHANGED, e) }, setFastForwardUrl: function(e) { "number" == typeof e.pageId && (c[e.pageId] = Object.assign({}, c[e.pageId], { forwardUrl: e.forwardUrl }), A.emitChange()) }, _pageHistoryToRewindHistory: function(e, t, n) { n = n.slice(0, t + 1); var i = n.reduceRight(a, {}); return i }, setRewindInfo: function(e) { var t = this._pageHistoryToRewindHistory(e.currentHostname, e.currentIndex, e.history), n = t.rewindHistory, i = t.rewindIndexes; c[e.pageId] = Object.assign({}, c[e.pageId], { rewindHistory: n, rewindIndexes: i }), A.emitChange() } }); r.register(function(e) { var t = e.action; switch (t.actionType) { case s.FAST_FORWARD_SET_FORWARD_URL: A.setFastForwardUrl(t); break; case s.CHROME_TABS_UPDATED: "loading" === t.args[1].status && A.setFastForwardUrl({ pageId: t.args[2].id, forwardUrl: "" }); break; case s.FAST_FORWARD_SET_REWIND_INFO: A.setRewindInfo(t); break; case s.FAST_FORWARD_COPY_STATE: A.setState(t.pageId, t.fastForwardState), A.emitChange(); break; default: return !0 } return !0 }), e.exports = A }, function(e, t, n) { // ========================= // Function_174 // ========================= "use strict"; function i(e) { A = e, d.emitChange() } var a = n(18).EventEmitter, r = n(8), s = n(6), o = n(212), l = n(73), c = l.tabToPage, u = "change", A = [], d = Object.assign({}, a.prototype, { getTrash: function() { arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : A; return h(A) }, emitChange: function() { this.emit(u) }, addChangeListener: function(e) { this.on(u, e) }, removeChangeListener: function(e) { this.removeListener(u, e) } }), h = o(1)(function(e) { return e.filter(function(e) { if (e.tab) { var t = c(e.tab); return !t.getIn(["extData", "preventUndelete"]) } if (e.window) { var n = e.window.extData ? JSON.parse(e.window.extData) : {}; return "popup" !== n.windowType } }) }); r.register(function(e) { var t = e.action; switch (t.actionType) { case s.CHROME_SET_SESSION: i(t.session); break; default: return !0 } }), e.exports = d }, function(e, t, n) { // ========================= // Function_175 // ========================= "use strict"; var i = n(52), a = n(2), r = n(4), s = " -_()jygpq0123456789", o = void 0, l = { preferCamelCaseMnemonic: function() { return 0 === r.i18n.getUILanguage().indexOf("en") }, appendMnemonic: function() { return void 0 === o && (o = ["ja", "zh-CN", "zh-TW", "ja", "ko"].indexOf(r.i18n.getUILanguage()) > -1), o }, ellipsisString: function() { return a("...") }, getShortcutsForMenuItems: function(e) { for (var t = Object.keys(i.getCommandShortcuts()).filter(function(e) { return e.includes("alt+") && 5 === e.length }), n = [], a = [], r = void 0, s = 0; s < e.length; s++) { var o = e[s]; if (void 0 !== o.name && "---" !== o.name && o.mnemonic !== !1) { var l = o.name.indexOf("&"); l !== -1 && l + 1 < o.name.length && (r = o.name.toUpperCase().charCodeAt(l + 1), n.indexOf(r) === -1 && n.push(r)) } } for (var c = 0; c < e.length; c++) { var u = e[c], A = this.appendMnemonic() ? u.englishName : u.name; if (void 0 !== A && "---" !== u.name && u.mnemonic !== !1) { var d = ""; if (n.length > 0) { var h = A.indexOf("&"); if (h !== -1 && h + 1 < A.length) { r = A.toUpperCase().charCodeAt(h + 1), d = "alt+" + String.fromCharCode(r).toLowerCase(), t.includes(d) ? a.push({ index: c, keyCode: r, mnemonicOffset: h }) : (a.push({ index: c, shortcut: d, keyCode: r, mnemonicOffset: h }), t.push(d)); continue } } for (var m = !1, p = 0; !m;) if (r = A.toUpperCase().charCodeAt(p), n.indexOf(r) === -1) if (d = "alt+" + String.fromCharCode(r).toLowerCase(), t.includes(d)) { if (A.length === p + 1) break; p += 1 } else m = !0; else { if (A.length === p + 1) break; p += 1 } m ? (a.push({ index: c, shortcut: d, keyCode: r, mnemonicOffset: p }), t.push(d)) : a.push({ index: c }) } else a.push({ index: c }) } return a }, findNextFreeCharacter: function(e, t, n) { for (var i = 0; i !== -1;) { var a = t.charAt(i), r = a.toUpperCase(); if (s.indexOf(a) === -1 && e.indexOf(r) === -1 && (0 === i || n === !0 ? a === r : 1)) return i; i = t.indexOf(" ", i + 1), i !== -1 && i++ } for (var o = 0; o < t.length; o++) { var l = t.charAt(o); if (s.indexOf(l) === -1 && e.indexOf(l.toUpperCase()) === -1) return o } }, installMnemonics: function(e, t) { for (var n = this.preferCamelCaseMnemonic(), i = this.appendMnemonic(), a = "", r = 0; r < e.length; r++) { var s = e[r]; if (void 0 === s.name && (s.name = s.label, s.englishName = s.labelEnglish), void 0 !== s.name) if (s.ellipsis && (s.name += this.ellipsisString()), "---" !== s.name && s.mnemonic !== !1) if (t) { var o = i ? s.englishName : s.name, l = t[r].mnemonicOffset; void 0 !== l && l + 1 <= s.name.length ? ("&" === s.name[l] ? s.nameWithMnemonic = s.name : i ? s.nameWithMnemonic = s.name + " (&" + o.charAt(l).toUpperCase() + ")" : s.nameWithMnemonic = s.name.slice(0, l) + "&" + s.name.slice(l), a += s.name.charAt(l + 1).toUpperCase()) : (l = s.name.indexOf("&"), s.nameWithMnemonic = l !== -1 ? s.name : void 0) } else { var c = s.name.indexOf("&"); c !== -1 && c + 1 < s.name.length ? (s.nameWithMnemonic = s.name, a += s.name.charAt(c + 1).toUpperCase()) : s.nameWithMnemonic = void 0 } else if (s.mnemonic === !1) { var u = s.name.indexOf("&"); u !== -1 && (s.nameWithMnemonic = s.name.replace(/\&/g, "&&")) } } for (var A = 0; A < e.length; A++) { var d = e[A], h = i ? d.englishName : d.name, m = void 0 !== h && "---" !== d.name && d.mnemonic !== !1; if (m && void 0 === d.nameWithMnemonic) { var p = this.findNextFreeCharacter(a, h, n); p >= 0 && (a += h.charAt(p).toUpperCase(), i ? d.nameWithMnemonic = d.name + " (&" + h.charAt(p).toUpperCase() + ")" : d.nameWithMnemonic = d.name.slice(0, p) + "&" + d.name.slice(p)) } d.items && this.installMnemonics(d.items, null) } }, getMenuBarString: function(e, t) { var n = this.appendMnemonic() ? e.englishName : e.name, i = void 0 === t.mnemonicOffset ? -1 : t.mnemonicOffset; return !n && this.appendMnemonic() && (n = e.name, i = -1), this.appendMnemonic() && i !== -1 && (n = e.name + " (" + n.charAt(i).toUpperCase() + ")", i = n.length - 2), { name: n, offset: i } } }; e.exports = l }, function(e, t, n) { // ========================= // Function_176 // ========================= "use strict"; var i = n(4), a = n(45), r = n(10), s = 3e4, o = { x1: 0, y1: 0, x2: 0, y2: 0, captureRectElm: null, captureAreaElm: null, callback_: null, captureUIFormat_: "png", dragInProgress_: !1, saveToClipboard_: !1, captureToBase64_: !1, captureFullpage: function(e, t, n, a) { var o = { encodeFormat: t, encodeQuality: 85, fullPage: !0, height: s, saveToBasePath: "Vivaldi Captures", showFileInPath: !0, copyToClipboard: "clipboard" === n }; r.thumbnails.captureTab(e, o, function(e, t) { a(i.runtime.lastError ? !1 : !0) }) }, setupCaptureOverlay_: function() { var e = document.getElementById("app"); this.captureAreaElm = document.getElementById("capture-area"), this.captureAreaElm || (this.captureAreaElm = document.createElement("div"), this.captureAreaElm.id = "capture-area", e && e.appendChild(this.captureAreaElm)), this.captureRectElm = document.getElementById("capture-rect"), this.captureRectElm || (this.captureRectElm = document.createElement("div"), this.captureRectElm.id = "capture-rect", e && e.appendChild(this.captureRectElm)), this.captureAreaElm.hidden = 0, this._installEventListeners() }, captureArea: function(e, t, n, i) { this.callback_ = i, this.captureUIFormat_ = e, this.saveToClipboard_ = "clipboard" === t, this.captureToBase64_ = n, this.setupCaptureOverlay_() }, _reCalc: function() { var e = Math.min(this.x1, this.x2), t = Math.max(this.x1, this.x2), n = Math.min(this.y1, this.y2), i = Math.max(this.y1, this.y2), a = document.body.clientWidth, r = document.body.clientHeight; this.captureRectElm.style.left = e + "px", this.captureRectElm.style.top = n + "px", this.captureRectElm.style.width = t - e + "px", this.captureRectElm.style.height = i - n + "px", this.captureAreaElm.style.backgroundColor = "transparent", this.captureAreaElm.style.borderWidth = n + "px " + (a - t) + "px " + (r - i) + "px " + e + "px" }, handleKeydown: function(e) { e.keyCode === a.KEY_ESCAPE && this._cancelCapture(), e.stopPropagation(), e.preventDefault() }, handleKeyup: function(e) { e.stopPropagation(), e.preventDefault() }, handleMousedown: function(e) { this.x1 = this.x2 = e.clientX, this.y1 = this.y2 = e.clientY, this._reCalc(), this.captureRectElm.hidden = 0, this.dragInProgress_ = !0 }, handleMouseup: function(e) { var t = this, n = Math.min(this.x1, this.x2), a = Math.min(this.y1, this.y2), s = Math.max(this.x2, this.x1) - Math.min(this.x1, this.x2), o = Math.max(this.y2, this.y1) - Math.min(this.y2, this.y1); this.dragInProgress_ = !1, this._adjustForUIZoom(n, a, s, o, function(e, n, a, s) { t._finishCapture(function() { var o = i.app.window.current(); o && r.thumbnails.captureUI({ appWindowId: o.id, posX: e, posY: n, width: a, height: s, encodeFormat: t.captureUIFormat_, encodeQuality: 85, saveToBasePath: t.captureToBase64_ === !0 ? null : "Vivaldi Captures", showFileInPath: t.captureToBase64_ !== !0, encodeToDataUrl: t.captureToBase64_, copyToClipboard: t.saveToClipboard_ }, function(e) { t.callback_ && t.callback_(!1, e) }) }) }) }, handleMousemove: function(e) { this.dragInProgress_ && (this.x2 = e.clientX, this.y2 = e.clientY, this._reCalc()) }, handleEvent: function(e) { switch (e.type) { case "keydown": this.handleKeydown(e); break; case "keyup": this.handleKeyup(e); break; case "mousedown": this.handleMousedown(e); break; case "mouseup": this.handleMouseup(e); break; case "mousemove": this.handleMousemove(e) } }, _installEventListeners: function() { document.addEventListener("keydown", this), document.addEventListener("keyup", this), this.captureAreaElm.addEventListener("mousedown", this), this.captureAreaElm.addEventListener("mouseup", this), this.captureAreaElm.addEventListener("mousemove", this) }, _removeEventListeners: function() { document.removeEventListener("keydown", this), document.removeEventListener("keyup", this), this.captureAreaElm.removeEventListener("mousedown", this), this.captureAreaElm.removeEventListener("mouseup", this), this.captureAreaElm.removeEventListener("mousemove", this) }, _cleanupDrag: function() { var e = document.getElementById("app"); e && (this.captureAreaElm && e.removeChild(this.captureAreaElm), this.captureRectElm && e.removeChild(this.captureRectElm)), this._removeEventListeners(), this.x1 = this.x2 = this.y1 = this.y2 = 0, this.captureAreaElm = this.captureRectElm = null, this.dragInProgress_ = !1 }, _finishCapture: function(e) { var t = this; this.captureRectElm.style.display = "none", this.captureAreaElm.classList.add("capture-fade-out"), this.captureAreaElm.style.borderColor = "rgba(0, 0, 0, 0)", this.captureAreaElm.addEventListener("transitionend", function() { t._cleanupDrag(), e() }, !0) }, _cancelCapture: function() { this._cleanupDrag(), this.callback_ && this.callback_(!0) }, _adjustForUIZoom: function(e, t, n, i, a) { r.zoom.getVivaldiUIZoom(function(r) { a(Math.round(e * r), Math.round(t * r), Math.round(n * r), Math.round(i * r)) }) } }; e.exports = o }, function(e, t) { // ========================= // Function_177 // ========================= "use strict"; var n = 5e3, i = "MacIntel" === navigator.platform; e.exports = { showNotification: function(e) { var t = new Notification(e.title, { body: e.body, icon: e.icon ? e.icon : "/resources/favicon@2x.png" }); t.onclick = function() { e.callback && "function" == typeof e.callback && e.callback(), t.close() }, i || setTimeout(function() { return t.close() }, e.timeout ? e.timeout : n) } } }, function(e, t, n) { // ========================= // Function_178 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function a(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function r(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var s = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/vivaldi/NativeResizeObserver.js", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = n(11), A = n(7), d = A.omit, h = function(e) { function t() { var e, n, r, s; i(this, t); for (var o = arguments.length, l = Array(o), c = 0; c < o; c++) l[c] = arguments[c]; return n = r = a(this, (e = t.__proto__ || Object.getPrototypeOf(t)).call.apply(e, [this].concat(l))), r.componentDidMount = function() { r._attachObserver() }, r._attachObserver = function() { var e = u.findDOMNode(r); if (e) try { new ResizeObserver(r.props.onResize).observe(e) } catch (e) { console.warn(e) } }, s = n, a(r, s) } return r(t, e), l(t, [{ key: "render", value: function() { var e = this.props.component, t = d(this.props, ["onResize", "component"]); return c.createElement(e, s({}, t, { __source: { fileName: o, lineNumber: 40 } }), this.props.children) } }]), t }(c.Component); h.displayName = "NativeResizeObserver", h.propTypes = { onResize: c.PropTypes.func.isRequired, className: c.PropTypes.string, component: c.PropTypes.string }, h.defaultProps = { className: "resize", component: "div" }, e.exports = h }, function(e, t, n) { // ========================= // Function_179 // ========================= "use strict"; var i = n(36), a = i.format, r = i.parse, s = n(20), o = s.urls, l = n(403), c = function(e) { if (!e) return ""; var t = r(e); "mailto:" !== t.protocol && (t.auth = ""), e = a(t); var n = o.removeTrailingSlashWhenNoPath(o.getDisplayUrl(e)); return l(n.replace(/%25/g, "%2525")).replace(/%20/g, " ") }; e.exports = c }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_214 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_215 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_216 // ========================= e.exports = '\r\n \r\n' }, function(e, t) { // ========================= // Function_217 // ========================= e.exports = '\r\n \r\n' }, , , , , , , , , , , , , , function(e, t, n) { // ========================= // Function_231 // ========================= "use strict"; var i = n(8), a = n(6), r = n(780), s = { loadPromise: function() { return r().then(function(e) { i.handleViewAction({ actionType: a.CONTENT_SCRIPT_LOAD, contentScripts: e }) }) }, addContentScript: function(e, t) { i.handleViewAction({ actionType: a.CONTENT_SCRIPT_PAGE_ADD, pageId: e, script: t }) }, removeContentScript: function(e, t) { i.handleViewAction({ actionType: a.CONTENT_SCRIPT_PAGE_REMOVE, pageId: e, script: t }) } }; e.exports = s }, function(e, t, n) { // ========================= // Function_232 // ========================= (function(t) { "use strict"; var i = n(17), a = n(8), r = n(3), s = n(6), o = s.SEARCH_FIELD_SET_STATE, l = s.SEARCH_FIELD_ADD_TYPED_HISTORY, c = s.SEARCH_FIELD_DELETE_TYPED_HISTORY, u = s.SEARCH_FIELD_INIT_TYPED_HISTORY, A = { setState: function(e, t) { a.handleViewAction({ actionType: o, state: t, page: e }) }, addTypedSearchHistory: function(e) { var n = r.getSync("SEARCH_FIELD_TYPED_HISTORY_ENABLED") === !0, s = i.getActivePage().get("incognito") !== !1; n && !s && t.nextTick(function() { a.handleViewAction({ actionType: l, query: e }) }) }, deleteTypedSearchHistory: function(e) { a.handleViewAction({ actionType: c, query: e }) }, load: function() { var e = r.getSync("TYPED_SEARCH_HISTORY"); a.handleViewAction({ actionType: u, typedHistory: e }) } }; e.exports = A }).call(t, n(16)) }, function(e, t) { // ========================= // Function_233 // ========================= "use strict"; var n = function() {}, i = { addListener: n, removeListener: n }, a = { bookmarksPrivate: { emptyTrash: n, updateSpeedDialsForWindowsJumplist: n }, historyPrivate: { dbSearch: function(e, t) { t([]) }, search: function(e, t) { t([]) }, onVisitModified: i }, importData: { getBlockThirdPartyCookies: n, getDefaultContentSettings: n, getProfiles: n, getStartupAction: n, isVivaldiDefaultBrowser: n, launchNetworkSettings: n, onImportBegan: i, onImportEnded: i, onImportItemEnded: i, onImportItemStarted: i, onImportStarted: i, openPage: n, openTaskManager: n, savePage: n, setBlockThirdPartyCookies: n, setDefaultContentSettings: n, setStartupAction: n, setVivaldiAsDefaultBrowser: n, setVivaldiLanguage: n, showDevTools: n, startImport: n }, notes: { create: n, emptyTrash: n, get: n, getTree: function(e) { return e({}) }, move: n, onChanged: i, onCreated: i, onRemoved: i, onMoved: i, onImportBegan: i, onImportEnded: i, remove: n, search: n, update: n }, runtimePrivate: { exit: n, getAllFeatureFlags: function(e) { return e([]) } }, sessionsPrivate: { delete: n, getAll: n, open: n, saveOpenTabs: n }, settings: { getPreference: n, getAllPreferences: function(e) { return e([]) }, onChanged: i, setPreference: n, togglePreference: n }, showMenu: { create: n, onOpen: n, onMainMenuCommand: i, onUrlHighlighted: i }, tabsPrivate: { get: n, onCreated: i, onRemoved: i, onUpdated: i, onMoved: i, onActivated: i, onDetached: i, onAttached: i, onReplaced: i, onThemeColorChanged: i, onFaviconUpdated: i, onTabUpdated: i, update: n }, thumbnails: { isThumbnailAvailable: n }, utilities: { clearAllRecentlyClosedSessions: n, getAvailablePageEncodings: n, isTabInLastSession: n, isUrlValid: n, onScroll: i }, zoom: { getDefaultZoom: n, getVivaldiUIZoom: n, onDefaultZoomChanged: i, setDefaultZoom: n, setVivaldiUIZoom: n } }; e.exports = a }, function(e, t, n) { // ========================= // Function_234 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/FolderIcon.jsx", a = n(1), r = n(5), s = n(25), o = ["THEMES_USER", "THEME_CURRENT", "THEME_CURRENT", "TABCOLOR_BEHIND_TABS", "DIM_BLURRED"], l = a.createClass({ displayName: "FolderIcon", propTypes: { open: a.PropTypes.bool, selected: a.PropTypes.bool, speeddial: a.PropTypes.bool, trash: a.PropTypes.bool }, getDefaultProps: function() { return { open: !1, speeddial: !1, trash: !1, selected: !1, windowFocused: !0 } }, componentDidMount: function() { window.addEventListener("focus", this._focus), window.addEventListener("blur", this._blur) }, componentWillUnmount: function() { window.removeEventListener("focus", this._focus), window.removeEventListener("blur", this._blur) }, _focus: function() { this.isMounted && this.state && !this.state.windowFocused && this.setState({ windowFocused: !0 }) }, _blur: function() { this.isMounted && this.props.vivaldiSettings.DIM_BLURRED && this.setState({ windowFocused: !1 }) }, render: function() { var e = r({ "folder-icon": !this.props.trash, "folder-trash": this.props.trash, open: this.props.open, sd: this.props.speeddial }); return a.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", className: e, ref: "folderIcon", style: this.props.leftMargin ? { marginLeft: this.props.leftMargin } : null, __source: { fileName: i, lineNumber: 64 } }, this.props.trash ? a.createElement("g", { mask: "url(#trash-folder-mask)", __source: { fileName: i, lineNumber: 71 } }, a.createElement("path", { d: "M11 1v-1h-6v1h-4v1h14v-1h-4z", __source: { fileName: i, lineNumber: 72 } }), a.createElement("path", { d: "M3 3h10v12h-10v-12z", __source: { fileName: i, lineNumber: 73 } })) : this.props.speeddial ? a.createElement("path", { d: "M16 5 15 4 8 4 8 3 7 2 1 2 0 3 0 13 1 14 8 14 8 16 16 16 Z", __source: { fileName: i, lineNumber: 77 } }) : a.createElement("path", { d: "M0 3 1 2 7 2 8 3 8 4 15 4 16 5 16 13 15 14 1 14 0 13 Z", __source: { fileName: i, lineNumber: 79 } })) } }); e.exports = s(l, o) }, function(e, t, n) { // ========================= // Function_235 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/InsertTheme.jsx", r = n(1), s = n(17), o = n(112), l = n(180), c = n(74), u = n(3), A = n(7), d = A.isEmpty, h = A.isEqual, m = n(20), p = m.urls, f = n(36), g = f.parse, _ = n(116), v = n(10), b = [], N = [], E = ["HUE_ENABLED", "HUE_BRIDGE_IP", "HUE_USERNAME", "HUE_LIGHTS", "HUE_LIGHTS_SELECTED", "CONTRAST_MINIMUM", "USE_TABCOLOR", "TABCOLOR_BEHIND_TABS", "DIM_BLURRED", "BORDER_RADIUS", "BROWSER_COLOR_BG", "BROWSER_COLOR_FG", "BROWSER_COLOR_ACCENT_BG", "BROWSER_COLOR_HIGHLIGHT_BG"], S = 16, T = 1e3, y = function(e) { return r.createClass({ displayName: "InsertThemeWrapper", propTypes: { themeObject: r.PropTypes.object }, getInitialState: function() { return { hasFocus: !0, uiColors: {}, accentColor: "", featureHueEnabled: c.isEnabled(c.kHueIntegration) } }, componentWillMount: function() { this._previousVars = {}, this._unclaimedMeta = {}, this._failUrlOnLoad = "", this._fallbackTimer, this.setState(u.getKeysSync(E), this._setUiColors) }, componentDidMount: function() { u.addMultiListener(E, this._vivaldiSettingHandler), o.addChangeListener(this._onNavigationStoreChanged), s.addChangeListener(this._setAccentColor), v.tabsPrivate.onThemeColorChanged.addListener(this._onThemeColorChanged), window.addEventListener("focus", this._focus), window.addEventListener("blur", this._blur) }, componentWillUnmount: function() { o.removeChangeListener(this._onNavigationStoreChanged), s.removeChangeListener(this._setAccentColor), u.removeMultiListener(E, this._vivaldiSettingHandler), v.tabsPrivate.onThemeColorChanged.removeListener(this._onThemeColorChanged), window.removeEventListener("focus", this._focus), window.removeEventListener("blur", this._blur) }, componentDidUpdate: function(e, t) { if (this.props.themeObject && !d(this.props.themeObject)) { if (e.themeObject && h(this.props.themeObject, e.themeObject)) return; this._setUiColors() } }, shouldComponentUpdate: function(e, t) { return !h(this.state, t) || !h(this.props, e) }, _focus: function() { this.state.hasFocus || this.setState({ hasFocus: !0 }) }, _blur: function() { this.state.DIM_BLURRED && this.setState({ hasFocus: !1 }) }, _getFavIconKey: function(e) { return e.get("incognito") ? "favIcon" : "favIconUrl" }, _getCacheObject: function(e, t) { if (!e || !p.isInExtension(e)) { var n = !0, i = !1, a = void 0; try { for (var r, s = b[Symbol.iterator](); !(n = (r = s.next()).done); n = !0) { var o = r.value; if (e && e === o.favIcon) return o; if (!e && t && t === o.hostname) return o } } catch (e) { i = !0, a = e } finally { try { !n && s.return && s.return() } finally { if (i) throw a } } if (t && e) { var l = { favIcon: e, hostname: t }; return b.push(l), l } } }, _onNavigationStoreChanged: function() { var e = s.getActivePage(), t = o.getNavigationInfo(e), n = t.get("webviewUrl"), i = t.get("trigger"); "start" !== i && "stop" !== i || (this._fallbackTimer && clearTimeout(this._fallbackTimer), "start" === i && (this._failUrlOnLoad = n), "stop" === i && n === this._failUrlOnLoad && (this._fallbackTimer = setTimeout(this._setFallbackAccentColor, T))) }, _onThemeColorChanged: function(e, t) { if (t && "#000000" !== t) { var n = s.getActivePage(); if (n.get("id") === e) { var i = n.get(this._getFavIconKey(n)), a = o.getNavigationInfo(n), r = a.get("webviewUrl"), l = g(_(r)).hostname, c = this._getCacheObject(i, l); c ? (c.metaColor = t, this._setBestColor(c)) : this._unclaimedMeta = { color: t, url: r } } } }, _setAccentColor: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : s.getActivePage(); if (e && e.get("url")) { var t = e.get("url"); if (this.isMounted() && p.isInternalPage(e)) return void this.setState({ accentColor: "" }); var n = e.get(this._getFavIconKey(e)), i = g(_(t)).hostname, a = this._getCacheObject(n, i); a && t === this._unclaimedMeta.url && (a.metaColor = this._unclaimedMeta.color, this._unclaimedMeta = {}, this._setBestColor(a)), a ? a.colorPalette ? (this._failUrlOnLoad = "", this._fallbackTimer && clearTimeout(this._fallbackTimer), this._setBestColor(a)) : !a.colorPalette && a.favIcon && (this._failUrlOnLoad = "", this._fallbackTimer && clearTimeout(this._fallbackTimer), this._setFavIconPalette(a)) : this.isMounted() && N.indexOf(t) > -1 && (this._failUrlOnLoad = "", this.setState({ accentColor: "" }), this._fallbackTimer && clearTimeout(this._fallbackTimer)) } }, _setFallbackAccentColor: function() { this._fallbackTimer && clearTimeout(this._fallbackTimer), this._failUrlOnLoad = "", this._unclaimedMeta = {}, N.push(s.getActivePage().get("url")), this.setState({ accentColor: "" }) }, _setFavIconPalette: function(e) { var t = this, n = new Image; n.onload = function() { n.heigth = S, n.width = S, e.colorPalette = t._getPalette(n), t._setBestColor(e) }, n.src = e.favIcon }, _getPalette: function(e) { var t = document.createElement("canvas"), n = S, i = 10, a = t.getContext("2d"), r = [], s = []; t.width = n, t.height = n, a.imageSmoothingEnabled = !1, a.drawImage(e, 0, 0, n, n); for (var o = a.getImageData(0, 0, n, n).data, l = 0; l < o.length / 4; l++) { var c = 4 * l, u = o[c], A = o[c + 1], d = o[c + 2], h = o[c + 3], m = void 0; if (!(0 === h || u > 240 && d > 240 && A > 240)) { for (var p = 0; p < r.length; p++) if (u === r[p][0] && A === r[p][1] && d === r[p][2]) { m = p; break } void 0 === m ? r.push([u, A, d, 1]) : r[m][3]++ } } r.sort(function(e, t) { return t[3] - e[3] }); for (var f = 0; f < Math.min(i, r.length); f++) s.push([r[f][0], r[f][1], r[f][2]]); return s }, _setBestColor: function(e) { var t = this, n = []; if (e.metaColor && n.push(l(e.metaColor)), e.colorPalette) for (var i = 0; i < e.colorPalette.length; i++) n.push(l(e.colorPalette[i])); if (n[0] && (n[0].multiplier = e.metaColor ? 3 : 2), n[1] && (n[1].multiplier = 1.5), n[2] && (n[2].multiplier = 1.25), n.length > 2 && n[0].get("lch.c") < 1) for (var a = 1; a < n.length; a++) if (n[a].get("lch.c") > 1) { n[a].multiplier = 2; break } n.sort(function(e, n) { return t._rateColor(n) - t._rateColor(e) }), this.isMounted() && n[0] && this.setState({ accentColor: n[0] }) }, setHue: function(e) { var t = u.getSync("HUE_BRIDGE_IP"), n = u.getSync("HUE_USERNAME"), i = u.getSync("HUE_LIGHTS"), a = u.getSync("HUE_LIGHTS_SELECTED"), r = e.get("rgb.r"), s = e.get("rgb.g"), o = e.get("rgb.b"); r = r > .04045 ? Math.pow((r + .055) / 1.055, 2.4) : r / 12.92, s = s > .04045 ? Math.pow((s + .055) / 1.055, 2.4) : s / 13.02, o = o > .04045 ? Math.pow((o + .055) / 1.055, 2.4) : o / 12.92; var l = .664511 * r + .154324 * s + .162028 * o, c = .283881 * r + .668433 * s + .047685 * o, A = 88e-6 * r + .07231 * s + .986039 * o, d = [l / (l + c + A), c / (l + c + A)]; i.forEach(function(e, i) { e && a.some(function(t) { return e.uniqueid === t }) && fetch("http://" + t + "/api/" + n + "/lights/" + (i + 1) + "/state/", { method: "put", body: JSON.stringify({ transitiontime: 10, xy: d }) }).catch(function(e) {}) }) }, _rateColor: function(e) { var t = parseFloat(this.state.CONTRAST_MINIMUM), n = this.state.BROWSER_COLOR_BG, i = l.contrast(e, n) > t ? 50 : 0, a = e.get("lch.l") > 5 && e.get("lch.l") < 95 ? 50 : 0, r = e.get("lch.c") > 10 ? 50 : 0; (e.get("lch.l") < 20 || e.get("lch.l") > 75) && (r = e.get("lch.c") > 50 ? r : 0); var s = i + a + r; return e.multiplier && (s *= e.multiplier), s }, _setUiColors: function() { var e = {}, t = void 0, n = void 0, i = void 0; this.props.themeObject ? (e.colorBg = l(this.props.themeObject.colors.baseBg), e.colorFg = l(this.props.themeObject.colors.baseFg), t = l(this.props.themeObject.colors.highlightBg), n = l(this.props.themeObject.colors.accentBg), i = Number(this.props.themeObject.settings.borderRadius)) : (e.colorBg = l(this.state.BROWSER_COLOR_BG), e.colorFg = l(this.state.BROWSER_COLOR_FG), t = l(this.state.BROWSER_COLOR_HIGHLIGHT_BG), n = l(this.state.BROWSER_COLOR_ACCENT_BG), i = Number(this.state.BORDER_RADIUS)); var a = this._fContrast(t, l(e.colorBg)); Object.assign(e, { colorHighlightBg: a, colorHighlightBgDark: a.darken(.5), colorHighlightFg: l(a.luminance() > .4 ? "#000" : "#fff"), colorHighlightBgAlpha: a.alpha(.25).css() }), e.colorBg = this._fContrast(e.colorBg, a); var r = this._fContrast(l(n), l(e.colorBg)); Object.assign(e, { colorAccentBg: r, colorAccentBgDark: r.darken(.4), colorAccentBgDarker: r.darken(1), colorAccentFg: l(l(r).luminance() > .4 ? "#000" : "#fff"), colorAccentFgAlpha: l(r).luminance() > .4 ? l("#000").alpha(.5).css() : l("#fff").alpha(.5).css() }), l(r).luminance() > .75 ? Object.assign(e, { colorAccentFgFaded: l.mix(e.colorAccentBg, "#000"), colorAccentBgFaded: e.colorAccentBg.darken(.3), colorAccentBgFadedMore: e.colorAccentBg.darken(.5), colorAccentBgFadedMost: e.colorAccentBg.darken(.7) }) : Object.assign(e, { colorAccentFgFaded: l.mix(e.colorAccentBg, "#fff"), colorAccentBgFaded: e.colorAccentBg.brighten(.3), colorAccentBgFadedMore: e.colorAccentBg.brighten(.5), colorAccentBgFadedMost: e.colorAccentBg.brighten(.7) }), e.colorBg.luminance() > .2 ? (e.colorFg = this._fContrast(e.colorFg, e.colorBg), e.colorFgIntense = e.colorFg.darken(1.4), e.colorBg = this._fContrast(e.colorBg, e.colorFg)) : (e.colorFgIntense = e.colorFg.brighten(1.4), e.colorFg = this._fContrast(e.colorFg, e.colorBg), e.colorBg = this._fContrast(e.colorBg, e.colorFg)), e.colorFgFaded = this._fContrast(l.mix(e.colorFg, e.colorBg, .3), e.colorBg), e.colorFgFadedMore = this._fContrast(l.mix(e.colorFg, e.colorBg, .6), e.colorBg), e.colorBg = this._fContrast(e.colorBg, e.colorFg), e.colorBg.luminance() > .4 ? (e.colorBgIntense = e.colorBg.brighten(.8), e.colorBgIntenser = e.colorBg.brighten(1.2), e.colorBgFaded = e.colorBg.darken(.25), e.colorBgLight = e.colorBg.brighten(.3), e.colorBgLighter = e.colorBg.brighten(.6), e.colorBgLightIntense = e.colorBg.brighten(1.4), e.colorBgDark = e.colorBg.darken(.2), e.colorBgDarker = e.colorBg.darken(.7), e.colorBorderHighlight = l.mix(e.colorBgLight, e.colorHighlightBg, .5)) : (e.colorBgIntense = e.colorBg.darken(.15), e.colorBgIntenser = e.colorBg.darken(.3), e.colorBgFaded = e.colorBg.brighten(.3), e.colorBgLight = e.colorBg.brighten(.5), e.colorBgLighter = e.colorBg.brighten(.8), e.colorBgLightIntense = e.colorBg.brighten(.4), e.colorBgDark = e.colorBg.darken(.35), e.colorBgDarker = e.colorBg.darken(.55), e.colorBorderHighlight = l.mix(e.colorBgLight, e.colorHighlightBg, .7)), e.colorBgAlpha = l(e.colorBg + "").alpha(.8).css(), e.colorBorder = this._fContrast(e.colorBgDarker, e.colorBg, .5), e.colorBorderDisabled = e.colorBorder.darken(1), e.colorBorderIntense = this._fContrast(l.mix(e.colorFg, e.colorBg, .8), e.colorBg), Object.assign(e, { radiusRound: i > -1 ? "100px" : 0, radiusRounded: i > -1 ? "2px" : 0, radiusRoundedLess: i > 0 ? "2px" : 0, radius: i + "px", radiusHalf: i / 2 + "px", radiusThird: i > 3 ? i / 3 + "px" : 0, radiusFifth: i / 5 + "px" }), this.setState({ uiColors: e }) }, _isContrastOk: function(e, t, n) { var i = parseFloat(this.state.CONTRAST_MINIMUM) * n; return l.contrast(e, t) >= i }, _fContrast: function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = l(e); if (!this._isContrastOk(e, t, n)) { var a = Math.abs(e.luminance() - t.luminance()); if (a < .02) if (e.luminance() > .8) { if (i = l("#000"), this._isContrastOk(i, t, n)) return i } else if (e.luminance() < .025 && (i = l("#fff"), this._isContrastOk(i, t, n))) return i; if (e.luminance() > t.luminance()) { do if (i = i.brighten(.1), "#ffffff" === i.hex()) return i; while (!this._isContrastOk(i, t, n)) } else do if (i = i.darken(.1), "#000000" === i.hex()) return i; while (!this._isContrastOk(i, t, n)) } return i }, _vivaldiSettingHandler: function(e) { var t = this; e.hasOwnProperty("CONTRAST_MINIMUM") && this.setState(e, function() { t._setAccentColor(), t._setUiColors() }), (e.hasOwnProperty("BROWSER_COLOR_BG") || e.hasOwnProperty("BROWSER_COLOR_FG") || e.hasOwnProperty("BROWSER_COLOR_ACCENT_BG") || e.hasOwnProperty("BORDER_RADIUS") || e.hasOwnProperty("BROWSER_COLOR_HIGHLIGHT_BG") || e.hasOwnProperty("DIM_BLURRED") || e.hasOwnProperty("TABCOLOR_BEHIND_TABS") || e.hasOwnProperty("USE_TABCOLOR")) && this.setState(e, this._setUiColors) }, render: function() { var t = this, n = {}, s = {}; if (this.state.uiColors) { if (Object.assign(n, this.state.uiColors), this.state.accentColor && this.state.USE_TABCOLOR) { var o = this._fContrast(l(this.state.accentColor), l(n.colorBg)); Object.assign(n, { colorAccentBg: o, colorAccentBgDark: o.darken(.4), colorAccentBgDarker: o.darken(1), colorAccentFg: l(l(o).luminance() > .4 ? "#000" : "#fff") }), l(o).luminance() > .75 ? Object.assign(n, { colorAccentFgFaded: l.mix(n.colorAccentBg, "#000"), colorAccentBgFaded: n.colorAccentBg.darken(.3), colorAccentBgFadedMore: n.colorAccentBg.darken(.5), colorAccentBgFadedMost: n.colorAccentBg.darken(.7) }) : Object.assign(n, { colorAccentFgFaded: l.mix(n.colorAccentBg, "#fff"), colorAccentBgFaded: n.colorAccentBg.brighten(.3), colorAccentBgFadedMore: n.colorAccentBg.brighten(.5), colorAccentBgFadedMost: n.colorAccentBg.brighten(.7) }) } this.state.featureHueEnabled && u.getSync("HUE_ENABLED") && !this.props.themeObject && n.colorAccentBg && this.setHue(n.colorAccentBg), !this.state.hasFocus && this.state.DIM_BLURRED && (n.colorBg = n.colorBg.desaturate(.2), n.colorBgDark = n.colorBgDark.desaturate(.2), n.colorAccentBg = n.colorAccentBg.desaturate(1), n.colorAccentBgFaded = n.colorAccentBgFaded.desaturate(1), n.colorAccentBgFadedMore = n.colorAccentBgFadedMore.desaturate(1), n.colorAccentBgFadedMost = n.colorAccentBgFadedMost.desaturate(1), n.colorAccentBgDark = n.colorAccentBgDark.desaturate(1)), Object.keys(n).forEach(function(e) { t._previousVars[e] && t._previousVars[e] === n[e] || (s[e] = n[e]) }), Object.assign(this._previousVars, n) } var c = !n.colorBg || n.colorBg.luminance() <= .4 ? "theme-dark" : "theme-light", A = !n.colorHighlightBg || n.colorHighlightBg.luminance() <= .4 ? "hi-dark" : "hi-light", d = !n.colorAccentBg || n.colorAccentBg.luminance() <= .4 ? "acc-dark" : "acc-light"; return r.createElement(e, i({ theme: s, themeBg: c, accentBg: d, highlightBg: A }, this.props, { __source: { fileName: a, lineNumber: 763 } })) } }) }; e.exports = y }, function(e, t, n) { // ========================= // Function_236 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/menu/Menu.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(11), d = i(A), h = n(94), m = i(h), p = n(52), f = i(p), g = n(45), _ = i(g), v = n(175), b = i(v), N = n(578), E = i(N), S = n(5), T = i(S), y = function(e) { function t() { var e, n, i, s; a(this, t); for (var l = arguments.length, c = Array(l), A = 0; A < l; A++) c[A] = arguments[A]; return n = i = r(this, (e = t.__proto__ || Object.getPrototypeOf(t)).call.apply(e, [this].concat(c))), i.state = { selectedItem: null, selectedItemIndex: -1, open: i.props.open || !1, shortcutList: [], underlinedChars: {}, underlinedCharPositions: [], shortcuts: [], showAccelerator: !1, hasOpenSubmenu: !0 }, i._onCommandStoreChange = function() { i.initializeUnderlinedChars() }, i.onKeyDown = function(e) { i.state.showAccelerator && i.setState({ showAccelerator: !1 }), e.keyCode === _.default.KEY_ALT && i.setState({ showAccelerator: !0 }) }, i.onKeyUp = function(e) { i.state.showAccelerator && i.setState({ showAccelerator: !1 }) }, i.hideAccelerator = function() { i.setState({ showAccelerator: !1 }) }, i.menuWillOpen = function() { i.hideAccelerator(), i.setState({ hasOpenSubmenu: !0 }) }, i.menuDidClose = function() { i.setState({ hasOpenSubmenu: !1 }) }, i.moveInsideViewport = function() { var e = d.default.findDOMNode(i), t = e.getBoundingClientRect(), n = 20, a = Math.min(window.innerWidth - t.right, 0), r = Math.min(window.innerHeight - t.bottom, 0); if (a < 0 || r < 0) { var s = e.parentNode.parentNode.parentNode; if (a < -n && s.classList.contains("menu")) { var o = s.getBoundingClientRect(); o.left - n > window.innerWidth - o.right && (a = -t.width - o.width) } var l = window.getComputedStyle(e).transform; "none" !== l && (l = l.split(","), a += parseInt(l[4]), r += parseInt(l[5])), t.left + a < 0 && (a = -t.left), e.style.transform = "translate(" + a + "px, " + r + "px)" } else e.style.transform = "" }, i.initializeUnderlinedChars = function(e) { var t = e || i.props.items, n = b.default.getShortcutsForMenuItems(t); i.setState({ shortcutList: n }) }, i.takeFocus = function(e) { i.props.platformPopups !== !0 && (e && e.stopPropagation && e.stopPropagation(), d.default.findDOMNode(i).querySelector(".menu .focusTrap").focus()) }, i.giveFocusToSubMenu = function() { i.props.platformPopups !== !0 && d.default.findDOMNode(i).querySelector(".menu .menu .focusTrap").focus() }, i.giveFocusToParentMenu = function() { i.props.platformPopups !== !0 && (i.props.giveFocusToParentMenu ? (i.props.giveFocusToParentMenu(), i.setState({ selectedItemIndex: -1 })) : i.state.open ? i.collapse(!0) : d.default.findDOMNode(i).querySelector(".menu .focusTrap").blur()) }, i.onKeyboardFocusIn = function() { d.default.findDOMNode(i).addEventListener("keydown", i.handleKeyboardNavigation), (i.props.subMenu || i.props.horizontal) && i.state.selectedItemIndex === -1 && i.setSelected(0) }, i.onKeyboardFocusOut = function() { d.default.findDOMNode(i).removeEventListener("keydown", i.handleKeyboardNavigation) }, i.handleKeyboardNavigation = function(e) { if (e.preventDefault(), e.which === _.default.KEY_RETURN) i.onItemSelected(i.state.selectedItem); else if (e.which === _.default.KEY_ESCAPE) i.giveFocusToParentMenu(); else if (e.which === _.default.KEY_LEFT) i.props.horizontal ? i.selectPreviousItem() : i.giveFocusToParentMenu(); else if (e.which === _.default.KEY_UP) i.props.horizontal ? i.giveFocusToParentMenu() : i.selectPreviousItem(); else if (e.which === _.default.KEY_RIGHT) i.props.horizontal ? i.selectNextItem() : i.giveFocusToSubMenu(); else if (e.which === _.default.KEY_DOWN) i.props.horizontal ? (i.giveFocusToSubMenu(), i.state.open || i.setState({ open: !0 })) : i.selectNextItem(); else if (i.state.underlinedChars.hasOwnProperty(e.keyCode)) { var t = i.state.underlinedChars[e.keyCode]; i.setSelected(t), i.onItemSelected(i.props.items[t]) } else i.props.horizontal || e.stopPropagation() }, i.selectNextItem = function() { var e = i.getMaxMenuIndex(), t = i.state.selectedItemIndex; do t = t === e ? 0 : t + 1; while ("---" === i.props.items[t].name || i.props.items[t].disabled); i.setSelected(t) }, i.selectPreviousItem = function() { var e = i.getMaxMenuIndex(), t = i.state.selectedItemIndex; do t = t < 1 ? e : t - 1; while ("---" === i.props.items[t].name || i.props.items[t].disabled); i.setSelected(t) }, i.getMaxMenuIndex = function() { return i.props.items.length - 1 }, i.setSelected = function(e) { "---" !== i.props.items[e].name && e <= i.getMaxMenuIndex() && !i.props.items[e].disabled && i.setState({ selectedItem: i.props.items[e], selectedItemIndex: e }) }, i.collapse = function(e) { e === !0 ? (i.setState({ open: !1 }), i.props.giveFocusToParentMenu || "function" != typeof i.props.onClosed || i.props.onClosed()) : window.setTimeout(function() { this._isMounted && "focusTrap" !== document.activeElement.className && (this.setState({ open: !1 }), "function" == typeof this.props.onClosed && this.props.onClosed()) }.bind(i), 100) }, i.onClicked = function(e) { e.preventDefault(), e.stopPropagation(), e.nativeEvent.target.focus(), i.setState({ open: !i.state.open }) }, i.onItemSelected = function(e, t) { var n = !1; i.props.horizontal ? i.setState({ open: !i.state.open }) : e.items ? i.giveFocusToSubMenu() : e.commandName ? (m.default.runAction(e), n = !0) : "function" == typeof e.onclick ? (e.onclick(e, t), n = !0) : "function" == typeof e.handler ? (e.handler(t), n = !0) : "function" == typeof i.props.onItemSelected && i.props.onItemSelected(e, t), n && i.onClosed() }, i.onClosed = function() { i.collapse(!0), "function" == typeof i.props.onClosed && i.props.onClosed() }, i.renderMenu = function() { return i.props.items.map(function(e, t) { return u.default.createElement(E.default, { isSelected: this.state.selectedItemIndex === t, setSelected: this.setSelected, key: t, nr: t, menuItem: e, shortcutItem: this.state.shortcutList[t], showAccelerator: this.state.showAccelerator, onItemSelected: this.onItemSelected, onClosed: this.onClosed, giveFocusToParentMenu: this.takeFocus, menuWillOpen: this.menuWillOpen, menuDidClose: this.menuDidClose, onDeleted: this.props.onDeleted, platformPopups: this.props.platformPopups, __source: { fileName: o, lineNumber: 338 } }) }.bind(i)) }, s = n, r(i, s) } return s(t, e), l(t, [{ key: "componentWillMount", value: function() { this.initializeUnderlinedChars() } }, { key: "componentDidMount", value: function() { this._isMounted = !0, f.default.addChangeListener(this._onCommandStoreChange), window.addEventListener("keydown", this.onKeyDown), window.addEventListener("keyup", this.onKeyUp), window.addEventListener("blur", this.hideAccelerator) } }, { key: "componentWillUnmount", value: function() { this._isMounted = !1, f.default.removeChangeListener(this._onCommandStoreChange), window.removeEventListener("keydown", this.onKeyDown), window.removeEventListener("keyup", this.onKeyUp), window.removeEventListener("blur", this.hideAccelerator) } }, { key: "componentWillReceiveProps", value: function(e) { this.props.items !== e.items && this.initializeUnderlinedChars(e.items) } }, { key: "render", value: function() { return u.default.createElement("nav", { className: (0, T.default)({ "platform-popups": this.props.platformPopups, menu: !0, horizontal: this.props.horizontal, opensubmenu: this.state.hasOpenSubmenu, open: this.state.open }), style: this.props.minWidth ? { minWidth: this.props.minWidth } : {}, onMouseOver: this.takeFocus, onMouseDown: this.onClicked, onMouseUp: this.onClicked, onBlur: this.collapse, tabIndex: "-1", __source: { fileName: o, lineNumber: 358 } }, (this.state.open || this.props.horizontal) && u.default.createElement("input", { type: "text", className: "focusTrap", autoFocus: !this.props.subMenu && !this.props.horizontal, onFocus: this.onKeyboardFocusIn, onBlur: this.onKeyboardFocusOut, __source: { fileName: o, lineNumber: 372 } }), u.default.createElement("ul", { __source: { fileName: o, lineNumber: 378 } }, this.renderMenu())) } }]), t }(u.default.PureComponent); y.propTypes = { items: u.default.PropTypes.array.isRequired, horizontal: u.default.PropTypes.bool, minWidth: u.default.PropTypes.number, open: u.default.PropTypes.bool, onClosed: u.default.PropTypes.func, onItemSelected: u.default.PropTypes.func, onDeleted: u.default.PropTypes.func, platformPopups: u.default.PropTypes.bool, subMenu: u.default.PropTypes.bool, giveFocusToParentMenu: u.default.PropTypes.func }, e.exports = y }, function(e, t, n) { // ========================= // Function_237 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var a = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), r = n(579), s = n(110), o = function() { function e() { i(this, e) } return a(e, [{ key: "addIfNotAddressExists", value: function(e) { var t = e.map(function(e) { return e.address }).filter(function(e) { return !!e }).map(function(e) { return e.toLowerCase() }); return r.contacts.where("address").anyOfIgnoreCase(t).toArray(function(e) { return e.map(function(e) { return e.address.toLowerCase() }) }).then(function(n) { return t = t.filter(function(e) { return n.indexOf(e) === -1 }), e.filter(function(e) { return n.indexOf(e.address.toLowerCase()) === -1 }) }).then(function(e) { return e.map(function(e) { return new s(e) }) }).then(function(e) { return r.contacts.bulkAdd(e).then(function() { return r.contacts.where("address").anyOfIgnoreCase(t).toArray() }).catch(function(e) { console.log(e) }) }) } }, { key: "put", value: function(e) { return r.contacts.put(e) } }, { key: "remove", value: function(e) { return r.contacts.delete(e) } }, { key: "getAll", value: function() { var e = {}; return r.contacts.each(function(t) { return e[t.id] = t }).then(function() { return e }) } }, { key: "putTrustedAddress", value: function(e) { return r.trustedAddresses.put({ address: e }) } }, { key: "getTrustedAddress", value: function(e) { return r.trustedAddresses.get(e) } }]), e }(); e.exports = new o }, function(e, t, n) { // ========================= // Function_238 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = n(3), r = { getItems: function(e, t) { var n = this, i = [], r = "read" === t ? a.getSync("MAIL_READ_HEADERS_HIDDEN") : a.getSync("MAIL_COMPOSE_HEADERS_HIDDEN"); return e.map(function(e) { i.push(Object.assign({ type: "checkbox", checked: !r.includes(e.ref), handler: n._setField.bind(n, e.ref, t) }, e.labels)) }), i }, _setField: function(e, t) { var n = "read" === t ? "MAIL_READ_HEADERS_HIDDEN" : "MAIL_COMPOSE_HEADERS_HIDDEN", r = a.getSync(n).slice(); r.includes(e) ? r = r.filter(function(t) { return t !== e }) : r.push(e), a.set(i({}, n, r)) } }; e.exports = r }, function(e, t, n) { // ========================= // Function_239 // ========================= "use strict"; var i = n(181), a = n(363).defaultFilters, r = n(42), s = r.ALL_MESSAGES_ACCOUNT_ID, o = r.DRAFTS_FOLDER_PATH; i.debug = !1; var l = new i("M3v1"); l.version(1).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]" }), l.version(2).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId" }), l.version(3).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId" }).upgrade(function() { l.messages.toCollection().modify({ bodyParts: void 0 }) }), l.version(4).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId" }).upgrade(function() { l.mailboxCache.toCollection().modify({ highestModseq: "0" }) }), l.version(5).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue" }), l.version(6).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation]" }), l.version(7).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation]" }).upgrade(function() { l.filters.toCollection().modify(function(e) { e.filterValue = { query: e.filterValue } }).catch().then(function() { return l.filters.bulkPut(a) }) }), l.version(8).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation]" }).upgrade(function() { l.messages.toCollection().modify(function() { this.value.flags = this.value.unread ? [] : ["\\Seen"], delete this.value.unread }), l.searchList.toCollection().modify(function() { this.value.flags = this.value.unread ? [] : ["\\Seen"], delete this.value.unread }), l.mailboxCache.toCollection().modify({ highestModseq: "0" }) }), l.version(9).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation]" }).upgrade(function() { var e = [s, o, 0], t = [s, o, Number.MAX_VALUE]; l.messages.where("[accountId+path+uid]").between(e, t).delete(), l.tokens.where("[accountId+path+uid]").between(e, t).delete(), l.searchList.where("[accountId+path+uid]").between(e, t).delete() }), l.version(10).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],accountId" }), l.version(11).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid],[accountId+path]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],accountId" }), l.version(12).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: "[accountId+path+uid],[sentDate+accountId+path+uid]", folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],accountId" }), l.version(13).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: ["[accountId+path+uid]", "[sentDate+accountId+path+uid]", "[threadKey+accountId+path+uid]", "[accountId+messageId]", "inReplyTo", "*references"].join(","), folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],accountId" }), l.version(14).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: ["[accountId+path+uid]", "[sentDate+accountId+path+uid]", "[threadKey+accountId+path+uid]", "[accountId+messageId]", "inReplyTo", "*references"].join(","), folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],[accountId+path+uid],accountId" }), l.version(15).stores({ messages: "[accountId+path+uid]", tokens: "[accountId+path+uid],*tokens", searchList: ["[accountId+path+uid]", "[sentDate+accountId+path+uid]", "[threadKey+accountId+path+uid]", "[accountId+messageId]", "inReplyTo", "*references"].join(","), folders: "accountId", mailboxCache: "[accountId+path],accountId", filters: "[accountId+path],filterValue", buffer: "++_id,[accountId+path+uid+operation],[accountId+path+uid],accountId" }).upgrade(function() { l.searchList.toCollection().modify(function(e) { e.threadKey && 0 !== e.threadKey.length || (e.threadKey = e.sentDate.toString()), e.references || (e.references = []) }) }), l.on("populate", function() { l.filters.bulkPut(a) }), l.open(), e.exports = l }, function(e, t, n) { // ========================= // Function_240 // ========================= "use strict"; var i = n(66), a = function e(t) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [], i = []; return n.forEach(function(n) { Array.isArray(n.content) ? i = i.concat(e(t, n.content)) : "attachment" === n.type && !!n.id === t && i.push(n) }), i }, r = function(e) { return new Promise(function(t) { e.bodyParts ? t(e) : i.parse({ bodyParts: [{ raw: e.raw }] }, function(n, i) { n ? e.bodyParts = [{ content: "", type: "text" }] : e.bodyParts = i[0].content, t(e) }) }) }; e.exports = { getAttachments: a.bind(void 0, !1), getContentIdAttachments: a.bind(void 0, !0), parseMailBody: r } }, function(e, t, n) { // ========================= // Function_241 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/OkChangeButton.jsx", a = n(1), r = n(2), s = function(e) { var t = e.onDialogClosed, n = e.onChange; return a.createElement("section", { __source: { fileName: i, lineNumber: 5 } }, a.createElement("input", { type: "button", className: "primary", onClick: t, value: r("OK"), autoFocus: !0, __source: { fileName: i, lineNumber: 6 } }), a.createElement("input", { type: "button", onClick: n, value: r("Change"), __source: { fileName: i, lineNumber: 11 } })) }; e.exports = s }, function(e, t, n) { // ========================= // Function_242 // ========================= "use strict"; var i = n(3), a = n(15), r = n(89), s = "chrome://favicon/", o = "webview-", l = "webpanel", c = { addByUrl: function(e) { var t = o + r(); return i.get("WEB_PANEL_LIST", function(n) { void 0 === n && (n = []), n.push({ id: t, contentUrl: e, mobileMode: !0, title: "", faviconUrl: "", available: !0 }), i.set({ WEB_PANEL_LIST: n }) }.bind(this)), t }, removeById: function(e) { i.get("WEB_PANEL_LIST", function(t) { if (void 0 !== t) { for (var n = [], a = 0; a < t.length; a++) { var r = t[a]; r.id !== e && n.push(r) } i.set({ WEB_PANEL_LIST: n }) } }.bind(this)) }, setMobileMode: function(e, t) { i.get("WEB_PANEL_LIST", function(n) { if (void 0 !== n) { for (var a = [], r = 0; r < n.length; r++) { var s = n[r]; s.id === e && (s.mobileMode = t), a.push(s) } i.set({ WEB_PANEL_LIST: a }) } }.bind(this)) }, setAvailable: function(e, t) { i.get("WEB_PANEL_LIST", function(n) { if (void 0 !== n) { for (var a = [], r = 0; r < n.length; r++) { var s = n[r]; s.id === e && (s.available = t), a.push(s) } i.set({ WEB_PANEL_LIST: a }) } }.bind(this)) }, setTitle: function(e, t) { i.get("WEB_PANEL_LIST", function(n) { if (void 0 !== n) { for (var a = [], r = 0; r < n.length; r++) { var s = n[r]; s.id === e && (s.title = t), a.push(s) } i.set({ WEB_PANEL_LIST: a }) } }.bind(this)) }, setActiveUrl: function(e, t) { i.get("WEB_PANEL_LIST", function(n) { if (void 0 !== n) { for (var a = [], r = 0; r < n.length; r++) { var s = n[r]; s.id === e && (s.activeUrl = t), a.push(s) } i.set({ WEB_PANEL_LIST: a }) } }.bind(this)) }, copyWebPanelAdress: function(e) { i.get("WEB_PANEL_LIST", function(t) { if (void 0 !== t) for (var n = 0; n < t.length; n++) { var i = t[n]; if (i.id === e) { var a = function(e) { e.clipboardData.setData("text/plain", i.activeUrl), e.preventDefault() }; document.addEventListener("copy", a), document.execCommand("copy"), document.removeEventListener("copy", a); break } } }.bind(this)) }, openInTab: function(e, t, n) { i.get("WEB_PANEL_LIST", function(i) { if (void 0 !== i) for (var r = 0; r < i.length; r++) { var s = i[r]; if (s.id === e) { a.openURL(s.activeUrl, { inCurrent: t, inBackground: n }); break } } }) }, openInWindow: function(e, t, n) { i.get("WEB_PANEL_LIST", function(i) { if (void 0 !== i) for (var r = 0; r < i.length; r++) { var s = i[r]; if (s.id === e) { a.openURL(s.activeUrl, { inNewWindow: !0, inBackground: t, incognito: n }); break } } }) }, getIndexByShortcut: function(e) { var t = l.length, n = e.substr(0, t), i = e.substr(t).trim(); return n === l && i >= 1 && i <= 9 ? i : -1 }, setUIContent: function(e) { i.get("WEB_PANEL_UI", function(t) { void 0 !== e.showToolbar && (t.showToolbar = e.showToolbar), void 0 !== e.allControls && (t.allControls = e.allControls), i.set({ WEB_PANEL_UI: t }) }) }, getPanelPrefix: function() { return o }, getFaviconPrefix: function() { return s } }; e.exports = c }, function(e, t, n) { // ========================= // Function_243 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/zoom/ZoomIndicator.jsx", a = n(1), r = n(9), s = n(7), o = s.range, l = n(2), c = n(5), u = n(45), A = n(13), d = parseInt(1e7 * Math.random()), h = a.createClass({ displayName: "ZoomIndicator", mixins: [r, A], vivaldiSettingsKeys: ["USE_BUTTONS_IN_RANGE_CONTROLS"], propTypes: { onZoomUpdated: a.PropTypes.func.isRequired, maxLevel: a.PropTypes.number.isRequired, minLevel: a.PropTypes.number.isRequired, step: a.PropTypes.number.isRequired, initialZoom: a.PropTypes.number, delay: a.PropTypes.bool }, getInitialState: function() { return { zoom: this.props.initialZoom || 1, editing: !1 } }, componentWillReceiveProps: function(e) { e.initialZoom && this.setState({ zoom: e.initialZoom }) }, forceZoomState: function(e) { this.setState({ zoom: this.rangeCheck(e) }) }, setZoomLevel: function(e, t) { var n = this.rangeCheck(e); this.setState({ zoom: this.rangeCheck(e), editing: t }), t && (this.refs.editZoom.value = parseInt(100 * n)), this.props.onZoomUpdated(n) }, resetZoom: function() { this.props.onZoomReset ? this.props.onZoomReset() : this.setZoomLevel(1) }, updateZoomLevel: function() { if (this.props.delay) { var e = parseFloat(this.state.zoom); this.setZoomLevel(e) } }, rangeChanged: function(e) { this.setState({ zoom: e.target.value }, this.props.delay ? null : this.setZoomLevel(parseFloat(e.target.value))) }, rangeCheck: function(e) { return Math.min(Math.max(e, this.props.minLevel), this.props.maxLevel) }, zoomInStep: function() { this.setZoomLevel(parseFloat(this.state.zoom + this.props.step).toFixed(2)) }, zoomOutStep: function() { this.setZoomLevel(parseFloat(this.state.zoom - this.props.step).toFixed(2)) }, zoomHalf: function() { this.setZoomLevel(parseFloat((this.state.zoom / 2).toFixed(2))) }, zoomDouble: function() { this.setZoomLevel(parseFloat((2 * this.state.zoom).toFixed(2))) }, handleKeyDown: function(e) { e.keyCode === u.KEY_LEFT ? (this.zoomOutStep(), e.preventDefault()) : e.keyCode === u.KEY_RIGHT && (this.zoomInStep(), e.preventDefault()) }, renderTicks: function() { return o(this.props.minLevel, this.props.maxLevel + this.props.step, this.props.step).map(function(e) { return a.createElement("option", { key: e, __source: { fileName: i, lineNumber: 128 } }, Math.round(100 * e) / 100) }) }, _onEditKeyDown: function(e) { if (e.keyCode === u.KEY_ESCAPE) this.setState({ editing: !1 }); else if (e.keyCode === u.KEY_SUBTRACT) this.setZoomLevel(this.state.zoom - this.props.step, !0), e.preventDefault(); else if (e.keyCode === u.KEY_ADD) this.setZoomLevel(this.state.zoom + this.props.step, !0), e.preventDefault(); else if (e.keyCode === u.KEY_RETURN) { var t = this.refs.editZoom.value / 100; 0 !== t && t === parseFloat(t) || (t = 1), this.setZoomLevel(t) } }, toggleEditZoom: function() { var e = this; this.props.disabled || this.setState({ editing: !this.state.editing }, function() { e.refs.editZoom.select() }) }, _onEditZoomBlur: function() { this.setState({ editing: !1 }) }, onMouseEnter: function() { document.addEventListener("wheel", this.onMouseWheel, !0) }, onMouseLeave: function() { document.removeEventListener("wheel", this.onMouseWheel, !0) }, onMouseWheel: function(e) { e.deltaY > 0 || e.deltaX < 0 ? this.zoomOutStep() : (e.deltaY < 0 || e.deltaX > 0) && this.zoomInStep() }, incrementCount: function(e) { this.setZoomLevel(this.state.zoom + this.props.step) }, decrementCount: function(e) { this.setZoomLevel(this.state.zoom - this.props.step) }, render: function() { var e = this.state.zoom, t = void 0; t = this.state.editing ? a.createElement("input", { type: "number", ref: "editZoom", defaultValue: Math.round(100 * this.state.zoom), onKeyDown: this._onEditKeyDown, onBlur: this._onEditZoomBlur, step: "1", disabled: this.props.disabled, __source: { fileName: i, lineNumber: 200 } }) : a.createElement("span", { className: c({ "zoom-percent": !0, disabled: this.props.disabled }), onClick: this.toggleEditZoom, __source: { fileName: i, lineNumber: 209 } }, Math.round(100 * e) + " %"); var n = this.props.disabled || (this.props.defaultZoomLevel ? this.props.defaultZoomLevel === e : 1 === e); return a.createElement("div", { className: "zoom-control", __source: { fileName: i, lineNumber: 223 } }, this.props.inFooter ? a.createElement("button", { className: "zoom-reset button-toolbar-small", tabIndex: this.props.keyAccess, onClick: this.resetZoom, title: l("Reset zoom"), disabled: n, __source: { fileName: i, lineNumber: 226 } }, l("Reset")) : a.createElement("input", { className: "zoom-reset", type: "button", tabIndex: this.props.keyAccess, onClick: this.resetZoom, title: l("Reset zoom"), disabled: n, value: l("Reset"), __source: { fileName: i, lineNumber: 235 } }), this.state.USE_BUTTONS_IN_RANGE_CONTROLS ? a.createElement("span", { __source: { fileName: i, lineNumber: 267 } }, a.createElement("input", { type: "button", value: "-", className: "button-toolbar-small", onClick: this.decrementCount, disabled: this.props.disabled, __source: { fileName: i, lineNumber: 268 } }), t, a.createElement("input", { type: "button", value: "+", className: "button-toolbar-small", onClick: this.incrementCount, disabled: this.props.disabled, __source: { fileName: i, lineNumber: 274 } })) : a.createElement("span", { __source: { fileName: i, lineNumber: 246 } }, a.createElement("input", { type: "range", min: this.props.minLevel, max: this.props.maxLevel, step: this.props.step, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, onChange: this.rangeChanged, onKeyDown: this.handleKeyDown, onMouseUp: this.props.delay ? this.updateZoomLevel : null, onTouchEnd: this.props.delay ? this.updateZoomLevel : null, value: e, disabled: this.props.disabled, tabIndex: this.props.keyAccess, list: "ticks-" + d, __source: { fileName: i, lineNumber: 247 } }), a.createElement("datalist", { id: "ticks-" + d, __source: { fileName: i, lineNumber: 261 } }, this.renderTicks()), t)) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_244 // ========================= "use strict"; var i = n(110), a = n(237), r = n(18).EventEmitter, s = n(8), o = n(6), l = "change", c = {}, u = Object.assign({}, r.prototype, { getAll: function() { return c }, getAsTree: function(e) { var t = u.getAll(); return Object.keys(t).map(function(e) { return t[e] }).filter(function(t) { return p(t, e) }) }, getNodeById: function(e) { var t = function t(n) { for (var i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) return a; if (a.children && (a = t(a.children))) return a } }, n = Object.keys(c).map(function(e) { return c[e] }); return t(n) }, getContactsWithAddress: function(e) { var t = Object.keys(c).filter(function(t) { return c[t].address.toLowerCase() === e.toLowerCase() }); if (t[0]) return c[t[0]] }, getEmptyContact: function() { var e = { id: "", photo: "", name: "", address: "", phone: "", postal: "" }; return e }, getThoseWithAddresses: function() { return Object.keys(c).map(function(e) { return c[e] }).filter(function(e) { return e.address }) }, emitChange: function(e) { this.emit(l, e) }, addChangeListener: function(e) { this.on(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }), A = function() { a.getAll().then(function(e) { var t = !0, n = !1, a = void 0; try { for (var r, s = Object.keys(e)[Symbol.iterator](); !(t = (r = s.next()).done); t = !0) { var o = r.value; e[o] = new i(e[o]) } } catch (e) { n = !0, a = e } finally { try { !t && s.return && s.return() } finally { if (n) throw a } } c = e, u.emitChange() }) }, d = function(e) { e.clearGenerated(), a.put(e).then(function() { c[e.id] = e, u.emitChange() }) }, h = function(e) { e.forEach(function(e) { c[e.id] = new i(e) }), u.emitChange() }, m = function(e) { a.remove(e.id).then(function() { delete c[e.id], u.emitChange() }) }, p = function(e, t) { var n = e.name || e.address || ""; return !t || 0 === t.length || n.toLowerCase().indexOf(t.toLowerCase()) > -1 }; s.register(function(e) { var t = e.action; switch (t.actionType) { case o.CONTACT_INITIALIZE: A(); break; case o.CONTACT_SAVE_CONTACT: d(t.contact); break; case o.CONTACT_ADD_CONTACTS: h(t.contacts); break; case o.CONTACT_DELETE_CONTACT: m(t.contact) } }), e.exports = u }, function(e, t, n) { // ========================= // Function_245 // ========================= (function(t) { "use strict"; function i(e) { var t = M.get("today"); if (t.size > 0) { var n = new N(t.first().get("visitTime")); if (n.endOf("day") < N().startOf("day")) { M = M.set("other", t.concat(M.get("other"))); var i = M.get("todaysStats"), a = M.get("olderStats"), r = Object.assign(i, a); M = M.set("olderStats", r) } } var s = h(e.historyItems); M = M.set("today", O(s)); var o = d(e.historyItems); M = M.set("todaysStats", o), L.emitChangeParam("searchResultsReady", e.tab_id) } function a(e) { var t = h(e.historyItems), n = M.get("other", new C), i = t.get(-1, new I({ id: "" })), a = n.get(0, new I({ id: "" })); a.get("id") === i.get("id") && (a = a.update("count", function(e) { return e + i.get("count") }), a = a.update("children", function(e) { return e.concat(i.get("children")) }), n = n.delete(0), t = t.set(-1, a)), M = M.set("other", O(t).concat(n)); var r = d(e.historyItems), s = M.get("olderStats", {}), o = Object.assign(s, r); M = M.set("olderStats", o), L.emitChangeParam("searchResultsReady", e.tab_id) } function r(e) { var t = k.get(e.tab_id, new S), n = t.merge({ rangePicker: e.setting.rangePicker, startTime: N(e.setting.startTime), endTime: N(e.setting.endTime) }); k = k.set(e.tab_id, n), L.emitChangeParam("filterChange", e.tab_id) } function s(e) { k = k.set(e.tab_id, e.historyQuery), L.emitChangeParam("filterChange", e.tab_id), t.nextTick(function() { L.emitChangeParam("searchResultsReady", e.tab_id) }) } function o(e) { var t = k.get(e.tab_id, new S), n = t.merge({ displayMode: e.displayMode }); k = k.set(e.tab_id, n), L.emitChangeParam("filterChange", e.tab_id) } function l(e) { var t = new N(e.startTime), n = new N(e.endTime), i = t.format("YYYY-MM-DD"), a = "other"; N().isBetween(t, n) && (a = "today"); var r = M.get(a).map(function(t) { if (t.get("keyParId") !== i) return t; var n = t.set("children", t.get("children").filter(function(t) { return t.get("url").indexOf(e.url) === -1 })); return n.get("children").count() ? n : void 0 }).filter(function(e) { return e && e.count() }); M = M.set(a, r), L.emitChange("searchResultsReady") } function c(e) { k = k.delete(e) } function u(e, t, n) { if (!t.length) return e; var i = b.groupBy(e, t[0], n), a = t.slice(1); for (var r in i) i[r] = u(i[r], a, n); return i } function A(e) { var t = "date"; if (e) { var n = []; "nogrouping" !== t && n.push(t), n.push("url"); var i = u(e, n), a = Object.keys(i).map(function(e) { var n = N(e, "dddd, MMMM Do, YYYY"), a = Object.keys(i[e]).map(function(n) { if ("nogrouping" === t) return i[e][n]; var a = {}, r = i[e][n][0]; return a.protocol = r.protocol, a.address = r.address, a.url = r.url, a.title = r.title, a.isBookmarked = r.isBookmarked, a.transition_type = r.transition_type, a.visitCount = i[e][n].length, a.visitTime = b.max(b.map(i[e][n], "visitTime")), a }), r = b.map(a, "visitCount"), s = b.sum(r); return { id: n.format("YYYY-MM-DD"), visitTime: n.valueOf(), key: e, count: s, children: a, keyParId: n.format("YYYY-MM-DD") } }); return a } } function d(e) { v.runtime.lastError && console.error(v.runtime.lastError); var t = e.map(function(e) { var t = new N(parseFloat(e.visitTime)); return e.dateKey = t.format("YYYY-MM-DD"), e.time = t.format("HH"), e }), n = u(t, ["dateKey"]); return b.forOwn(n, function(e, t) { for (var i = u(e, ["time"]), a = [], r = 0; r < 24; r++) { var s = r + 1; a.push({ hour: s, pages: 0, visits: 0, unixDate: N(t + "T" + (s < 10 ? "0" : "") + s).format("x") }) } b.forOwn(i, function(e, t) { t = parseInt(t); var n = b.groupBy(i[t], "address"); return a[t].pages = b.size(n), a[t].visits = e.length, i[t] = { pages: b.size(n), visits: e.length } }); var o = u(e, ["address"]), l = u(e, ["url"]), c = Object.keys(l).length, A = []; b.forOwn(o, function(e, t) { A.push({ url: t, visitCount: e.length }) }); var d = b.orderBy(A, "visitCount", "desc").slice(0, 5); return n[t] = { mostVisited: d, pages: c, visits: n[t].length, hour: i, timeArr: a } }) } function h(e) { if (e) { e.map(function(e) { return e.date = new N(e.visitTime).format("dddd, MMMM Do, YYYY") }); var t = A(e); return O(t) } } function m(e) { var t = e.since; if (0 === t) M = new I({ today: C(), other: C() }), L.emitChangeParam("searchResultsReady"); else { var n = new N, i = "today"; t < n.startOf("d").valueOf() && (i = "other", M = M.set("today", new C)); var a = M.get(i).map(function(e) { var n = e.set("children", e.get("children").filter(function(e) { return e.get("visitTime") <= t })); if (n.get("children").count()) return n }).filter(function(e) { return e && e.count() }); M = M.set(i, a), L.emitChangeParam("searchResultsReady") } } var p = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), f = n(18).EventEmitter, g = n(8), _ = n(6), v = n(4), b = n(7), N = n(44), E = n(356), S = E.HistoryFilter, T = n(613), y = n(27), C = y.List, I = y.Map, O = y.fromJS, w = "PANEL", D = "change", k = new I, M = new I({ today: C(), other: C() }), L = Object.assign({}, f.prototype, { getPanelResourceKey: function() { return w }, getHistorySearchResults: function(e) { var t = k.get(e, new S), n = M.get("today").concat(M.get("other")), i = new N(n.reduce(function(e, t) { return e < t.get("id") ? e : t.get("id") }, (new N).valueOf())); if (n = n.filter(function(e) { return e.get("visitTime") >= t.startTime.valueOf() && e.get("visitTime") <= t.endTime.valueOf() }), t.parsedFilter.query || t.parsedFilter.title || t.parsedFilter.url) { var a = t.parsedFilter.query.toLowerCase(), r = t.parsedFilter.title.toLowerCase(), s = t.parsedFilter.url.toLowerCase(); n = T(n, a, r, s, t.searchURL) } return { data: n.toJS(), filter: t, oldestHistoryDate: i } }, getStatistics: function(e) { var t = M.get("todaysStats", {}), n = M.get("olderStats", {}), i = Object.assign({}, t, n), a = k.get(e, new S); return this.filterStatistics(i, a.parsedFilter.query.toLocaleLowerCase()) }, filterStatistics: function(e, t) { var n = {}; return Object.keys(e).forEach(function(i) { var a = e[i].mostVisited.filter(function(e) { return e.url.indexOf(t) !== -1 }); a.length && (n[i] = { mostVisited: a, timeArr: e[i].timeArr, hour: e[i].hour, pages: a.length, visits: a.reduce(function(e, t) { return e + t.visitCount }, 0) }) }), n }, getFilter: function(e) { var t = k.get(e); return t || (k = k.set(e, new S)), k.get(e) }, emitChange: function(e) { this.emit(D, e) }, emitChangeParam: function(e, t) { this.emit(D, e, t) }, addChangeListener: function(e) { this.on(D, e) }, removeChangeListener: function(e) { this.removeListener(D, e) } }); g.register(function(e) { var t = e.action; switch (t.actionType) { case _.CHROME_HISTORY_SEARCH: s(t); break; case _.CHROME_TABS_REMOVED: var n = p(t.args, 1), u = n[0]; c(u); break; case _.CHROME_HISTORY_DELETE: l(t); break; case _.VIVALDI_HISTORY_INIT_FILTER: r(t); break; case _.VIVALDI_HISTORY_LOAD_TODAY: i(t); break; case _.VIVALDI_HISTORY_DISPLAY_MODE_CHANGE: o(t); break; case _.VIVALDI_HISTORY_LOAD_YESTERDAY_AND_OLDER: a(t); break; case _.VIVALDI_HISTORY_REMOVE_AFTER: m(t); break; default: return !0 } }), e.exports = window.HistoryStore = L }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_246 // ========================= "use strict"; var i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, a = n(8), r = n(6), s = n(18).EventEmitter, o = n(42), l = o.ALL_MESSAGES_ACCOUNT_ID, c = o.MAILING_LISTS_ACCOUNT_ID, u = o.MAIL_FILTERS_ACCOUNT_ID, A = o.DRAFTS_FOLDER_PATH, d = o.OUTBOX_FOLDER_PATH, h = n(387), m = n(135), p = m.isUnread, f = m.isDeleted, g = n(363).search_keywords, _ = "change", v = [], b = {}, N = Object.assign({}, s.prototype, { getAll: function() { return v }, getByAccountId: function(e) { return v.filter(function(t) { return t.accountId === e }) }, get: function(e, t) { return v.filter(function(n) { return n.accountId === e && n.path === t })[0] }, emitChange: function(e) { this.emit(_, e) }, addChangeListener: function(e) { this.on(_, e) }, addOneTimeChangeListener: function(e) { this.once(_, e) }, removeChangeListener: function(e) { this.removeListener(_, e) }, addFilter: function(e) { var t = v.indexOf(e); t === -1 ? v.push(e) : v.splice(t, 1, e), E() }, parseQuery: function(e) { var t = {}; if ("" === e || void 0 === e) return t; for (var n = e.match(/(\S+:\s*'.*')|(\S+:\s*".*")|(\S+:\s*\S+)|(\S+)/g), i = 0; i < n.length; i++) { var a = n[i].trim(); if (a.length > 0) { for (var r = !1, s = 0; s < g.length; s++) { var o = a.indexOf(g[s] + ":"), l = g[s].length + 1; o > -1 && (r = !0, void 0 === t[g[s]] ? t[g[s]] = a.slice(o + l).trim() : t[g[s]] += " " + a.slice(o + l).trim()) } r || (void 0 === t.query ? t.query = a : t.query += " " + a) } } if (void 0 === t.name) for (var c = 0; c < g.length; c++) if (void 0 !== t[g[c]]) { t.name = t[g[c]]; break } return t }, filterToFolderFilter: function(e) { var t = function(e) { return !1 }, n = void 0, i = void 0, a = e.accountId, r = e.path, s = !1, o = !1, m = !0, g = void 0, _ = void 0, v = !1, b = void 0, E = "", S = "", T = "", y = [], C = []; return void 0 !== e && e.hasOwnProperty("filterValue") && (e.filterValue.hasOwnProperty("accountId") && (a = e.filterValue.accountId), e.filterValue.hasOwnProperty("path") && (r = e.filterValue.path), C = e.filterValue.hasOwnProperty("includeFolderTypes") ? e.filterValue.includeFolderTypes : [], y = e.filterValue.hasOwnProperty("excludeFolderTypes") ? e.filterValue.excludeFolderTypes : [], m = !e.filterValue.hasOwnProperty("showRead") || e.filterValue.showRead, v = !!e.filterValue.hasOwnProperty("showDuplicates") && e.filterValue.showDuplicates, _ = function(e) { return !0 }, e.filterValue.hasOwnProperty("showMailingLists") && (e.filterValue.showMailingLists || (_ = function(e) { var t = N.getAllFolderFilters(); if (t[c]) { for (var n = Object.keys(t[c]), i = 0; i < n.length; i++) if (t[c][n[i]](e)) return !1; return !0 } })), s = !!e.filterValue.hasOwnProperty("filterOnDrafts") && e.filterValue.filterOnDrafts, o = !!e.filterValue.hasOwnProperty("filterOnOutbox") && e.filterValue.filterOnOutbox, e.filterValue.hasOwnProperty("from") && (E = e.filterValue.from), e.filterValue.hasOwnProperty("subject") && (S = e.filterValue.subject.toLowerCase()), e.filterValue.hasOwnProperty("listId") && (T = e.filterValue.listId)), g = m ? function(e) { return !0 } : p, b = v ? function(e, t) { return !0 } : function(e, t) { return !t || !e.messageId || e.messageId !== t }, n = s ? function(e) { return e.path === A } : function(e) { return e.path !== A }, i = o ? function(e) { return e.path === d } : function(e) { return e.path !== d }, t = void 0 === r ? function(e) { return !1 } : a === l || a === u ? C.length > 0 ? y.length > 0 ? function(e) { return C.indexOf(h.getFolderType(e.accountId, e.path)) > -1 && y.indexOf(h.getFolderType(e.accountId, e.path)) === -1 } : function(e) { return C.indexOf(h.getFolderType(e.accountId, e.path)) > -1 } : y.length > 0 ? function(e) { return y.indexOf(h.getFolderType(e.accountId, e.path)) === -1 } : function(e) { return !0 } : a === c ? "" !== E ? function(e) { return !0 } : T ? function(e) { return e.listId && T.indexOf(e.listId) > -1 } : function(e) { return e.listId === r } : function(e) { return e.accountId === a && e.path === r }, function(e, a) { return t(e) && n(e) && i(e) && g(e) && !f(e) && _(e) && b(e, a) && (!E || e.from.length > 0 && e.from[0].address.startsWith(E)) && (!S || e.subject.length > 0 && e.subject.toLowerCase().startsWith(S)); } }, getFolderFilter: function(e, t) { if (b[e] && void 0 !== b[e][t]) return [b[e][t]]; if (!b[e] || e !== c && e !== u) return [function(n) { return n.accountId === e && n.path === t }]; var n = function() { var n = Object.keys(b[e]), i = []; return n.forEach(function(n) { n.startsWith(t) && i.push(b[e][n]) }), { v: i } }(); return "object" === ("undefined" == typeof n ? "undefined" : i(n)) ? n.v : void 0 }, getAllFolderFilters: function() { return b }, getFolderQuery: function(e, t) { var n = v.filter(function(n) { return n.accountId === e && n.path === t })[0]; return n && n.hasOwnProperty("filterValue") && n.filterValue.hasOwnProperty("query") ? n.filterValue.query : "" }, filterValueToString: function(e) { var t = []; return e ? (e.hasOwnProperty("name") && t.push("name:" + e.name), e.hasOwnProperty("from") && t.push("from:" + e.from), e.hasOwnProperty("subject") && t.push("subject:" + e.subject), e.hasOwnProperty("query") && t.push("query:" + e.query), e.hasOwnProperty("accountId") && t.push("accountId:" + e.accountId), e.hasOwnProperty("path") && t.push("path:" + e.path), e.hasOwnProperty("includeFolderTypes") && t.push("includeFolderTypes:" + e.includeFolderTypes), e.hasOwnProperty("excludeFolderTypes") && t.push("excludeFolderTypes:" + e.excludeFolderTypes), e.hasOwnProperty("filterOnDrafts") && t.push("filterOnDrafts:" + e.filterOnDrafts), e.hasOwnProperty("filterOnOutbox") && t.push("filterOnOutbox:" + e.filterOnOutbox), e.hasOwnProperty("showRead") && t.push("showRead:" + e.showRead), e.hasOwnProperty("showDuplicates") && t.push("showDuplicates:" + e.showDuplicates), e.hasOwnProperty("showMailingLists") && t.push("showMailingLists:" + e.showMailingLists), e.hasOwnProperty("listId") && t.push("listId:" + e.listId), t.join(" ")) : "" }, isSenderMailingList: function(e) { for (var t = v.filter(function(e) { return e.accountId === c }), n = 0; n < t.length; n++) if (t[n].hasOwnProperty("filterValue") && t[n].filterValue.hasOwnProperty("from") && t[n].filterValue.from.startsWith(e)) return !0; return !1 } }), E = function() { b = {}; for (var e = 0; e < v.length; e++) b[v[e].accountId] || (b[v[e].accountId] = {}), b[v[e].accountId][v[e].path] = N.filterToFolderFilter(v[e]) }; N.dispatchToken = a.register(function(e) { var t = e.action; switch (t.actionType) { case r.MAIL_FILTERS_INIT: case r.MAIL_FILTERS_CHANGED: v = t.filters, E(), N.emitChange() } }), e.exports = N }, function(e, t, n) { // ========================= // Function_247 // ========================= "use strict"; function i(e) { for (var t = 0; t < e.children.length; t++) { var n = e.children[t]; if (n.trash) return n; if (n.children) { var a = i(n); if (void 0 !== a) return a } } } function a(e) { v = e[0] ? e[0] : g, b = i(v), N.emitChange() } function r(e) { if (v !== g && v.children) { var t = u(v, 0, e); t === !0 && (v.children = v.children.slice(), N.emitChange()) } } function s(e, t) { if (v !== g && v.children) { var n = A(v, e, t); n === !0 && (v.children = v.children.slice(), N.emitChange()) } } function o(e, t, n) { if (v !== g && v.children) { var i = N.getNodeById(e); void 0 !== i && (l(e), i.parentId === t && n > i.index && n--, i.parentId = t, i.index = n, r(i)) } } function l(e) { if (v !== g && v.children) { var t = d(v, e); t === !0 && (v.children = v.children.slice(), N.emitChange()) } } function c(e) { for (var t = 0; t < e.children.length; t++) { var n = e.children[t]; n.index = t, n.treeIndex = t } } function u(e, t, n) { if (e.id === n.parentId) { var i = n || { level: t, treeIndex: n.index }; return e.children.splice(n.index, 0, i), c(e), !0 } if (e.children) for (var a = 0; a < e.children.length; a++) { var r = e.children[a]; if (r.children) { var s = u(r, t + 1, n); if (s === !0) return r.children = r.children.slice(), !0 } } return !1 } function A(e, t, n) { for (var i = 0; i < e.children.length; i++) { var a = e.children[i]; if (a.id === t) { var r = Object.assign({}, e.children[i], n); return e.children.splice(i, 1, r), !0 } if (a.children) { var s = A(a, t, n); if (s === !0) return a.children = a.children.slice(), !0 } } return !1 } function d(e, t) { for (var n = 0; n < e.children.length; n++) { var i = e.children[n]; if (i.id === t) return e.children.splice(n, 1), c(e), !0; if (i.children) { var a = d(i, t); if (a === !0) return i.children = i.children.slice(), 0 === i.children.length && (i.isExpanded = !1), !0 } } return !1 } var h = n(8), m = n(6), p = n(18).EventEmitter, f = "change", g = { children: [] }, _ = "vivaldi/x-notes", v = g, b = void 0, N = Object.assign({}, p.prototype, { getRootNode: function() { return v }, getLastTopNode: function() { var e = this.getRootNode(), t = e && e.children ? e.children : []; if (t.length > 1) return t[t.length - 2] }, getMimeType: function() { return _ }, hasNotes: function() { var e = this.getRootNode(); if (e && e.children) { if (e.children.length > 1) return !0; var t = e.children[0]; if (t && t.trash) return t.children && t.children.length > 0 } return !1 }, isNodeEmpty: function(e) { var t = N.getNodeById(e); return t && !t.title && !t.content && (!t.children || 0 === t.children.length) }, getNodeById: function(e) { var t = function t(n) { for (var i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) return a; if (a.children && (a = t(a.children))) return a } }; return t(v.children) }, getFilteredTree: function(e) { var t = function e(t, n, i) { for (var a = !1, r = 0; r < t.length; r++) { var s = t[r]; if (s.children) { var o = Object.assign({}, s, { children: [] }); e(s.children, o.children, i) && (n.push(o), a = !0) } else { var l = !1; if (i.matchContent && (s.title && (l = s.title.toLowerCase().search(i.key) !== -1), !l && s.content && (l = s.content.toLowerCase().search(i.key) !== -1)), !l && i.matchUrl && s.url && (l = s.url.toLowerCase().search(i.key) !== -1), l) { var c = Object.assign({}, s); n.push(c), a = !0 } } } return a }, n = { key: e.toLowerCase(), matchUrl: !0, matchContent: !0 }; e.startsWith("URL:") ? (n.key = n.key.substring(4), n.matchUrl = n.key.length > 0, n.matchContent = !1) : e.startsWith("CONTENT:") && (n.key = n.key.substring(8), n.matchUrl = !1, n.matchContent = n.key.length > 0), "." === n.key && (n.matchUrl = !1); var i = this.getRootNode().children, a = []; return t(i, a, n), a }, validateForDrag: function(e) { return e.filter(function(e) { return e !== b.id }) }, validateForDeletion: function(e) { return e.filter(function(e) { return e !== b.id }) }, validateForEdit: function(e) { return e !== b.id }, getTitle: function(e) { var t = N.getNodeById(e); return t ? "" !== t.title ? t.title : t.content : "" }, emitChange: function() { this.emit(f) }, addChangeListener: function(e) { this.on(f, e) }, removeChangeListener: function(e) { this.removeListener(f, e) } }); h.register(function(e) { var t = e.action; switch (t.actionType) { case m.NOTES_LOAD_ALL: a(t.notes); break; case m.NOTES_ADD_ITEM: r(t.item); break; case m.NOTES_CHANGE_ITEM: s(t.id, t.changes); break; case m.NOTES_MOVE_ITEM: o(t.id, t.targetFolder, t.targetIndex); break; case m.NOTES_REMOVE_ITEM: l(t.id); break; default: return !0 } }), e.exports = window.NoteStore = N }, function(e, t, n) { // ========================= // Function_248 // ========================= "use strict"; var i = n(8), a = n(6), r = n(18), s = r.EventEmitter, o = Object.assign({}, s.prototype, { emitChange: function() { this.emit(a.CHANGED) }, emitChangeParam: function(e) { this.emit(a.CHANGED, e) }, getSearchSuggestURL: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ""; return t.replace(/\%s/, encodeURIComponent(e)) }, addChangeListener: function(e) { this.on(a.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(a.CHANGED, e) } }); i.register(function(e) { var t = e.action; switch (t.actionType) { case a.SEARCH_SUGGEST_RESULT: var n = JSON.parse(t.json)[1]; o.emitChangeParam({ query: t.query, suggestions: n, uid: t.uid }) } }), e.exports = o }, function(e, t) { // ========================= // Function_249 // ========================= "use strict"; var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = function e(t) { if (null === t || "object" !== ("undefined" == typeof t ? "undefined" : n(t))) return t; var i = t.constructor(); for (var a in t) t.hasOwnProperty(a) && (i[a] = e(t[a])); return i }, a = function(e) { for (var t = [], n = 0; n < e.length; n++) t.push(i(e[n])); return t }; e.exports = a }, function(e, t, n) { // ========================= // Function_250 // ========================= "use strict"; var i = n(17), a = n(97), r = n(87), s = n(179), o = n(116), l = function(e, t) { arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; if (!e || !e.get("active")) return ""; var n = a.getUrlfieldState(e), l = s(t), c = !l || n.editUrl && n.editUrl !== l || null != n.selectionStart && n.selectionStart > -1 || null != n.selectionEnd && n.selectionEnd > -1, u = o(t) === o(i.getDefaultStartpage()) && !n.hasLostFocus, A = "", d = !1; try { d = r.getFindResultsForPage(e).isFindInPageToolbarOpen === !0 } catch (e) { console.warn(e) } return A = d === !0 ? "findInPage" : u ? "urlFieldSelected" : c ? "urlField" : "content" }; e.exports = l }, function(e, t, n) { // ========================= // Function_251 // ========================= "use strict"; function i(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : function(e, t, n) { return s(t[e], n[e]) }; if (e === t) return !0; if ("object" !== ("undefined" == typeof e ? "undefined" : a(e)) || null === e || "object" !== ("undefined" == typeof t ? "undefined" : a(t)) || null === t) return !1; var i = Object.keys(e), r = Object.keys(t); if (i.length !== r.length) return !1; for (var l = o.bind(t), c = 0; c < i.length; c++) if (!l(i[c]) || !n(i[c], e, t)) return !1; return !0 } var a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, r = n(7), s = r.eq, o = Object.prototype.hasOwnProperty; e.exports = i }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_309 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_310 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_311 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_312 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_313 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_314 // ========================= e.exports = '\n\t\n' }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t, n) { // ========================= // Function_348 // ========================= "use strict"; var i = n(8), a = n(6), r = n(385), s = { add: function(e, t, n) { i.handleViewAction({ actionType: a.BOOKMARK_THUMBNAIL_QUEUE_ADD_ITEM, pageId: e, id: t, url: n }) }, update: function(e, t, n) { var s = r.getQueue(e); s && 0 !== s.get("id") && s.get("url") === t && i.handleViewAction({ actionType: a.BOOKMARK_THUMBNAIL_QUEUE_UPDATE_ITEM, page: e, id: s.get("id"), url: n }) }, remove: function(e, t) { i.handleViewAction({ actionType: a.BOOKMARK_THUMBNAIL_QUEUE_REMOVE_ITEM, page: e, id: t }) } }; e.exports = s }, function(e, t, n) { // ========================= // Function_349 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (p && p.readyState === XMLHttpRequest.DONE && p.status === _) try { var n = p.responseText; A.handleViewAction({ actionType: m, query: f, json: n, uid: e }) } finally { p = void 0, f = "" } } function r() { p.abort(), f = "", p = void 0 } var s = n(17), o = i(s), l = n(89), c = i(l), u = n(7), A = n(8), d = n(248), h = n(6), m = h.SEARCH_SUGGEST_RESULT, p = void 0, f = "", g = 2, _ = 200, v = { suggest: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if ("string" != typeof e || 0 === e.length) throw TypeError("suggest query required"); if (o.default.getActivePage().get("incognito") === !1) { if (!t.SuggestUrl || e.length < g) return null; var n = d.getSearchSuggestURL(e, t.SuggestUrl); p && r(); var i = (0, c.default)(); return f = e, p = new XMLHttpRequest, p.onreadystatechange = (0, u.partial)(a, i, n), p.open("GET", n, !0), p.send(), i } } }; e.exports = v }, function(e, t, n) { // ========================= // Function_350 // ========================= "use strict"; function i() { return { rootNode: s.getRootNode(), bookmarksBarFolderId: s.getBookmarkBarFolderId() } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/bookmarksbar/bookmarksfoldersflatlist.jsx", r = n(1), s = n(51), o = r.createClass({ displayName: "BookmarksFoldersFlatList", getInitialState: function() { return i() }, _onStoreChange: function() { this.setState(i()) }, componentWillMount: function() { s.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { s.removeChangeListener(this._onStoreChange) }, getFolderId: function(e) { var t = this; if (this.props.selectedItemID) { var n = e.find(function(e) { return e.id === t.props.selectedItemID }); if (n) return n.id; console.warn("Bookmark folder not found") } return this.state.bookmarksBarFolderId }, render: function() { var e = s.getFoldersWithin(this.state.rootNode, 0), t = this.getFolderId(e), n = e.find(function(e) { return e.id === t }).title, i = e.map(function(e) { return r.createElement("option", { key: "dir_" + e.id, value: e.id, __source: { fileName: a, lineNumber: 48 } }, " ".repeat(3 * e.level), e.title) }); return r.createElement("span", { className: "bookmark-folder-picker", __source: { fileName: a, lineNumber: 55 } }, r.createElement("input", { type: "text", value: n, readOnly: !0, __source: { fileName: a, lineNumber: 56 } }), r.createElement("select", { className: "bookmark-folders", value: t, onChange: this.props.onChange, __source: { fileName: a, lineNumber: 57 } }, i)) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_351 // ========================= (function(t) { "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/BookmarkEditItem.jsx", r = n(1), s = n(11), o = n(393), l = n(54), c = n(51), u = n(37), A = n(170), d = n(96), h = n(136), m = n(65), p = n(97), f = n(13), g = n(2), _ = n(5), v = n(4), b = n(394), N = n(10), E = n(108), S = E.PLACEHOLDER_URL, T = n(7), y = T.isEmpty, C = "BookmarkEditItem", I = r.createClass({ displayName: "BookmarkEditItem", mixins: [f], vivaldiSettingsKeys: ["BOOKMARK_BAR_VISIBLE", "BOOKMARKS_BAR_FOLDER_IDS"], getInitialState: function() { return { id: "", title: "", url: "", nickname: "", description: "", thumbnail: "", speeddial: !1, isFolder: !1, isTrash: !1, dateAdded: "", index: 0, generalErrorKey: null, saveBookmarkItem: null, editUrl: null, updatingThumbnail: !1 } }, updateStateWithItem: function(e, t) { var n = e.url && e.url !== S ? e.url : ""; this.setState({ isFolder: !e.url, isTrash: c.isTrashed(e), id: e.id || "", thumbnail: e.thumbnail || "", title: e.title || "", url: n, editUrl: null, updatingThumbnail: d.isBookmarkThumbnailCapture(e.id), nickname: e.nickname || "", description: e.description || "", speeddial: !!e.speeddial, dateAdded: e.dateAdded ? new Date(e.dateAdded) : "", generalErrorKey: null }, t) }, componentWillMount: function() { c.addChangeListener(this._onStoreChanged), p.addChangeListener(this._onUrlbarStoreChanged), u.bind("esc", this._onEscPressed) }, componentDidMount: function() { var e = this.props.getSelectedItem(); e && this.setItem(e) }, componentWillUnmount: function() { c.removeChangeListener(this._onStoreChanged), p.removeChangeListener(this._onUrlbarStoreChanged), t.nextTick(function() { return m.clearUrlfieldState(C) }), u.unbind("esc", this._onEscPressed) }, _onStoreChanged: function() { if ("" !== this.state.id) { var e = c.getItemById(this.state.id); e && this.updateStateWithItem(e) } }, _onUrlbarStoreChanged: function() { var e = p.getUrlfieldStateFromId(C); this.setState(e) }, saveBookmark: function() { if (!this.state.isTrash && "" !== this.state.id) { var e = {}; return e.id = this.state.id, e.title = this.state.title ? this.state.title.trim() : "", e.url = (this.state.editUrl || this.state.url || "").trim(), e.nickname = this.state.nickname.trim(), e.description = this.state.description.trim(), e.speeddial = this.state.speeddial, e.index = this.state.index, e.thumbnail = this.state.thumbnail, this.state.isFolder || "" !== e.url ? void this.updateBookmark(e) : void this.setState({ generalErrorKey: g("URL cannot be empty.") }) } }, updateBookmark: function(e) { var t = this, n = this.state.isFolder; N.utilities.isUrlValid(e.url, function(i) { n ? e.url = "" : i.urlValid && i.schemeValid || (e.url = "http://" + e.url); var a = e.id; delete e.id; var r = e.index; delete e.index, v.bookmarks.update(a, e, function(n) { if (a === t.state.id && v.runtime.lastError) t.setState({ generalErrorKey: o(v.runtime.lastError.message) + " " + g("Changes not saved.") }); else { e.id = a, e.index = r; var i = { generalErrorKey: null }; n && n.id === t.state.id && (i.url = n.url, i.editUrl = null), t.setState(i), m.setUrlfieldState(C, { editUrl: i.editUrl }), "function" == typeof t.props.onUpdate && t.props.onUpdate() } }) }) }, isFolder: function() { return this.state.isFolder === !0 }, isTrash: function() { return this.state.isTrash === !0 }, handleKeyDown: function(e) { e.stopPropagation(), "Enter" === e.key && (this.saveBookmark(), (this.state.isFolder || !this.state.isFolder && "" !== this.state.url.trim()) && this.props.onFocusTree()) }, _onEscPressed: function() { this.props.removeIfCreating(this.state.id), this.props.onFocusTree() }, handleUpdateThumbnail: function(e) { e.stopPropagation(); var t = { id: this.state.id, url: this.state.url }; d.updateBookmarkThumbnail(t), this.setState({ updatingThumbnail: !0 }) }, checkChangeSpeeddial: function() { var e = this; this.setState({ speeddial: !this.state.speeddial }, function() { e.saveBookmark() }) }, isBookmarkBarChecked: function() { return this.state.BOOKMARKS_BAR_FOLDER_IDS && this.state.BOOKMARKS_BAR_FOLDER_IDS[0] === this.state.id && this.state.BOOKMARK_BAR_VISIBLE }, checkChangeBookmarkBar: function() { l.setBookmarkBarFolderAndToggleVisibility(this.state.id) }, onInputChange: function(e, t) { var n; this.setState((n = {}, i(n, e, t.target.value), i(n, "generalErrorKey", null), n)) }, onUrlChange: function(e) { this.setState({ url: e, generalErrorKey: null }) }, setItem: function(e) { var t = this; this.updateStateWithItem(e, function() { if (!t.isTrash()) { var e = s.findDOMNode(t.refs.refUrl); !t.state.isFolder && y(e.value) || (e = s.findDOMNode(t.refs.refTitle)), y(e.value) && e.focus() } }) }, render: function() { var e = b.dateTimeLong(this.state.dateAdded); return r.createElement("div", { className: "manager-editor", __source: { fileName: a, lineNumber: 264 } }, r.createElement("div", { className: "addbookmark-cardwrapper cardview", __source: { fileName: a, lineNumber: 265 } }, r.createElement("div", { className: "upper-half", __source: { fileName: a, lineNumber: 266 } }, r.createElement("div", { className: "title-and-address", __source: { fileName: a, lineNumber: 267 } }, r.createElement("div", { className: "fieldset", __source: { fileName: a, lineNumber: 268 } }, r.createElement("input", { className: "cardview title", ref: "refTitle", id: "reftitle", placeholder: g("Title"), onChange: this.onInputChange.bind(this, "title"), value: this.state.title, onKeyDown: this.handleKeyDown, type: "text", onBlur: this.saveBookmark, __source: { fileName: a, lineNumber: 269 } })), r.createElement("div", { className: this.isFolder() ? "fieldset collapse" : "fieldset", __source: { fileName: a, lineNumber: 278 } }, r.createElement(h, { ref: "refUrl", title: g("Enter webpage address"), disabled: this.isFolder(), className: "cardview address", pageId: C, placeholder: g("Address"), displayUrl: this.state.url, editUrl: this.state.editUrl, autocompletionEnabled: !0, triggerTypedHistory: !1, selectionStart: this.state.selectionStart, selectionEnd: this.state.selectionEnd, onUrlFieldChanged: this.onUrlChange, onKeyPressed: this.handleKeyDown, onBlur: this.saveBookmark, __source: { fileName: a, lineNumber: 279 } }))), this.isFolder() ? r.createElement("div", { className: "preview-folder", dangerouslySetInnerHTML: { __html: n(466) }, __source: { fileName: a, lineNumber: 297 } }) : r.createElement("div", { className: "preview", __source: { fileName: a, lineNumber: 302 } }, r.createElement(A, { className: "bookmarks-editor-thumbnail", key: this.state.id, src: this.state.thumbnail, __source: { fileName: a, lineNumber: 303 } }), r.createElement("button", { tabIndex: "-1", className: _({ circular: !0, "update-thumbnail": !0, updating: this.state.updatingThumbnail }), title: g("Update thumbnail"), onClick: this.handleUpdateThumbnail, dangerouslySetInnerHTML: { __html: n(474) }, __source: { fileName: a, lineNumber: 307 } }))), r.createElement("div", { className: "lower-half", __source: { fileName: a, lineNumber: 320 } }, r.createElement("div", { className: "fieldset resizable", __source: { fileName: a, lineNumber: 321 } }, r.createElement("textarea", { className: "cardview description", ref: "refDescription", id: "refdescription", placeholder: g("Description"), value: this.state.description, onChange: this.onInputChange.bind(this, "description"), onKeyDown: this.handleKeyDown, type: "text", onBlur: this.saveBookmark, __source: { fileName: a, lineNumber: 322 } })), r.createElement("div", { className: "fieldset", __source: { fileName: a, lineNumber: 332 } }, r.createElement("input", { className: "cardview nickname", ref: "refNickname", id: "refnickname", placeholder: g("Nickname"), value: this.state.nickname, onChange: this.onInputChange.bind(this, "nickname"), onKeyDown: this.handleKeyDown, type: "text", onBlur: this.saveBookmark, __source: { fileName: a, lineNumber: 333 } })), r.createElement("div", { className: "speeddial-bookmarksbar", __source: { fileName: a, lineNumber: 343 } }, r.createElement("div", { className: this.isFolder() ? "fieldset center cardview" : "fieldset center collapse", __source: { fileName: a, lineNumber: 344 } }, r.createElement("input", { ref: "refSpeeddial", id: "refspeeddial", className: "cardview", disabled: !(this.isFolder() && !this.isTrash()) && "disabled", checked: this.state.speeddial, onChange: this.checkChangeSpeeddial, type: "checkbox", __source: { fileName: a, lineNumber: 346 } }), r.createElement("label", { htmlFor: "refspeeddial", __source: { fileName: a, lineNumber: 354 } }, g("Speed Dial"))), r.createElement("div", { className: this.isFolder() ? "fieldset center cardview" : "fieldset center collapse", __source: { fileName: a, lineNumber: 356 } }, r.createElement("input", { ref: "refBookmarkBar", id: "refbookmarkBar", className: "cardview", disabled: !(this.isFolder() && !this.isTrash()) && "disabled", checked: this.isBookmarkBarChecked(), onChange: this.checkChangeBookmarkBar, type: "checkbox", __source: { fileName: a, lineNumber: 358 } }), r.createElement("label", { htmlFor: "refbookmarkBar", __source: { fileName: a, lineNumber: 366 } }, g("Bookmark Bar")))), this.state.dateAdded && r.createElement("div", { className: "fieldset", __source: { fileName: a, lineNumber: 370 } }, r.createElement("div", { className: "meta-icon date fieldset", dangerouslySetInnerHTML: { __html: n(458) }, __source: { fileName: a, lineNumber: 371 } }), r.createElement("span", { className: "dateCreated bookmark", title: g("Date created"), __source: { fileName: a, lineNumber: 373 } }, e)), this.state.generalErrorKey && r.createElement("p", { className: "warning", __source: { fileName: a, lineNumber: 379 } }, this.state.generalErrorKey)))) } }); e.exports = I }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_352 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/BookmarkTree.jsx", a = n(1), r = n(9), s = n(40), o = n(54), l = n(51), c = n(234), u = n(50), A = n(17), d = n(47), h = n(13), m = n(109), p = n(2), f = n(4), g = n(30), _ = n(10), v = n(108), b = v.PLACEHOLDER_URL, N = n(108), E = N.VIVALDI_ROOT_BOOKMARK_FOLDER, S = 1500, T = "0", y = "1", C = "2", I = -1, O = 0, w = a.createClass({ displayName: "BookmarkTree", mixins: [r, h], vivaldiSettingsKeys: ["SHOW_VIVALDI_FOOTER", "BOOKMARKS_SINGLE_CLICK_IN_TREE", "BOOKMARKS_SEARCH_INCLUDES_TREE"], getInitialState: function() { return { bookmarkTreeNodeArray: [], hasFocus: !1, nodes: l.getTopNodes() } }, componentWillMount: function() { l.addChangeListener(this._onStoreChange) }, componentWillReceiveProps: function(e) { var t = this; this.props.filter !== e.filter && ! function() { var n = e.filter.length, i = t.props.filter.length; t.onFilterChange(e.filter, function() { n > 0 ? t.expandAll() : i > 0 && 0 === n && t.collapseAll() }) }() }, componentWillUnmount: function() { l.removeChangeListener(this._onStoreChange) }, _onStoreChange: function() { this.onFilterChange() }, onFilterChange: function(e, t) { var n = this; e && e.length > 0 ? "tree" === this.refs.treeList.getSearchStyle() ? this.setState({ nodes: l.getFilteredTree(e) }, t) : f.bookmarks.search(e, function(e) { n.setState({ nodes: e }, t) }) : (this.setState({ nodes: l.getTopNodes() }, t), this.refs.treeList && this.refs.treeList.setCutIds(l.getCutIds())) }, onDelete: function() { this.refs.treeList.onDelete() }, delete: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [], t = this.getNodesByIds(e); return o.disableBookmarkMutationHandlers(), Promise.all(t.map(function(e) { return new Promise(function(t) { o.removeBookmark(e, t) }) })).then(function() { o.enableBookmarkMutationHandlers() }) }, expandAll: function() { this.refs.treeList.expandAll() }, collapseAll: function() { this.refs.treeList.collapseAll() }, setSearchStyle: function(e) { this.refs.treeList.setSearchStyle(e) }, onSearchStyleChanged: function(e) { var t = this; this.props.filter && this.onFilterChange(this.props.filter, function() { "tree" === e && t.expandAll() }) }, scrollToId: function(e) { this.refs.treeList.scrollToId(e) }, onDrop: function(e, t, n) { var i = this.getTargetSpec(t, n); return s.getUrlsFromEventPromise(e, !1).then(function(e) { return e.map(function(e, t) { return Object.assign(e, { index: void 0 === i.index ? void 0 : i.index + t, parentId: i.parentId }) }) }).then(this.onCreate) }, getTargetSpec: function(e, t) { var n = { index: 0, parentId: void 0 }; if (this.isTrash(e) && "on" !== t) { var i = l.getLastTopNode(); i ? (n.parentId = i.parentId, n.index = i.index + 1) : n.parentId = l.getRootNode().id } else this.isFolder(e) && "on" === t ? n.parentId = e.id : (n.parentId = e.parentId, n.index = e.index + ("below" === t ? 1 : 0)); return n }, updateExpandFolderOnHover: function(e, t) { for (var n = this.refs.treeList.SelectionMixinGetAllSelected(), i = 0; i < n.length; i++) if (t.id === n[i].id) return; var a = O; O = 0, a ? e - a >= S ? this.toggleExpandModel(t.id) : O = a : this.isFolder(t) && !t.isExpanded && (O = e) }, onMove: function(e, t) { return e = Array.isArray(e) ? e : [e], e = e.filter(function(e) { return !e.trash }), Promise.all(e.map(function(e) { var n = e.id || e; return new Promise(function(i) { f.bookmarks.move(n.toString(), t, function() { i(e) }) }) })) }, isValidForClipboard: function(e) { return !e.trash }, isValidAddTarget: function(e) { return !this.isTrashed(e) }, isValidDragSource: function(e) { return !e.trash }, hasChildren: function(e) { return !!e.children && e.children.length > 0 }, isTrashed: function(e) { return !!e && l.isTrashed(e) }, onAdd: function(e) { this.refs.treeList.onAdd(e) }, resetBookmarkBar: function() { o.setBookmarkBarFolderAndShow(E) }, moveBookmarkToBookmarkBarFolder: function(e) { var t = { parentId: l.getBookmarkBarFolderId() }; f.bookmarks.move(e.id.toString(), t) }, bookmarkActivePage: function(e) { var t = this.isFolder(e) ? e.id : e.parentId, n = A.getActivePage(); o.bookmarkPages(n, !1, t) }, bookmarkAllOpenPages: function(e) { var t = this.isFolder(e) ? e.id : e.parentId; o.bookmarkAllOpenPages(t) }, onRootPasteContextMenu: function(e) { this.clipboardItem = e, document.addEventListener("paste", this.onRootPaste), document.execCommand("paste"), document.removeEventListener("paste", this.onRootPaste) }, onRootPaste: function(e) { o.pastePromise(e, l.getRootNode().id, !0) }, isFolder: function(e) { return !(!e || !e.children && e.url) }, onNodesActivated: function(e, t) { var n = []; t.forEach(function(e) { var t = l.getItemById(e.id); t && Array.prototype.push.apply(n, s.getBookmarksByNode(t)) }); var i = s.getOpenOptionsFromEvent(e); i.bookmarks = n, s.open(i, !0) }, getSelectedBookmarks: function() { var e = this, t = this.refs.treeList.SelectionMixinGetAllSelected().map(function(e) { return e.id }), n = []; return t.forEach(function(t) { var i = e.refs.treeList.findTreeItem(t); i && Array.prototype.push.apply(n, s.getBookmarksByNode(i)) }), n }, getSelectedItem: function() { return this.refs.treeList.getSelectedItem() }, getNodesByIds: function(e) { var t = this, n = []; return e.forEach(function(e) { var i = t.refs.treeList.findTreeItem(e); i && n.push(i) }), n }, isTrash: function(e) { return !!e.trash }, isEditable: function(e) { return [T, y, C].indexOf(e.id) === -1 && !e.trash }, _openInNewWindow: function(e, t) { var n = { bookmarks: this.getSelectedBookmarks(), inNewWindow: !0, inBackground: e, incognito: t }; s.open(n, !0) }, _openInNewTab: function(e) { var t = { bookmarks: this.getSelectedBookmarks(), inCurrent: !1, inBackground: e }; s.open(t, !0) }, _openBookmark: function() { var e = { bookmarks: this.getSelectedBookmarks(), inCurrent: !0 }; s.open(e, !0) }, canBeSpeedDialFolder: function(e) { return !e.speeddial && !this.isTrash(e) && this.isFolder(e) && this.isEditable(e) }, isSpeedDialFolder: function(e) { return e.speeddial }, getContextMenuItems: function(e) { var t = this; return e.trash ? [Object.assign({ handler: this.onEmptyTrash }, g("Empty Trash"))] : [Object.assign({ handler: this._openBookmark }, g("Open")), Object.assign({ handler: this._openInNewTab.bind(this, !1) }, g("Open in New Tab")), Object.assign({ handler: this._openInNewTab.bind(this, !0) }, g("Open in Background Tab")), { name: "---" }, Object.assign({ handler: this._openInNewWindow.bind(this, !1) }, g("Open in New Window")), Object.assign({ handler: this._openInNewWindow.bind(this, !0, !1) }, g("Open in Background Window")), Object.assign({ handler: this._openInNewWindow.bind(this, !1, !0) }, g("Open in Private Window")), { name: "---" }, Object.assign({ testVisibility: function() { return t.canBeSpeedDialFolder(e) && !t.isTrashed(e) }, handler: function() { t.props.onToggleSpeeddial(e) } }, g("Use as Speed Dial")), Object.assign({ testVisibility: function() { return t.isSpeedDialFolder(e) }, handler: function() { t.props.onToggleSpeeddial(e) } }, g("Remove from Speed Dial")), Object.assign({ testVisibility: function() { return t.isFolder(e) && !t.isTrashed(e) }, handler: function() { o.setBookmarkBarFolderAndToggleVisibility(e.id) } }, g("Set as Bookmark Bar Folder")), Object.assign({ handler: function() { t.moveBookmarkToBookmarkBarFolder(e) } }, g("Move to Bookmark Bar Folder")), { name: "---" }, Object.assign({ handler: function() { t.bookmarkActivePage(e) } }, g("Bookmark Active Page")), Object.assign({ handler: function() { t.bookmarkAllOpenPages(e) } }, g("Bookmark All Open Pages"))] }, getRootContextMenuItems: function() { return [Object.assign({ handler: this.bookmarkActivePage.bind(this, l.getRootNode()) }, g("Bookmark Active Page")), Object.assign({ handler: this.bookmarkAllOpenPages.bind(this, l.getRootNode()) }, g("Bookmark All Open Pages")), { name: "---" }, Object.assign({ handler: this.onAdd.bind(this, !1) }, g("New Bookmark")), Object.assign({ handler: this.onAdd.bind(this, !0) }, g("New Folder")), { name: "---" }, Object.assign({ handler: this.resetBookmarkBar }, g("Set as Bookmark Bar Folder")), { name: "---" }, Object.assign({ name: "MacIntel" === navigator.platform ? p("mac", "Paste") : p("win_linux", "Paste"), handler: this.onRootPasteContextMenu }, "MacIntel" === navigator.platform ? g("mac", "Paste") : g("win_linux", "Paste")), { name: "---" }, Object.assign({ handler: this.collapseAll }, g("Collapse All Folders")), Object.assign({ handler: this.expandAll }, g("Expand All Folders")), { name: "---" }, Object.assign({ handler: u.showImportData, ellipsis: !0 }, g("Import Bookmarks")), { name: "---" }, Object.assign({ items: [Object.assign({ type: "checkbox", checked: "flat" === this.refs.treeList.getSearchStyle(), handler: this.setSearchStyle.bind(this, "flat") }, g("Flat Search")), Object.assign({ type: "checkbox", checked: "tree" === this.refs.treeList.getSearchStyle(), handler: this.setSearchStyle.bind(this, "tree") }, g("Tree Search"))] }, g("Settings")), { name: "---" }, Object.assign({ handler: u.fullScreen, visible: this.props.inManager }, g("Fullscreen"))] }, getContextMenuItemProps: function(e) { return { showEdit: this.isEditable(e) && !this.props.inManager, showRename: this.isEditable(e), showNewItem: !e.trash, showNewFolder: !e.trash, showCut: !e.trash, showCopy: !e.trash, showPaste: !e.trash, showDelete: !e.trash, showExpandCollapse: !0, showSettings: !0, showFullscreen: this.props.inManager } }, getContextMenuNewItemString: function() { return g("New Bookmark") }, supportDropForNode: function(e, t) { var n = s.getMimeType(); return e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || e === n }) }, getDragDataFromNode: function(e, t) { return "text" === e ? t.url : "title" === e ? t.url || "" : "text/uri-list" === e ? [t.url].join("\r\n") : "" }, handleExpandClick: function() { this.refs.treeList.toggleSelectedExpansion() }, onItemClick: function(e) { 1 !== e.button && this.state.BOOKMARKS_SINGLE_CLICK_IN_TREE && this.onOpenBookmarks(e); }, onItemDoubleClick: function(e) { 1 === e.button || this.state.BOOKMARKS_SINGLE_CLICK_IN_TREE || this.onOpenBookmarks(e) }, onItemMouseDown: function(e, t) { 1 === t.button && (t.preventDefault(), t.stopPropagation()) }, onItemMouseUp: function(e, t) { 1 === t.button && (this._openInNewTab(!0), t.preventDefault(), t.stopPropagation()) }, onOpenBookmarks: function(e) { var t = this, n = s.getOpenOptionsFromEvent(e); n.bookmarks = this.refs.treeList.SelectionMixinGetAllSelected().map(function(e) { return t.refs.treeList.findTreeItem(e.id) }).filter(function(e) { return !!e && !!e.url && e.url !== b }), s.open(n, !0) }, handleMouseEnter: function(e) { d.setStatus(e) }, handleMouseLeave: function() { d.clearStatus() }, renderItemContent: function(e) { var t = e.node, r = 16 * (t.level + 1) + "px", s = 16 * t.level + "px", o = []; if (o.push(a.createElement("label", { "data-parent": t.parentId, key: "0", onMouseEnter: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseEnter.bind(this, t.url), onMouseLeave: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseLeave, __source: { fileName: i, lineNumber: 629 } }, this.isFolder(t) && this.hasChildren(t) && a.createElement("span", { className: "expand-icon", style: { marginLeft: s }, onClick: this.handleExpandClick, dangerouslySetInnerHTML: { __html: n(311) }, __source: { fileName: i, lineNumber: 636 } }), this.isFolder(t) && this.isTrash(t) && a.createElement(c, { speeddial: t.speeddial, open: t.isExpanded, trash: !0, leftMargin: this.hasChildren(t) ? 0 : r, __source: { fileName: i, lineNumber: 644 } }), this.isFolder(t) && !this.isTrash(t) && a.createElement(c, { selected: t.isSelected, speeddial: t.speeddial, open: t.isExpanded, trash: !1, leftMargin: this.hasChildren(t) ? 0 : r, __source: { fileName: i, lineNumber: 652 } }), !this.isFolder(t) && a.createElement("img", { src: "chrome://favicon/" + t.url, style: { marginLeft: r }, width: "16", height: "16", alt: "", __source: { fileName: i, lineNumber: 661 } }), void 0 !== e.inlineEditText && a.createElement("input", { ref: "input", type: "text", value: e.inlineEditText, onChange: e.onChange, onFocus: e.onFocus, onBlur: e.onBlur, autoFocus: !0, __source: { fileName: i, lineNumber: 667 } }), void 0 === e.inlineEditText && a.createElement("span", { className: "title", __source: { fileName: i, lineNumber: 678 } }, t.title), this.hasChildren(t) && !this.props.fullView && a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 684 } }, t.children.length))), this.props.fullView) { var l = t.url !== b ? t.url : ""; o.push(a.createElement("label", { key: "1", __source: { fileName: i, lineNumber: 696 } }, this.hasChildren(t) && this.props.fullView ? a.createElement("span", { className: "secondary", __source: { fileName: i, lineNumber: 698 } }, p("$1 item", "$1 items", [t.children.length])) : l)), o.push(a.createElement("label", { key: "2", __source: { fileName: i, lineNumber: 709 } }, t.nickname)), o.push(a.createElement("label", { key: "3", __source: { fileName: i, lineNumber: 713 } }, t.description)) } return o }, unSelectAll: function() { this.refs.treeList.unSelectAll() }, onSelect: function(e) { var t = this, n = e.id; if (this.props.onSelect) { if (!n || n === I) return void this.props.onSelect(); f.bookmarks.get(n.toString(), function(e) { f.runtime.lastError && console.warn("chrome.bookmarks.get failed: %s %o", n, f.runtime.lastError); var i = e && 1 === e.length ? e[0] : null; i && t.props.onSelect(i) }) } }, onEmptyTrash: function() { _.bookmarksPrivate.emptyTrash(function(e) { e === !1 && console.warn("Empty trash failed.") }) }, onCreate: function(e) { var t = this; return e = Array.isArray(e) ? e : [e], o.createBookmarksPromise(e).then(function(e) { return t.props.onCreate(e.isNew), e.nodes }) }, saveTitle: function(e, t) { f.bookmarks.update(e, { title: t }) }, render: function() { return a.createElement(m, { ref: "treeList", nodes: this.state.nodes, onSelect: this.onSelect, onItemClick: this.onItemClick, onItemDoubleClick: this.onItemDoubleClick, onItemMouseDown: this.onItemMouseDown, onItemMouseUp: this.onItemMouseUp, onItemsActivated: this.onNodesActivated, onCreate: this.onCreate, onSearchStyleChanged: this.onSearchStyleChanged, delete: this.delete, onMove: this.onMove, onEdit: this.props.onEdit, onCutToClipboard: o.cut, onCopyToClipboard: o.copy, onPasteFromClipboard: o.pastePromise, isFolder: this.isFolder, isTrash: this.isTrash, supportsInlineEdit: !0, mimeType: s.getMimeType, supportDropForItem: this.supportDropForNode, getDragData: this.getDragDataFromNode, hasChildren: this.hasChildren, settings: this.props.inManager ? "BOOKMARKS_MANAGER" : "BOOKMARKS_PANEL", renderItemContent: this.renderItemContent, multiSelect: !this.state.BOOKMARKS_SINGLE_CLICK_IN_TREE, getCutIds: l.getCutIds, getContextMenuItems: this.getContextMenuItems, getContextMenuItemProps: this.getContextMenuItemProps, getContextMenuNewItemString: this.getContextMenuNewItemString, getTitle: l.getTitle, saveTitle: this.saveTitle, getTargetSpec: this.getTargetSpec, sorting: this.props.sorting, onDrop: this.onDrop, rootId: y, isValidAddTarget: this.isValidAddTarget, isValidDragSource: this.isValidDragSource, isValidForClipboard: this.isValidForClipboard, isValidToEdit: l.validateForEdit, validateForDrag: l.validateForDrag, validateForDeletion: l.validateForDeletion, __source: { fileName: i, lineNumber: 768 } }) } }); e.exports = w }, function(e, t, n) { // ========================= // Function_353 // ========================= "use strict"; function i() { var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0]; this.selectedIds_ = [], this.anchorIndex_ = -1, this.leadIndex_ = -1, this.multiSelect_ = e } var a = n(7); i.prototype = { isSelected: function(e) { var t = this.selectedIds_.map(function(e) { return e.id }).indexOf(e), n = this.selectedIds_[t]; return !!n && n.selected }, get length() { return this.selectedIds_.length }, get isSingleItemSelected() { return 1 === this.selectedIds_.length }, get FirstSingleItemSelected() { return this.isSingleItemSelected ? this.selectedIds_[0].id : -1 }, get selectedIds() { return this.selectedIds_ }, resetSelectionModel: function() { this.selectedIds_ = [], this.anchorIndex_ = -1, this.leadIndex_ = -1 }, getData: function() { return a.pick(this, ["selectedIds_", "anchorIndex_", "leadIndex_"]) }, unSelectAll: function() { return this.selectedIds_ = [], { selectedIds_: this.selectedIds_ } }, selectAll: function(e) { var t = this; return this.multiSelect && e.forEach(function(e) { t.selectedIds_.push(new Object({ id: e, selected: !0 })) }), { selectedIds_: this.selectedIds_ } }, isSelectionLead: function(e) { return this.leadIndex === e }, setSelectedIds: function(e) { return this.multiSelect ? this.selectedIds_ = e.map(function(e) { return { id: e, selected: !0 } }) : this.setIndexSelected(this.leadIndex, !0), { leadIndex_: this.leadIndex_, selectedIds_: this.selectedIds_ } }, setLeadIndex: function(e) { return this.leadIndex = e, { leadIndex_: this.leadIndex_ } }, setIndexSelected: function(e, t) { var n = this.selectedIds_.map(function(e) { return e.id }).indexOf(e), i = this.selectedIds_[n]; if (!i || i.selected !== t) { if (this.multiSelect || this.resetSelectionModel(), this.leadIndex = e, this.anchorIndex = e, t) this.selectedIds_.push(new Object({ id: e, selected: t })); else { var a = this.selectedIds_.map(function(e) { return e.id }).indexOf(e); a !== -1 && this.selectedIds_.splice(a, 1) } return { leadIndex_: this.leadIndex_, selectedIds_: this.selectedIds_ } } }, get leadIndex() { return this.leadIndex_ }, set leadIndex(e) { this.leadIndex_ = e }, get anchorIndex() { return this.anchorIndex_ }, set anchorIndex(e) { this.anchorIndex_ = e }, get multiSelect() { return this.multiSelect_ }, set multiSelect(e) { this.multiSelect_ = e } }, e.exports = i }, function(e, t, n) { // ========================= // Function_354 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/TabPositionPreview.jsx", r = n(1), s = n(5), o = n(25), l = n(2), c = n(7), u = c.omit, A = ["TAB_POSITION"], d = { top: l("Top"), right: l("Right"), bottom: l("Bottom"), left: l("Left") }, h = r.createClass({ displayName: "TabPositionPreview", propTypes: { position: r.PropTypes.string }, render: function() { if (!this.props.position) return null; var e = this.props.position, t = d[this.props.position], n = s({ selectbox: !0, "selectbox-selected": this.props.selected }), o = u(this.props, ["position", "vivaldiSettings"]); return r.createElement("button", i({ className: n, title: t }, o, { __source: { fileName: a, lineNumber: 38 } }), r.createElement("div", { className: "selectbox-image", __source: { fileName: a, lineNumber: 43 } }, r.createElement("svg", { viewBox: "0 0 96 76", xmlns: "http://www.w3.org/2000/svg", className: "tab-preview", __source: { fileName: a, lineNumber: 44 } }, "top" === e && r.createElement("g", { __source: { fileName: a, lineNumber: 48 } }, r.createElement("path", { className: "thumb-preview-colorBg", d: "M0 0h96v76H0z", __source: { fileName: a, lineNumber: 49 } }), r.createElement("path", { className: "thumb-preview-colorBgDark", d: "M0 0h96v12H0z", __source: { fileName: a, lineNumber: 50 } }), r.createElement("path", { className: "thumb-preview-non-active-tab", d: "M33 2h30v8H33zM64 2h30v8H64z", __source: { fileName: a, lineNumber: 51 } }), r.createElement("path", { className: "thumb-preview-colorAccentBg", d: "M2 2h30v8H2z", __source: { fileName: a, lineNumber: 52 } })), "right" === e && r.createElement("g", { __source: { fileName: a, lineNumber: 56 } }, r.createElement("path", { className: "thumb-preview-colorBg", d: "M0 0h96v76H0z", __source: { fileName: a, lineNumber: 57 } }), r.createElement("path", { className: "thumb-preview-colorBgDark", d: "M62 0h34v76H62z", __source: { fileName: a, lineNumber: 58 } }), r.createElement("path", { className: "thumb-preview-non-active-tab", d: "M64 11h30v8H64zM64 20h30v8H64z", __source: { fileName: a, lineNumber: 59 } }), r.createElement("path", { className: "thumb-preview-colorAccentBg", d: "M64 2h30v8H64z", __source: { fileName: a, lineNumber: 60 } })), "bottom" === e && r.createElement("g", { __source: { fileName: a, lineNumber: 64 } }, r.createElement("path", { className: "thumb-preview-colorBg", d: "M0 0h96v76H0z", __source: { fileName: a, lineNumber: 65 } }), r.createElement("path", { className: "thumb-preview-colorBgDark", d: "M0 64h96v12H0z", __source: { fileName: a, lineNumber: 66 } }), r.createElement("path", { className: "thumb-preview-non-active-tab", d: "M33 66h30v8H33zM64 66h30v8H64z", __source: { fileName: a, lineNumber: 67 } }), r.createElement("path", { className: "thumb-preview-colorAccentBg", d: "M2 66h30v8H2z", __source: { fileName: a, lineNumber: 68 } })), "left" === e && r.createElement("g", { __source: { fileName: a, lineNumber: 72 } }, r.createElement("path", { className: "thumb-preview-colorBg", d: "M0 0h96v76H0z", __source: { fileName: a, lineNumber: 73 } }), r.createElement("path", { className: "thumb-preview-colorBgDark", d: "M0 0h34v76H0z", __source: { fileName: a, lineNumber: 74 } }), r.createElement("path", { className: "thumb-preview-non-active-tab", d: "M2 11h30v8H2zM2 20h30v8H2z", __source: { fileName: a, lineNumber: 75 } }), r.createElement("path", { className: "thumb-preview-colorAccentBg", d: "M2 2h30v8H2z", __source: { fileName: a, lineNumber: 76 } }))), r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 80 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 83 } }))), r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 87 } }, t)) } }); e.exports = o(h, A) }, function(e, t, n) { // ========================= // Function_355 // ========================= "use strict"; function i(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/importBookmarks.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = n(10), A = n(34), d = n(2), h = n(27), m = n(21), p = function(e) { function t() { a(this, t); var e = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this)); return e.handleClick = e.handleClick.bind(e), e.onHandleClick = e.onHandleClick.bind(e), e.handlePasswordChange = e.handlePasswordChange.bind(e), e.handleProfileChange = e.handleProfileChange.bind(e), e.handleUserProfileChange = e.handleUserProfileChange.bind(e), e.onImportStarted = e.onImportStarted.bind(e), e.onImportItemStarted = e.onImportItemStarted.bind(e), e.onImportItemEnded = e.onImportItemEnded.bind(e), e.onImportItemFailed = e.onImportItemFailed.bind(e), e.onImportEnded = e.onImportEnded.bind(e), e.state = { importState: "IDLE", useDefaultLocation: !0, profilesArray: [], shown: !0, modalShown: !1, selectedIndex: 0, importOptions: [], selectedProfile: "", masterPassword: "", importItemStatus: h.List() }, e } return s(t, e), l(t, [{ key: "componentDidMount", value: function() { u.importData.onImportStarted.addListener(this.onImportStarted), u.importData.onImportItemStarted.addListener(this.onImportItemStarted), u.importData.onImportItemEnded.addListener(this.onImportItemEnded), u.importData.onImportItemFailed.addListener(this.onImportItemFailed), u.importData.onImportEnded.addListener(this.onImportEnded) } }, { key: "componentWillUnmount", value: function() { u.importData.onImportStarted.removeListener(this.onImportStarted), u.importData.onImportItemStarted.removeListener(this.onImportItemStarted), u.importData.onImportItemEnded.removeListener(this.onImportItemEnded), u.importData.onImportItemFailed.removeListener(this.onImportItemFailed), u.importData.onImportEnded.removeListener(this.onImportEnded) } }, { key: "componentWillMount", value: function() { var e = this; u.importData.getProfiles(function(t) { e.setState({ profilesArray: t, importOptions: JSON.parse(JSON.stringify(t)) }) }) } }, { key: "shouldComponentUpdate", value: function(e, t) { return m(this, e, t) } }, { key: "handleClick", value: function() { this.state.shown && this.props.onClose(), this.setState({ shown: !this.state.shown }) } }, { key: "getStatusItems", value: function() { return this.state.importItemStatus } }, { key: "onHandleClick", value: function() { this.startImport() } }, { key: "onImportStarted", value: function() { this.setState({ importState: "IMPORT_STARTED" }) } }, { key: "onImportItemStarted", value: function(e) { this.setItemState(e, "IMPORT_STARTED") } }, { key: "onImportItemEnded", value: function(e) { this.setItemState(e, "IMPORT_COMPLETED") } }, { key: "onImportItemFailed", value: function(e, t) { this.setItemState(e, "IMPORT_FAILED", t) } }, { key: "onImportEnded", value: function(e) { this.setState({ importState: 0 === e ? "IMPORT_COMPLETED" : "IMPORT_FAILED" }) } }, { key: "setItemState", value: function(e, t, n) { var i = this.getStatusItems(), a = i.filter(function(t) { return t.itemName === e }).first(), r = { itemName: e, state: t, errorMsg: n }; i = a ? i.map(function(t) { return t.itemName === e ? "IMPORT_FAILED" === t.state ? t : Object.assign({}, r) : t }) : i.push(r), this.setState({ importItemStatus: i }) } }, { key: "startImport", value: function() { var e = this, t = this.state.selectedIndex, n = this.state.profilesArray, i = n[t].history, a = n[t].favorites, r = n[t].passwords, s = n[t].search, o = n[t].notes, l = n[t].speeddial, c = this.state.useDefaultLocation, A = ""; this.refs.userProfile && (A = "" === this.state.selectedProfile ? this.refs.userProfile.value : this.state.selectedProfile); var d = Array(t.toString(), i.toString(), a.toString(), r.toString(), s.toString(), o.toString(), c.toString(), A.toString(), l.toString()); u.importData.startImport(d, this.state.masterPassword, function(t) { "Cancel" === t ? e.setState({ importState: "IDLE" }) : e.setState({ importState: "IMPORT_STARTED" }) }) } }, { key: "handlePasswordChange", value: function(e) { e.target instanceof HTMLInputElement && this.setState({ masterPassword: e.target.value.toString() }) } }, { key: "handleProfileChange", value: function(e) { if (e.target instanceof HTMLSelectElement) { var t = parseInt(e.target.value, 10), n = this.state.importOptions[t], i = n.hasDefaultInstall; this.setState({ selectedIndex: t, useDefaultLocation: i }) } } }, { key: "handleUserProfileChange", value: function(e) { e.target instanceof HTMLSelectElement && this.setState({ selectedProfile: e.target.value }) } }, { key: "_toggleDefault", value: function(e) { this.setState({ useDefaultLocation: !this.state.useDefaultLocation }) } }, { key: "__changeSelection", value: function(e, t) { var n = [].concat(i(this.state.profilesArray)); n[e][t] = !n[e][t], this.setState({ profilesArray: n }) } }, { key: "_getImportButtonText", value: function(e, t) { var n = e.willShowDialogType; return this.state.useDefaultLocation || "none" === n ? d("Start Import") : "file" === n && "Safari" !== t ? d("Choose a File...") : "folder" === n ? d("Choose a Folder...") : "" } }, { key: "_getImportItemStatus", value: function(e) { var t = this.getStatusItems(), n = t.filter(function(t) { return t.itemName === e }).first(); if (n) { if ("IMPORT_FAILED" === n.state) return c.createElement("div", { className: "import-result", __source: { fileName: o, lineNumber: 235 } }, c.createElement("div", { className: "import-failed", title: n.errorMsg, __source: { fileName: o, lineNumber: 236 } }, d("ERROR"))); if ("IMPORT_COMPLETED" === n.state) return c.createElement("div", { className: "import-result", __source: { fileName: o, lineNumber: 243 } }, c.createElement("div", { className: "import-success", __source: { fileName: o, lineNumber: 244 } }, d("OK"))) } return "" } }, { key: "_getImportItemMarkup", value: function(e, t, n, i, a, r) { return c.createElement("div", { className: "setting-single", __source: { fileName: o, lineNumber: 256 } }, c.createElement("div", { className: "import-setting", __source: { fileName: o, lineNumber: 257 } }, c.createElement("input", { id: t, type: "checkbox", checked: a, onChange: this.__changeSelection.bind(this, n, e), disabled: r, __source: { fileName: o, lineNumber: 258 } }), c.createElement("label", { htmlFor: t, __source: { fileName: o, lineNumber: 263 } }, i)), this._getImportItemStatus(e)) } }, { key: "render", value: function() { var e = this.state.profilesArray.map(function(e) { return c.createElement("option", { key: e.index, value: e.index, __source: { fileName: o, lineNumber: 274 } }, e.name) }), t = this.state.selectedIndex, n = this.state.profilesArray[t], i = this.state.importOptions[t]; if (i && i.UserProfiles && i.UserProfiles.length > 0) var a = i.UserProfiles.map(function(e) { return c.createElement("option", { key: e.profileName, value: e.profileName, __source: { fileName: o, lineNumber: 288 } }, e.profileDisplayName) }); if (i) { var r = Boolean(!(i.passwords || i.history || i.notes || i.search || i.speeddial)); return c.createElement(A, { onRequestClose: this.handleClick, __source: { fileName: o, lineNumber: 306 } }, function() { var s = "IMPORT_COMPLETED" === this.state.importState || "IMPORT_FAILED" === this.state.importState, l = "IMPORT_STARTED" === this.state.importState; return c.createElement("div", { className: "import-data", __source: { fileName: o, lineNumber: 334 } }, c.createElement("header", { className: "dialog-header", __source: { fileName: o, lineNumber: 335 } }, c.createElement("h1", { className: "dialog-title", __source: { fileName: o, lineNumber: 336 } }, d("Import Bookmarks and Settings"))), c.createElement("div", { className: "dialog-content", __source: { fileName: o, lineNumber: 339 } }, c.createElement("fieldset", { __source: { fileName: o, lineNumber: 340 } }, c.createElement("label", { htmlFor: "browserSel", className: "from", __source: { fileName: o, lineNumber: 341 } }, d("import", "From")), c.createElement("select", { id: "browserSel", onChange: this.handleProfileChange, value: this.state.selectedIndex, disabled: l || s, autoFocus: !0, __source: { fileName: o, lineNumber: 345 } }, e)), c.createElement("fieldset", { __source: { fileName: o, lineNumber: 353 } }, a && c.createElement("div", { className: "profile", __source: { fileName: o, lineNumber: 355 } }, c.createElement("label", { htmlFor: "userProfile", __source: { fileName: o, lineNumber: 356 } }, d("Chrome User Profile")), c.createElement("select", { ref: "userProfile", id: "userProfile", onChange: this.handleUserProfileChange, disabled: l, value: this.state.selectedProfile, __source: { fileName: o, lineNumber: 357 } }, a)), i && i.favorites && this._getImportItemMarkup("favorites", "f-favorites", t, d("Bookmarks"), !!n && n.favorites, r || l), i.passwords && this._getImportItemMarkup("passwords", "f-passwords", t, d("Passwords"), !!n && n.passwords, l), i.supportsMasterPassword && c.createElement("div", { className: "setting-single import-masterpassword", __source: { fileName: o, lineNumber: 385 } }, c.createElement("label", { htmlFor: "f-masterpassword", __source: { fileName: o, lineNumber: 386 } }, d("Master password, if needed:")), c.createElement("input", { id: "f_masterpassword", type: "password", onChange: this.handlePasswordChange, __source: { fileName: o, lineNumber: 389 } })), i.history && this._getImportItemMarkup("history", "f-history", t, d("History"), !!n && n.history, l), i.notes && this._getImportItemMarkup("notes", "f-notes", t, d("Notes"), !!n && n.notes, l), i.search && this._getImportItemMarkup("search", "f-search", t, d("Search Engines"), !!n && n.search, l), i.speeddial && this._getImportItemMarkup("speeddial", "f-speeddial", t, d("Speed Dial"), !!n && n.speeddial, l), i && i.supportsStandaloneImport && c.createElement("div", { __source: { fileName: o, lineNumber: 430 } }, c.createElement("div", { className: "setting-single", __source: { fileName: o, lineNumber: 431 } }, c.createElement("input", { id: "f-location", type: "checkbox", checked: this.state.useDefaultLocation && i.hasDefaultInstall, onChange: this._toggleDefault.bind(this, i), disabled: i.hasDefaultInstall === !1 || l, __source: { fileName: o, lineNumber: 432 } }), c.createElement("label", { htmlFor: "f-location", __source: { fileName: o, lineNumber: 437 } }, d("Use Default Profile Location"))))), i && i.hasDefaultInstall && i.profilePath.length > 0 && c.createElement("div", { className: "import-pathname", __source: { fileName: o, lineNumber: 447 } }, d("Detected Profile Path:"), c.createElement("br", { __source: { fileName: o, lineNumber: 448 } }), c.createElement("input", { type: "text", value: i.profilePath, readOnly: "true", __source: { fileName: o, lineNumber: 449 } }))), c.createElement("footer", { className: "dialog-footer", __source: { fileName: o, lineNumber: 455 } }, l === !0 && c.createElement("div", { __source: { fileName: o, lineNumber: 457 } }, c.createElement("p", { className: "in-progress", __source: { fileName: o, lineNumber: 458 } }, d("Import in progress...."))), s === !1 && l === !1 && c.createElement("div", { __source: { fileName: o, lineNumber: 462 } }, c.createElement("input", { type: "button", className: "primary", onClick: this.onHandleClick, disabled: l, value: this._getImportButtonText(i), __source: { fileName: o, lineNumber: 463 } }), c.createElement("input", { type: "button", onClick: this.handleClick, disabled: l, value: d("Cancel"), __source: { fileName: o, lineNumber: 468 } })), s === !0 && c.createElement("div", { className: "cardview", __source: { fileName: o, lineNumber: 475 } }, c.createElement("input", { type: "button", className: "primary", onClick: this.handleClick, value: d("Close"), __source: { fileName: o, lineNumber: 476 } })))) }.bind(this)()) } return null } }]), t }(c.Component); e.exports = p }, function(e, t, n) { // ========================= // Function_356 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function a(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function r(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var s = n(27), o = n(44), l = function(e) { function t() { return i(this, t), a(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return r(t, e), t }((0, s.Record)({ title: "", url: "", query: "" })), c = function(e) { function t() { return i(this, t), a(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return r(t, e), t }((0, s.Record)({ text: "", grouping: "date", startTime: o().startOf("day"), endTime: o().endOf("day"), rangePicker: "today", displayMode: "day", parsedFilter: new l, dayPickerVisible: !1, moreInfoVisible: !0, monthEntriesVisible: !0, searchURL: !0, searchTitle: !0 })); e.exports = { HistoryFilter: c, ParsedFilter: l } }, function(e, t, n) { // ========================= // Function_357 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistorySearch.jsx", a = n(1), r = n(2), s = n(44), o = n(614), l = a.createClass({ displayName: "HistorySearch", search: function(e) { var t = this.props.historyFilter.merge(e); this.props.search(t) }, onSearchChange: function(e) { var t = e.target.value.trim(), n = o(t), i = { text: e.target.value, parsedFilter: n }; this.search(i) }, onStartTimeChange: function(e) { var t = s(e.target.value).startOf("day"); t.isValid() && this.search({ startTime: t }) }, onEndTimeChange: function(e) { var t = s(e.target.value).endOf("day"); this.search({ endTime: t }) }, onSelectOption: function() { var e = this.refs.datePicker.value || "today", t = s().startOf("day"), n = s().endOf("day"); if (isNaN(parseInt(e))) { if ("yesterday" === e) t = s().subtract(1, "day").startOf("day"), n = s().subtract(1, "day").endOf("day"); else if ("last_month" === e) t = s().subtract(1, "month").startOf("month"), n = s().subtract(1, "month").endOf("month"); else if ("all" === e) t = this.props.minDate.startOf("day"), n = s().endOf("day"); else if ("date_range" === e) return void this.search({ rangePicker: e }) } else t = s().subtract(parseInt(e), "day").startOf("day"), n = s().endOf("day"); this.search({ startTime: t, endTime: n, rangePicker: e }) }, convertDate: function(e) { return s(e).format("YYYY-MM-DD") }, render: function() { var e = this.props.historyFilter, t = this.convertDate(new Date); return a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 75 } }, a.createElement("input", { type: "search", value: e.text, onChange: this.onSearchChange, placeholder: r("Search..."), __source: { fileName: i, lineNumber: 76 } }), a.createElement("select", { ref: "datePicker", value: this.props.historyFilter.rangePicker, onChange: this.onSelectOption, __source: { fileName: i, lineNumber: 81 } }, a.createElement("option", { value: "today", __source: { fileName: i, lineNumber: 85 } }, r("Today")), a.createElement("option", { value: "yesterday", __source: { fileName: i, lineNumber: 86 } }, r("Yesterday")), a.createElement("option", { value: "7", __source: { fileName: i, lineNumber: 87 } }, r("Last 7 Days")), a.createElement("option", { value: "30", __source: { fileName: i, lineNumber: 88 } }, r("Last 30 Days")), a.createElement("option", { value: "date_range", __source: { fileName: i, lineNumber: 89 } }, r("Date Range...")), a.createElement("option", { value: "all", __source: { fileName: i, lineNumber: 90 } }, r("All History"))), "date_range" === this.props.historyFilter.rangePicker && a.createElement("div", { className: "date-range", __source: { fileName: i, lineNumber: 94 } }, a.createElement("input", { type: "date", title: r("Start Date"), max: t, value: this.convertDate(e.startTime), onChange: this.onStartTimeChange, __source: { fileName: i, lineNumber: 95 } }), a.createElement("input", { type: "date", title: r("End Date"), max: t, value: this.convertDate(e.endTime), onChange: this.onEndTimeChange, __source: { fileName: i, lineNumber: 100 } }))) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_358 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryStoreSubscription.jsx", r = n(1), s = n(245), o = function(e) { return r.createClass({ getInitialState: function() { var e = s.getHistorySearchResults(this.props.page.id); return { historyData: e.data, historyFilter: e.filter, historyStatistics: s.getStatistics(this.props.page.id), oldestHistoryDate: e.oldestHistoryDate } }, componentWillMount: function() { s.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { s.removeChangeListener(this._onStoreChange) }, _onStoreChange: function(e, t) { var n = this.props.page.id; if (t === this.props.page.id || void 0 === t) if ("filterChange" === e) { var i = s.getFilter(n); this.setState({ historyFilter: i }) } else if ("searchResultsReady" === e) { var a = s.getHistorySearchResults(n); this.setState({ historyData: a.data, historyFilter: a.filter, oldestHistoryDate: a.oldestHistoryDate, historyStatistics: s.getStatistics(this.props.page.id) }) } }, render: function() { return r.createElement(e, i({}, this.props, this.state, { __source: { fileName: a, lineNumber: 50 } })) } }) }; e.exports = o }, function(e, t, n) { // ========================= // Function_359 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryTree.jsx", a = n(1), r = n(40), s = n(130), o = n(608), l = n(609), c = n(50), u = n(15), A = n(13), d = n(109), h = n(30), m = n(7), p = m.flatten, f = m.uniq, g = n(21), _ = a.createClass({ displayName: "HistoryTree", mixins: [A], vivaldiSettingsKeys: ["SHOW_VIVALDI_FOOTER"], shouldComponentUpdate: function(e, t) { return g(this, e, t) }, mapObject: function(e, t) { return Object.keys(e).map(function(n) { return t(n, e[n]) }) }, hasChildren: function(e) { return !!e.children && e.children.length > 0 }, isFolder: function(e) { return !!e && !!e.children }, selectById: function(e) { this.refs.treeList.selectById(e) }, getSelectedItems: function() { var e = this.refs.treeList.getAllSelectedItems(!0).map(function(e) { return e.id }); return this.getItemsByIds(e) }, getItemsById: function(e) { var t = function t(n) { for (var i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) return a.children ? a.children : a; if (a.children && (a = t(a.children))) return a } }; return t(this.props.nodes) }, getItemsByIds: function(e) { var t = this, n = p(e.map(function(e) { return t.getItemsById(e) }).filter(function(e) { return void 0 !== e })); return n }, openSelectedInTab: function(e, t) { var n = this.getSelectedItems().map(function(e) { return e.url }); this.openUrlsInTab(n, e, t) }, openUrlsInTab: function(e, t, n) { var i = f(e).map(function(e, t) { return { id: t, url: e } }), a = { bookmarks: i, inCurrent: t, inBackground: n }; r.open(a, !0) }, openSelectedInWindow: function(e, t) { var n = this.getSelectedItems(); u.openWindow(n.map(function(e) { return e.url }), { incognito: t, focused: !e }) }, copy: function(e, t) { var n = this.getItemsByIds(t).map(function(e) { return e.url }); e.clipboardData.setData("text/plain", n.join("\n")), e.clipboardData.setData("text/uri-list", n), e.preventDefault() }, delete: function(e) { var t = this.getItemsByIds(e).map(function(e) { return { url: e.url, at: e.visitTime } }); return s.deleteHistoryPromise(t) }, handleExpandClick: function() { this.refs.treeList.toggleSelectedExpansion() }, expandAll: function() { this.refs.treeList.expandAll() }, collapseAll: function() { this.refs.treeList.collapseAll() }, getContextMenuItems: function() { return [Object.assign({ handler: this.openSelectedInTab.bind(this, !0, !1) }, h("Open")), Object.assign({ handler: this.openSelectedInTab.bind(this, !1, !1) }, h("Open in New Tab")), Object.assign({ handler: this.openSelectedInTab.bind(this, !1, !0) }, h("Open in Background Tab")), { name: "---" }, Object.assign({ handler: this.openSelectedInWindow.bind(this, !1, !1) }, h("Open in New Window")), Object.assign({ handler: this.openSelectedInWindow.bind(this, !0, !1) }, h("Open in Background Window")), Object.assign({ handler: this.openSelectedInWindow.bind(this, !1, !0) }, h("Open in Private Window"))] }, getRootContextMenuItems: function() { return [Object.assign({ handler: this.collapseAll }, h("Collapse All Folders")), Object.assign({ handler: this.expandAll }, h("Expand All Folders")), { name: "---" }, Object.assign({ handler: c.fullScreen, visible: this.props.inManager }, h("Fullscreen"))] }, getContextMenuItemProps: function(e) { return { showEdit: !1, showRename: !1, showNewItem: !1, showNewFolder: !1, showCut: !1, showCopy: !0, showPaste: !1, showDelete: !0, showExpandCollapse: !0, showFullscreen: this.props.inManager } }, getContextMenuCopyString: function() { return h("Copy Link Address") }, onItemMouseDown: function(e, t) { 1 === t.button && (t.preventDefault(), t.stopPropagation()) }, onItemMouseUp: function(e, t) { 1 === t.button && (this.openSelectedInTab(!1, !1), t.preventDefault(), t.stopPropagation()) }, onItemDoubleClick: function(e) { if (1 !== e.button) { var t = r.getOpenOptionsFromEvent(e); t.inNewWindow === !0 ? this.openSelectedInWindow(!1, !1) : this.openSelectedInTab(t.inCurrent, t.inBackground) } }, onItemsActivated: function(e, t) { var n = this.getItemsByIds(t.map(function(e) { return e.id })).map(function(e) { return e.url }); this.openUrlsInTab(n, !0, !1) }, isValidForClipboard: function() { return !0 }, validateForDeletion: function(e) { return e }, renderItemContent: function(e) { var t = e.node, n = []; return this.isFolder(t) ? n.push(a.createElement(o, { key: "0", historyItem: t, toggle: this.handleExpandClick, expandAll: this.expandAll, collapseAll: this.collapseAll, grouping: this.props.grouping, fullView: this.props.fullView, __source: { fileName: i, lineNumber: 239 } })) : n.push(a.createElement(l, { key: "1", historyItem: t, showFooter: this.state.SHOW_VIVALDI_FOOTER, grouping: this.props.grouping, fullView: this.props.fullView, __source: { fileName: i, lineNumber: 250 } })), n }, render: function() { return a.createElement(d, { settings: this.props.inManager ? "HISTORY_MANAGER" : "HISTORY_PANEL", ref: "treeList", nodes: this.props.nodes, hasChildren: this.hasChildren, isFolder: this.isFolder, renderItemContent: this.renderItemContent, onItemDoubleClick: this.onItemDoubleClick, onItemMouseDown: this.onItemMouseDown, onItemMouseUp: this.onItemMouseUp, onItemsActivated: this.onItemsActivated, onCopyToClipboard: this.copy, onSelect: this.onSelect, getContextMenuItems: this.getContextMenuItems, getContextMenuItemProps: this.getContextMenuItemProps, getContextMenuCopyString: this.getContextMenuCopyString, delete: this.delete, enableDragAndDrop: !1, sorting: this.props.sorting, isValidForClipboard: this.isValidForClipboard, validateForDeletion: this.validateForDeletion, textOnlyClipboard: !0, allFoldersExpandedOnLoad: !0, __source: { fileName: i, lineNumber: 263 } }) } }); e.exports = _ }, function(e, t) { // ========================= // Function_360 // ========================= "use strict"; function n(e) { return e.indexOf(",") > -1 && (e = '"' + e + '"'), e } function i(e, t) { var i = ""; return i += e && "" !== e ? "" === t ? n(e) : n(e) + " <" + t + ">" : t } var a = function(e) { return e && (e.MAIL_EMAIL || e.MAIL_NAME) ? i(e.MAIL_NAME, e.MAIL_EMAIL) : e && (e.name || e.address) ? i(e.name, e.address) : e ? e : "" }, r = function(e) { var t = ""; if (e) for (var n = 0; n < e.length; n++) t && (t += ", "), t += a(e[n]); return t }, s = function(e) { return e instanceof Array ? r(e) : a(e) }; e.exports = s }, function(e, t, n) { // ========================= // Function_361 // ========================= "use strict"; var i = n(239), a = n(240), r = a.getAttachments, s = n(181), o = n(135), l = o.isUnread, c = o.areFlagsMatching, u = n(398), A = u.padLeftZeros, d = n(135), h = n(364), m = n(42), p = m.ALL_MESSAGES_ACCOUNT_ID, f = m.DRAFTS_FOLDER_PATH, g = m.BUFFER_OPERATION_MARKUNREAD, _ = m.BUFFER_OPERATION_MARKFLAGGED, v = m.BUFFER_OPERATION_MARKFORWARDED, b = m.BUFFER_OPERATION_MARKREPLIED, N = m.THREAD_KEY_LENGTH, E = [g, _], S = { add: function(e, t, n) { var a = arguments.length > 3 && void 0 !== arguments[3] && arguments[3], o = a ? [i.messages, i.tokens] : [i.messages, i.searchList, i.tokens]; return i.transaction("rw", o, function() { return s.Promise.all(n.map(function(n) { var s = { accountId: e, path: t, uid: n.uid, sentDate: n.sentDate }, o = void 0; o = "undefined" == typeof window ? n.tokens : h.getMessageTokens({ from: n.from, to: n.to, cc: n.cc, replyTo: n.replyTo, subject: n.subject, bodyParts: n.bodyParts }), o && i.tokens.put(Object.assign({}, s, { tokens: o })); var c = Object.assign({}, s, { from: n.from, subject: n.subject, listId: n.listId, flags: n.flags || [], forwarded: n.forwarded, replied: n.replied }), u = e === p && t === f ? { bodyParts: n.bodyParts, inReplyTo: n.inReplyTo, references: n.references || [] } : { raw: n.raw }; if (i.messages.put(Object.assign({}, c, { to: n.to, cc: n.cc, replyTo: n.replyTo }, u)), !a) { var d = Object.assign({}, c, { attachment: r(n.bodyParts).length > 0, unseen: l(n), messageId: n.messageId, inReplyTo: n.inReplyTo, references: n.references || [], threadKey: A(n.sentDate, N) }, n.queued ? { queued: n.queued } : {}); return i.searchList.put(d), d } })) }) }, remove: function(e, t, n) { return i.transaction("rw", [i.messages, i.tokens, i.searchList, i.buffer], function() { return s.Promise.all(n.map(function(n) { i.messages.delete([e, t, n]), i.tokens.delete([e, t, n]), i.searchList.delete([e, t, n]), i.buffer.delete([e, t, n]) })) }) }, removeAllDataForAccount: function(e) { var t = [e, "", 0], n = [e, "￿", Number.MAX_VALUE], a = ["messages", "tokens", "searchList"]; return i.transaction("rw", a.map(function(e) { return i[e] }), function() { return a.forEach(function(e) { return i[e].where("[accountId+path+uid]").between(t, n).delete() }) }) }, get: function(e, t, n) { return i.messages.get([e, t, n]) }, getTokens: function(e, t) { return i.tokens.where("tokens").startsWith(e).until(t).distinct().toArray() }, update: function(e, t, n) { var a = {}, r = [], s = [], o = !0, u = !1, A = void 0; try { for (var d, h = n[Symbol.iterator](); !(o = (d = h.next()).done); o = !0) { var m = d.value; s.push([e, t, m.uid]), a[m.uid] = m } } catch (e) { u = !0, A = e } finally { try { !o && h.return && h.return() } finally { if (u) throw A } } return i.transaction("rw", [i.searchList, i.messages], function() { i.searchList.where("[accountId+path+uid]").anyOf(s).modify(function(e) { var t = a[e.uid]; if (!c(e.flags, t.flags)) { var n = l(t), i = l(e), s = 0; n !== i && (s = n ? 1 : -1); var o = s === -1 ? -e.unseen : 0; e.flags = t.flags, e.unseen = !1; var u = { sentDate: e.sentDate, uid: e.uid, threadKey: e.threadKey, flags: e.flags, dUnread: s, dUnseen: o }; r.push(u) } }), i.messages.where("[accountId+path+uid]").anyOf(s).modify(function(e) { var t = a[e.uid]; c(e.flags, t.flags) || (e.flags = t.flags) }) }).then(function() { return r }) }, markSeen: function(e) { return i.searchList.update([e.accountId, e.path, e.uid], { unseen: !1 }) }, markTrusted: function(e) { return i.messages.update([e.accountId, e.path, e.uid], { trusted: !0 }) }, getSearchList: function() { return i.searchList.orderBy("[sentDate+accountId+path+uid]").toArray() }, getAllSearchListKeys: function() { return i.searchList.toCollection().primaryKeys() }, getSearchListThreaded: function() { return i.searchList.orderBy("[threadKey+accountId+path+uid]").toArray() }, addToBuffer: function(e, t, n, a, r) { return i.transaction("rw", [i.buffer], function() { i.buffer.where("[accountId+path+uid+operation]").anyOf(n.map(function(n) { return [e, t, n, a] })).each(function(s) { s.params === r ? n.splice(n.indexOf(s.uid), 1) : E.includes(a) && (n.splice(n.indexOf(s.uid), 1), i.buffer.where("[accountId+path+uid+operation]").equals([e, t, s.uid, a]).delete()) }).then(function() { var s = n.map(function(n) { return { accountId: e, path: t, uid: n, operation: a, params: r } }); i.buffer.bulkAdd(s) }) }) }, getBufferByAccount: function(e) { return i.buffer.where("accountId").equals(e).toArray() }, checkBuffer: function(e, t, n) { return i.transaction("rw", i.buffer, function() { var a = 0; return i.buffer.where("[accountId+path+uid]").anyOf(n.map(function(n) { return [e, t, n.uid] })).filter(function(e) { for (; n[a] && n[a].uid !== e.uid;) a++; var t = n[a]; if (t || console.error("Should never happen as messageUpdates and\n bufferedOperations have the same order"), e.operation === g) { if (d.isUnread(t) === e.params) return !0; t.flags = d.updateFlags(t.flags, { unread: e.params }) } else if (e.operation === _) { if (d.isFlagged(t) === e.params) return !0; t.flags = d.updateFlags(t.flags, { flagged: e.params }) } else if (e.operation === v) { if (d.isForwarded(t) === e.params) return !0; t.flags = d.updateFlags(t.flags, { forwarded: e.params }) } else if (e.operation === b) { if (d.isReplied(t) === e.params) return !0; t.flags = d.updateFlags(t.flags, { replied: e.params }) } return !1 }).delete() }) }, bulkRemoveFromBuffer: function(e) { return i.buffer.bulkDelete(e) }, removeListFromBuffer: function(e, t, n, a) { return i.buffer.where("[accountId+path+uid+operation]").anyOf(n.map(function(n) { return [e, t, n, a] })).delete() }, findReferencesTo: function(e) { return e && e.messageId ? i.searchList.where("references").equals(e.messageId).or("inReplyTo").equals(e.messageId).toArray() : Promise.resolve([]) }, getByMessageId: function(e, t) { return i.searchList.where("[accountId+messageId]").equals([e, t]).toArray() }, findMyReferences: function(e) { if (e && (e.references.length || e.inReplyTo)) { var t = e.references.length ? e.references.map(function(t) { return [e.accountId, t] }) : []; return e.inReplyTo && t.push([e.accountId, e.inReplyTo]), i.searchList.where("[accountId+messageId]").anyOf(t).toArray() } return Promise.resolve([]) }, updateSearchListEntries: function(e) { return i.transaction("rw", i.searchList, function() { return i.searchList.bulkPut(e) }) }, getSearchListEntries: function(e, t, n) { return i.searchList.where("[accountId+path+uid]").between([e, t, n], [e, t, Number.MAX_VALUE]).toArray() }, messageCount: function(e, t) { return i.messages.where("[accountId+path+uid]").between([e, t, 0], [e, t, Number.MAX_VALUE]).count() }, tokenCount: function(e, t) { return i.tokens.where("[accountId+path+uid]").between([e, t, 0], [e, t, Number.MAX_VALUE]).count() }, getSearchListEntry: function(e, t, n) { return i.searchList.get([e, t, n]) } }; e.exports = S }, function(e, t, n) { // ========================= // Function_362 // ========================= "use strict"; var i = n(66), a = n(66), r = n(402), s = n(4), o = n(547), l = n(3); o.logLevel = 2; var c = "https://accounts.google.com/o/oauth2/auth?client_id=796499425440-0lp5at5t0cudv5db0q8bfj9nctnqv2i3.apps.googleusercontent.com&response_type=token&scope=https://mail.google.com/&redirect_uri=https://mpognobbkildjkofajifpdfhcoklimli.chromiumapp.org/", u = {}, A = function(e) { return u[e.MAIL_EMAIL] ? { user: e.MAIL_EMAIL, xoauth2: u[e.MAIL_EMAIL] } : r(s.identity.launchWebAuthFlow)({ url: c, interactive: !0 }).then(function(t) { var n = t.substr(t.indexOf("#") + 1); return n.split("&").forEach(function(t) { if (t.startsWith("access_token=")) u[e.MAIL_EMAIL] = t.substr(13); else if (t.startsWith("expires_in=") && u[e.MAIL_EMAIL]) { var n = 1e3 * parseInt(t.substr(11)); n > 0 && setTimeout(function() { return u[e.MAIL_EMAIL] = void 0 }, n) } }), u[e.MAIL_EMAIL] ? { user: e.MAIL_EMAIL, xoauth2: u[e.MAIL_EMAIL] } : Promise.reject("OAuth2 endpoint didn't provide access token") }) }, d = function(e) { return o.logLevel = l.getSync("MAIL_IMAP_LOGS_ON") ? 0 : 2, Promise.resolve().then(function() { return e.MAIL_EMAIL.endsWith("@gmail.com") ? A(e) : { user: e.MAIL_IMAP_USER, pass: e.MAIL_IMAP_PASSWORD } }).then(function(t) { var n = new i({ host: e.MAIL_IMAP_SERVER, port: e.MAIL_IMAP_PORT, auth: t, secure: !0, ignoreTLS: !1 }); return n._client.logLevel = n._client.LOG_LEVEL_WARN, n._client.TIMEOUT_CONNECTION = 3e3, n }) }, h = function(e) { return Promise.resolve().then(function() { return e.MAIL_EMAIL.endsWith("@gmail.com") ? A(e) : { user: e.MAIL_SMTP_USER, pass: e.MAIL_SMTP_PASSWORD } }).then(function(t) { var n = new a(e.MAIL_SMTP_SERVER, e.MAIL_SMTP_PORT, { auth: t, useSecureTransport: 587 !== e.MAIL_SMTP_PORT, ignoreTLS: !1, requireTLS: !0 }); return n.logLevel = n.LOG_LEVEL_WARN, n }) }; e.exports = { getIMAPClient: d, getSMTPClient: h } }, function(e, t, n) { // ========================= // Function_363 // ========================= "use strict"; var i = n(42), a = i.ALL_MESSAGES_ACCOUNT_ID, r = i.TRASH_FOLDER_PATH, s = i.TRASH_FOLDER_TYPE, o = i.SENT_FOLDER_PATH, l = i.SENT_FOLDER_TYPE, c = i.DRAFTS_FOLDER_PATH, u = i.OUTBOX_FOLDER_PATH, A = i.RECEIVED_FOLDER_PATH, d = i.UNREAD_FOLDER_PATH, h = [{ accountId: a, path: A, filterValue: { excludeFolderTypes: [l], filterOnDrafts: !1, filterOnOutbox: !1 } }, { accountId: a, path: d, filterValue: { showRead: !1 } }, { accountId: a, path: o, filterValue: { includeFolderTypes: [l] } }, { accountId: a, path: r, filterValue: { includeFolderTypes: [s] } }, { accountId: a, path: c, filterValue: { filterOnDrafts: !0 } }, { accountId: a, path: u, filterValue: { filterOnOutbox: !0 } }], m = [d, A, o, c, u, r], p = ["name", "path", "query", "from", "subject", "listId"]; e.exports = { defaultFilters: h, allMessagesOrder: m, search_keywords: p } }, function(e, t, n) { // ========================= // Function_364 // ========================= "use strict"; function i(e, t, n) { for (var i = void 0; null !== (i = t.exec(e));) for (var a = 0; a < i.length; a++) { var r = i[a].toLowerCase(), o = s(n, r, h); o < 0 && (0 <= -o - 2 && 0 === r.indexOf(n[-o - 2]) ? n.splice(-o - 2, 1, r) : (n.length <= -o - 1 || 0 !== n[-o - 1].indexOf(r)) && n.splice(-o - 1, 0, r)) } } function a(e) { var t = []; return i(e, u, t), i(e, A, t), i(e, d, t), t } function r(e) { var t = (e.from || []).concat(e.to || [], e.cc || [], e.replyTo || []), n = t.map(function(e) { return e.name }).concat(t.map(function(e) { return e.address })), i = o(!1, e.bodyParts), r = ""; i && i.content && (r = "html" === i.type ? c(i.content) : i ? i.content : ""); var s = n.concat([e.subject, r]).join(" "); return a(s) } var s = n(407), o = n(627), l = n(773), c = l.htmlToText, u = /\d+\.\d+/g, A = /[^\s]+@([^\s]+\.[^\s.]+)/g, d = /[^\s!¡?¿.:,;"+]{2,}/g, h = function(e, t) { return e.localeCompare(t) }; e.exports.getMessageTokens = r, e.exports.getTokens = a }, function(e, t) { // ========================= // Function_365 // ========================= "use strict"; var n = "a[href], area[href], input:not([disabled]), select:not([disabled]), option:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]", i = function(e) { if (!e.srcElement.matches(n)) { for (var t = e.target; t !== document.body;) { if (t.draggable) { var i = document.activeElement, a = function e(t) { this.removeEventListener("mouseup", e), this.removeEventListener("dragend", e), document.activeElement === document.body && i.focus() }; return t.addEventListener("mouseup", a), void t.addEventListener("dragend", a) } t = t.parentElement } e.preventDefault() } }, a = { componentDidMount: function() { document.body.addEventListener("mousedown", i) }, componentWillUnmount: function() { document.body.removeEventListener("mousedown", i) } }; e.exports = a }, function(e, t, n) { // ========================= // Function_366 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/cookies/cookieManager.jsx", a = n(1), r = n(9), s = n(4), o = n(657), l = n(2), c = n(34), u = n(12), A = a.createClass({ displayName: "CookieManager", mixins: [r], getInitialState: function() { return { cookieData: {}, cookieFilter: "", confirmation: !1, showCookies: !1 } }, componentWillMount: function() { this.getAllCookies() }, getAllCookies: function() { var e = this; s.cookies.getAll({}, function(t) { e.setState({ cookieData: t.reduce(function(e, t) { var n = e[t.domain] || []; return n.push(t), e[t.domain] = n, e }, {}) }) }) }, deleteFilteredCookies: function() { var e = this; s.cookies.getAll({}, function(t) { for (var n = 0; n < t.length; n++) t[n].domain.indexOf(e.state.cookieFilter) !== -1 && s.cookies.remove({ url: e.getCookieUrl(t[n]), name: t[n].name }); e.getAllCookies() }) }, deleteAllCookies: function() { var e = this, t = 0; s.cookies.getAll({}, function(i) { t = i.length; for (var a = 0; a < i.length; a++) s.cookies.remove({ url: e.getCookieUrl(i[a]), name: i[a].name }, n) }); var n = function(n) { t--, 0 === t && e.setState({ cookieData: [], confirmation: !1, showCookies: !1 }) } }, getCookieUrl: function(e) { return "http" + (e.secure ? "s" : "") + "://" + e.domain + e.path }, deleteCookie: function(e) { this.getAllCookies() }, onSettingsFilter: function(e) { this.setState({ cookieFilter: e.target.value }) }, onAskToDelete: function() { this.setState({ confirmation: !0 }) }, onCancel: function() { this.setState({ confirmation: !1 }), this.props.onClose() }, keyDownModal: function(e) { 27 === e.keyCode && this.onCancel() }, renderModal: function() { return a.createElement(c, { dialogWidth: 400, __source: { fileName: i, lineNumber: 110 } }, a.createElement("div", { className: "dialog-delete-cookies", onKeyDown: this.keyDownModal, __source: { fileName: i, lineNumber: 111 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 112 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 113 } }, l("Delete All Cookies?"))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 117 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 118 } }, l("All cookies will be removed."))), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 122 } }, a.createElement("input", { type: "button", className: "primary", onClick: this.deleteAllCookies, value: l("other", "Delete"), autoFocus: !0, __source: { fileName: i, lineNumber: 123 } }), a.createElement("input", { type: "button", onClick: this.onCancel, value: l("Cancel"), __source: { fileName: i, lineNumber: 128 } })))) }, showCookieList: function() { this.setState({ showCookies: !this.state.showCookies }) }, render: function() { var e = this; if (!this.state.cookieData) return a.createElement("div", { className: "saved-passwords", __source: { fileName: i, lineNumber: 146 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 147 } }, l("No cookies found."))); var t = Object.keys(this.state.cookieData).length, n = Object.keys(this.state.cookieData).reduce(function(t, n) { return t + e.state.cookieData[n].length }, 0), r = a.createElement("div", { __source: { fileName: i, lineNumber: 157 } }, this.state.confirmation && this.renderModal(), a.createElement("div", { className: "setting-group setting-cookies unlimited", __source: { fileName: i, lineNumber: 160 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 161 } }, l("Saved Cookies")), a.createElement("p", { __source: { fileName: i, lineNumber: 163 } }, l("Vivaldi currently stores $1 from $2.", [l("$1 cookie entry", "$1 cookie entries", [n]), l("$1 domain", "$1 domains", [t])])), this.state.showCookies && a.createElement("div", { __source: { fileName: i, lineNumber: 174 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 175 } }, a.createElement("input", { type: "search", placeholder: l("Filter by domain"), value: this.state.cookieFilter, onChange: this.onSettingsFilter, __source: { fileName: i, lineNumber: 176 } })), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 182 } }, a.createElement("ul", { __source: { fileName: i, lineNumber: 183 } }, Object.keys(this.state.cookieData).filter(function(t) { return t.indexOf(e.state.cookieFilter) !== -1 }).map(function(t) { return a.createElement(o, { key: "domain-" + t, domain: t, count: e.state.cookieData[t].length, item: e.state.cookieData[t], onCookieDelete: e.deleteCookie, __source: { fileName: i, lineNumber: 187 } }) }), 0 === Object.keys(this.state.cookieData).filter(function(t) { return t.indexOf(e.state.cookieFilter) !== -1 }).length && this.state.cookieFilter && a.createElement("li", { style: { margin: "6px" }, __source: { fileName: i, lineNumber: 198 } }, l("Query “$1” matches no result.", [this.state.cookieFilter]))))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 207 } }, a.createElement("input", { type: "button", value: l(this.state.showCookies ? "Hide Saved Cookies" : "Display Saved Cookies"), disabled: 0 === n, onClick: this.showCookieList, __source: { fileName: i, lineNumber: 208 } }), a.createElement("input", { type: "button", className: "danger", onClick: this.onAskToDelete, disabled: 0 === n, value: l("Delete All Cookies"), __source: { fileName: i, lineNumber: 214 } }), this.state.cookieFilter && a.createElement("input", { type: "button", onClick: this.deleteFilteredCookies, value: l("Delete Filtered Cookies"), __source: { fileName: i, lineNumber: 221 } })))); return u(r, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_367 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/keyboardShortcuts/KeyboardShortcutEditSetting.jsx", r = n(1), s = n(11), o = n(3), l = n(13), c = n(137), u = n(37), A = n(5), d = n(2), h = r.createClass({ displayName: "ShortCutEditSetting", mixins: [l], vivaldiSettingsKeys: ["DISABLE_SINGLE_KEY_SHORTCUTS", "DISABLE_KEYBOARD_SHORTCUTS"], getInitialState: function() { return { keyValue: this.props.command.shortcut, selectedCombo: "", active: !1, focused: !1, duplicateCombo: "", singleKeyWarning: !1 } }, restoreDefault: function(e) { var t = o.getDefault(this.props.command.name); this.setState({ keyValue: t.shortcut || null }, this.save) }, clearCombo: function(e) { this.setState({ keyValue: null }, this.save) }, handleKeyEvent: function(e) { var t = ["shift+tab", "tab", "space", "enter", "esc", "left", "right", "up", "down", "pageup", "pagedown", "numlock", "home", "end", "insert", "delete"], n = u.keyComboFromEvent(e.nativeEvent); if ("PageUp" !== e.nativeEvent.key && "PageDown" !== e.nativeEvent.key || !e.nativeEvent.ctrlKey || e.preventDefault(), n && "backspace" === n) { e.stopPropagation(); var i = this.state.keyValue.slice(0, this.state.keyValue.length - 1); this.setState({ keyValue: i, duplicateCombo: "", singleKeyWarning: !1 }, this.save), this.refs.comboInput.focus() } else if (this.state.DISABLE_SINGLE_KEY_SHORTCUTS && n && u.isSingleKeyShortcut(n)) this.setState({ duplicateCombo: "", singleKeyWarning: !0 }); else if (n && this.props.existingCombos.indexOf(n) !== -1) this.setState({ duplicateCombo: c(n), singleKeyWarning: !1 }); else if (n && t.indexOf(n) === -1) { var a = this.state.keyValue || []; this.setState({ keyValue: a.slice().concat(n), duplicateCombo: "", singleKeyWarning: !1 }, this.save) } else this.navigateWithArrowKeys(e) }, navigateWithArrowKeys: function(e) { if (this.state.keyValue) { var t = u.keyComboFromEvent(e.nativeEvent), n = document.activeElement; "left" === t ? (e.preventDefault(), e.stopPropagation(), n.previousElementSibling && n.previousElementSibling.focus()) : "right" === t ? (e.preventDefault(), e.stopPropagation(), n.nextElementSibling && n.nextElementSibling.focus()) : "up" === t ? (e.preventDefault(), e.stopPropagation(), n.parentNode.firstChild.focus()) : "down" === t && (e.preventDefault(), e.stopPropagation(), n.parentNode.lastChild.focus()) } }, save: function() { var e = { name: this.props.command.name, shortcut: this.state.keyValue, gestures: this.props.command.gestures, showInQC: this.props.command.showInQC }; o.set(i({}, this.props.command.name, e)) }, keyUpListener: function(e) { if (e.stopPropagation(), e.preventDefault(), 8 === e.keyCode || 46 === e.keyCode) { var t = this.state.keyValue, n = t.indexOf(e.target.dataset.raw); t.splice(n, 1), s.findDOMNode(e.target.parentNode).querySelector("input").focus(), this.setState({ keyValue: t }, this.save) } }, onTextFocus: function(e) { this.setState({ active: !0, focused: !0 }) }, onTextBlur: function(e) { e.preventDefault(), e.stopPropagation(), this.setState({ active: !1, focused: !1, duplicateCombo: "", singleKeyWarning: !1 }), this.save() }, onButtonFocus: function(e) { this.setState({ active: !0 }) }, onButtonBlur: function(e) { e.preventDefault(), e.stopPropagation(), this.setState({ active: !1, duplicateCombo: "", singleKeyWarning: !1 }), this.save() }, onComboFocus: function(e) { this.setState({ selectedCombo: e.target.dataset.raw, focused: !0, active: !0 }), document.addEventListener("keyup", this.keyUpListener) }, onComboBlur: function(e) { this.setState({ selectedCombo: "", focused: !1, active: !1 }), document.removeEventListener("keyup", this.keyUpListener) }, renderCombos: function() { var e = this; if (this.props.command.shortcut) return this.props.command.shortcut.map(function(t, n) { return [r.createElement("button", { key: n, className: "multiinput-item\n " + (u.isSingleKeyShortcut(t) ? "single" : ""), "data-raw": t, onFocus: e.onComboFocus, onBlur: e.onComboBlur, onKeyDown: e.navigateWithArrowKeys, __source: { fileName: a, lineNumber: 214 } }, c(t))] }) }, render: function() { return r.createElement("div", { className: A({ controls: !0, active: this.state.active, focused: this.state.focused }), __source: { fileName: a, lineNumber: 232 } }, r.createElement("div", { className: "multiinput", __source: { fileName: a, lineNumber: 236 } }, this.renderCombos(), r.createElement("div", { className: "multiinput-group", __source: { fileName: a, lineNumber: 238 } }, r.createElement("input", { type: "text", ref: "comboInput", id: this.props.id, value: "", className: "keyShortcutStop", onChange: this.onChange, onKeyPress: this.handleKeyEvent, onKeyDown: this.handleKeyEvent, onFocus: this.onTextFocus, onBlur: this.onTextBlur, __source: { fileName: a, lineNumber: 239 } }))), r.createElement("input", { type: "button", className: "circular restorekey", title: d("Restore default shortcut"), onClick: this.restoreDefault, onFocus: this.onButtonFocus, onBlur: this.onButtonBlur, __source: { fileName: a, lineNumber: 251 } }), r.createElement("input", { type: "button", className: "circular clearkey", title: d("Clear shortcut"), onClick: this.clearCombo, onFocus: this.onButtonFocus, onBlur: this.onButtonBlur, __source: { fileName: a, lineNumber: 257 } }), this.state.duplicateCombo && r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 264 } }, d("Shortcut $1 is already assigned", [this.state.duplicateCombo.toUpperCase()])), this.state.singleKeyWarning && r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 270 } }, d("Single Key Shortcuts are currently disabled"))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_368 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/keyboardShortcuts/shortcutKeys.jsx", r = n(1), s = n(367), o = n(13), l = n(94), c = n(52), u = n(137), A = n(34), d = n(12), h = n(656), m = n(665), p = n(664), f = n(2), g = "CATEGORY_COMMAND_APPLICATION", _ = r.createClass({ displayName: "ShortcutKeys", mixins: [o], vivaldiSettingsKeys: ["DISABLE_KEYBOARD_SHORTCUTS", "DISABLE_SINGLE_KEY_SHORTCUTS"], getInitialState: function() { return { commandArray: c.getAllCommands(), openCategories: [g], confirmation: !1 } }, _onStoreChange: function() { this.setState({ commandArray: c.getAllCommands() }) }, componentWillMount: function() { c.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { c.removeChangeListener(this._onStoreChange) }, switchCategory: function(e) { var t = this.state.openCategories; t.indexOf(e) > -1 ? t.splice(t.indexOf(e), 1) : t.push(e), this.setState({ openCategories: t }) }, confirmRestoreKeys: function() { this.setState({ confirmation: !0 }) }, restoreKeys: function() { l.restoreCommandShortcutKeys(), this.setState({ confirmation: !1 }) }, onCancel: function() { this.setState({ confirmation: !1 }) }, keyDownModal: function(e) { "Escape" === e.nativeEvent.code && this.onCancel() }, renderModal: function() { return r.createElement(A, { dialogWidth: 400, __source: { fileName: a, lineNumber: 87 } }, r.createElement("div", { className: "dialog-restore-shortcuts", __source: { fileName: a, lineNumber: 88 } }, r.createElement("header", { className: "dialog-header", __source: { fileName: a, lineNumber: 89 } }, r.createElement("h1", { className: "dialog-title", __source: { fileName: a, lineNumber: 90 } }, f("Restore Keyboard Shortcuts?"))), r.createElement("div", { className: "dialog-content", onKeyDown: this.keyDownModal, __source: { fileName: a, lineNumber: 94 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 95 } }, f("All keyboard shortcuts will be restored to default setting."))), r.createElement("footer", { className: "dialog-footer", onKeyDown: this.keyDownModal, __source: { fileName: a, lineNumber: 99 } }, r.createElement("input", { type: "button", className: "danger", onClick: this.restoreKeys, value: f("Restore"), __source: { fileName: a, lineNumber: 100 } }), r.createElement("input", { type: "button", onClick: this.onCancel, value: f("Cancel"), autoFocus: !0, __source: { fileName: a, lineNumber: 105 } })))) }, renderCategories: function(e) { var t = e.reduce(function(e, t) { return e[t.category] = (e[t.category] || []).concat(t), e }, {}), n = Object.keys(t).map(function(e, n) { return this.renderCategory(e, t[e]) }.bind(this)); return r.createElement("div", { __source: { fileName: a, lineNumber: 128 } }, n) }, renderCategory: function(e, t) { var n = this, i = h(e), s = this.props.filter || this.state.openCategories.indexOf(e) > -1 ? "show" : "hide"; return r.createElement("div", { className: "category " + s, key: e, __source: { fileName: a, lineNumber: 137 } }, r.createElement("button", { onClick: this.switchCategory.bind(this, e), __source: { fileName: a, lineNumber: 138 } }, i), r.createElement("div", { className: "list", __source: { fileName: a, lineNumber: 141 } }, t.map(function(e) { return n.renderCommandKeys(e) }))) }, renderCommandKeys: function(e) { var t = this.state.commandArray.map(function(e) { return e.shortcut }).filter(Boolean).reduce(function(e, t) { return e.concat(t) }); if ("mac" === this.props.platform && "COMMAND_TOGGLE_MENU_POSITION" === e.name) return null; if ("read-only" === this.props.view) return r.createElement("div", { className: "keycombo", __source: { fileName: a, lineNumber: 163 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 164 } }, e.label), e.shortcut && e.shortcut.map(function(e, t) { return [r.createElement("input", { key: t, type: "button", disabled: !0, className: e.length > 1 ? "item" : "item single", value: u(e), __source: { fileName: a, lineNumber: 166 } })] })); var n = e.name.toLowerCase(); return r.createElement("div", { className: "keycombo", key: n, __source: { fileName: a, lineNumber: 179 } }, r.createElement("label", { htmlFor: "combo-" + n, __source: { fileName: a, lineNumber: 180 } }, e.label), r.createElement(s, { id: "combo-" + n, onSelect: this.onChange, onExecute: this.onChange, key: n, onSave: this.saveKey, existingCombos: t, command: e, __source: { fileName: a, lineNumber: 183 } })) }, renderList: function() { var e = this, t = void 0; t = "read-only" === this.props.view ? this.state.commandArray.filter(function(e) { return Boolean(e.shortcut && e.shortcut.length > 0) }) : this.state.commandArray.filter(function(e) { return !Boolean(e.notEditable) }); var n = this.renderCategories([]); return d(n, this.props.filter) ? this.renderCategories(t) : (t = t.filter(function(t) { return t.label.toLowerCase().indexOf(e.props.filter.toLowerCase()) > -1 || (t.shortcut || []).some(function(t) { return t.toLowerCase().indexOf(e.props.filter.toLowerCase()) > -1 }) }), t.length > 0 ? this.renderCategories(t) : null) }, render: function() { var e = Boolean(this.renderList()); return "read-only" === this.props.view ? this.renderList() : e ? r.createElement("div", { className: this.state.DISABLE_SINGLE_KEY_SHORTCUTS ? "setting-group unlimited singlekeydisabled" : "setting-group unlimited", __source: { fileName: a, lineNumber: 241 } }, this.state.confirmation && this.renderModal(), r.createElement("h2", { __source: { fileName: a, lineNumber: 247 } }, f("Keyboard")), r.createElement(p, i({}, this.props, { __source: { fileName: a, lineNumber: 249 } })), r.createElement("div", { __source: { fileName: a, lineNumber: 251 } }, r.createElement(m, i({}, this.props, { __source: { fileName: a, lineNumber: 252 } }))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 255 } }, r.createElement("div", { className: "keystrokes", __source: { fileName: a, lineNumber: 256 } }, this.renderList()), !this.props.filter && r.createElement("input", { type: "button", onClick: this.confirmRestoreKeys, value: f("Restore Default Keys"), __source: { fileName: a, lineNumber: 261 } }))) : null } }); e.exports = _ }, function(e, t, n) { // ========================= // Function_369 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/search/createSearchEngine.jsx", r = n(1), s = i(r), o = n(3), l = i(o), c = n(13), u = i(c), A = n(2), d = i(A), h = n(46), m = 13, p = s.default.createClass({ displayName: "CreateSearchEngine", mixins: [u.default], vivaldiSettingsKeys: ["SEARCH_ENGINES", "DEFAULT_SEARCH_ENGINE"], getInitialState: function() { return { name: this.props.name, url: this.props.url ? this.props.url.replace("{searchTerms}", "%s") : "", nicknameTaken: !1, faviconUrl: "", default: !1 } }, componentWillMount: function() { this.getFavicon(this.props.url) }, newSearchKeyDown: function(e) { e.which === m && this.create() }, getDataUri: function(e, t) { var n = new Image; n.onload = function() { var n = document.createElement("canvas"); n.width = this.naturalWidth, n.height = this.naturalHeight, n.getContext("2d").drawImage(this, 0, 0), t(n.toDataURL(e)) }, n.src = e }, getFavicon: function(e) { var t = this; if (e) { var n = (0, h.ensureURLProtocol)(e.trim()), i = document.createElement("a"); i.href = n; var a = i.protocol + "//" + i.host + "/favicon.ico"; this.getDataUri(a, function(e) { t.setState({ faviconUrl: e }) }) } }, updateFavicon: function(e) { var t = e.target.value.trim(); t && this.getFavicon(t) }, create: function() { var e = this.refs.newName.value.trim(), t = this.refs.newKeyword.value.trim(), n = this.refs.newURL.value.trim(); e && n && this.state.nicknameTaken === !1 && (this.createSearchEngine({ name: e, keyword: t, url: n, suggestUrl: this.refs.newSuggestUrl.value.trim(), faviconUrl: this.state.faviconUrl }), "function" == typeof this.props.onClose && this.props.onClose()) }, nameChange: function(e) { this.setState({ name: e.target.value }) }, defaultChange: function(e) { this.setState({ default: e.target.checked }) }, urlChange: function(e) { this.setState({ url: e.target.value }) }, nicknameChange: function(e) { var t = !1, n = e.target.value; if (n.length > 0) for (var i = this.state.SEARCH_ENGINES, a = 0; a < i.length; a++) if (i[a].Keyword === n) { t = !0; break } this.setState({ nicknameTaken: t }) }, createSearchEngine: function(e) { var t = this.state.SEARCH_ENGINES, n = Math.max.apply(Math, t.map(function(e) { return e.Id })); n = isNaN(n) ? 0 : n + 1, t.push({ Id: Number(n), Name: e.name, Keyword: e.keyword, SuggestUrl: e.suggestUrl, FaviconUrl: e.faviconUrl, Url: e.url }), l.default.set({ SEARCH_ENGINES: t }), this.state.default && l.default.set({ DEFAULT_SEARCH_ENGINE: n }) }, render: function() { var e = void 0; if (this.state.nicknameTaken === !0) for (var t = this.refs.newKeyword.value.trim(), n = this.state.SEARCH_ENGINES, i = 0; i < n.length; i++) n[i].Keyword === t && (e = n[i].Name); return s.default.createElement("div", { className: this.props.showAsDlg ? null : "setting-section unlimited search-engine-add pad-top", __source: { fileName: a, lineNumber: 155 } }, this.props.showAsDlg && s.default.createElement("header", { className: "dialog-header", __source: { fileName: a, lineNumber: 158 } }, s.default.createElement("h1", { className: "dialog-title", __source: { fileName: a, lineNumber: 159 } }, (0, d.default)("Add Search Engine"))), !this.props.showAsDlg && s.default.createElement("div", { __source: { fileName: a, lineNumber: 163 } }, s.default.createElement("h3", { __source: { fileName: a, lineNumber: 164 } }, (0, d.default)("Add Search Engine")), s.default.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 165 } }, (0, d.default)("Substitute search keyword in address with %s"))), s.default.createElement("div", { className: this.props.showAsDlg ? "dialog-content" : "setting-subgroup", __source: { fileName: a, lineNumber: 170 } }, s.default.createElement("div", { className: this.props.showAsDlg ? "fieldset" : "setting-flexgroup", __source: { fileName: a, lineNumber: 172 } }, s.default.createElement("input", { className: "searchengine_url setting-single-flex", type: "text", ref: "newURL", onKeyDown: this.newSearchKeyDown, placeholder: (0, d.default)("URL"), value: this.state.url, onChange: this.urlChange, onBlur: this.updateFavicon, __source: { fileName: a, lineNumber: 174 } })), s.default.createElement("div", { className: this.props.showAsDlg ? "fieldset" : "setting-flexgroup", __source: { fileName: a, lineNumber: 184 } }, s.default.createElement("input", { className: "searchengine_url setting-single-flex", type: "text", ref: "newSuggestUrl", onKeyDown: this.newSearchKeyDown, placeholder: (0, d.default)("Suggest URL"), value: this.state.suggestURL, onChange: this.suggestURLChange, __source: { fileName: a, lineNumber: 186 } })), s.default.createElement("div", { className: this.props.showAsDlg ? "fieldset" : "setting-flexgroup", __source: { fileName: a, lineNumber: 195 } }, s.default.createElement("input", { className: "setting-single-flex", type: "text", ref: "newName", onKeyDown: this.newSearchKeyDown, value: this.state.name, placeholder: (0, d.default)("Description"), onChange: this.nameChange, autoFocus: this.props.showAsDlg, __source: { fileName: a, lineNumber: 197 } }), s.default.createElement("input", { className: "searchengine_keyword setting-single-noflex", type: "text", ref: "newKeyword", placeholder: (0, d.default)("Nickname"), onChange: this.nicknameChange, onKeyDown: this.newSearchKeyDown, __source: { fileName: a, lineNumber: 206 } })), s.default.createElement("div", { className: this.props.showAsDlg ? "fieldset" : "setting-single pad-top", __source: { fileName: a, lineNumber: 213 } }, s.default.createElement("label", { __source: { fileName: a, lineNumber: 215 } }, s.default.createElement("input", { type: "checkbox", checked: this.state.default, onChange: this.defaultChange, __source: { fileName: a, lineNumber: 216 } }), s.default.createElement("span", { __source: { fileName: a, lineNumber: 219 } }, (0, d.default)("searchengine", "Set as Default")))), this.state.nicknameTaken && s.default.createElement("p", { __source: { fileName: a, lineNumber: 224 } }, (0, d.default)("Nickname in use by $1", [e]))), s.default.createElement("footer", { className: this.props.showAsDlg ? "dialog-footer" : "setting-single", __source: { fileName: a, lineNumber: 230 } }, s.default.createElement("input", { type: "button", className: this.props.showAsDlg ? "primary" : "setting-single-noflex primary", onClick: this.create, disabled: this.state.nicknameTaken, value: (0, d.default)("Add"), __source: { fileName: a, lineNumber: 232 } }), s.default.createElement("input", { type: "button", className: this.props.showAsDlg ? null : "setting-single-noflex", onClick: this.props.onClose, value: (0, d.default)("Cancel"), __source: { fileName: a, lineNumber: 239 } }))) } }); e.exports = p }, function(e, t, n) { // ========================= // Function_370 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/settings.jsx", a = n(1), r = n(11), s = n(652), o = n(678), l = n(654), c = n(679), u = n(655), A = n(366), d = n(658), h = n(659), m = n(660), p = n(661), f = n(133), g = n(662), _ = n(666), v = (n(66), n(66), n(681)), b = n(675), N = n(682), E = n(15), S = n(683), T = n(667), y = n(663), C = n(684), I = n(651), O = n(671), w = n(673), D = n(368), k = n(676), M = n(689), L = n(699), P = n(698), R = n(703), x = n(707), B = n(2), U = n(4), F = n(59), H = n(159), V = n(20).urls, W = n(7), G = W.intersection, K = "startup", j = ["A", "LI", "INPUT", "SELECT", "OPTION", "BUTTON", "TEXTAREA"], z = a.createClass({ displayName: "Settings", mixins: [n(365)], categoryMap: { "": ["startup"], startup: ["startup"], appearance: ["appearance"], themes: ["themes"], "start-page": ["start-page"], tabs: ["tab"], panel: ["panel"], addressbar: ["addressbar"], bookmarks: ["bookmarks"], qc: ["qc"], keyboard: ["keyboard"], mouse: ["mouse"], search: ["search"], privacy: ["privacy", "cookies"], downloads: ["downloads"], webpages: ["webpages"], network: ["network"], mail: ["mail"], all: [] }, svgCategoryMap: { startup: n(1004), appearance: n(992), themes: n(1006), "start-page": n(1003), tabs: n(1005), panel: n(999), addressbar: n(990), bookmarks: n(993), qc: n(1001), keyboard: n(995), mouse: n(997), search: n(1002), privacy: n(1e3), downloads: n(994), webpages: n(1007), network: n(998), mail: n(996), all: n(991) }, getInitialState: function() { return { filterSetting: "", categoryTitle: K, filterCategory: this.categoryMap[K], restartDialogDiv: null, cookieManagerDiv: null, currentOS: F() } }, componentDidMount: function() { window.isPopup && window.isPopup() && (document.title = this.getWindowTitle()), this.refs.filter.focus() }, componentWillUnmount: function() { U.runtime.sendMessage({ setLastSettingsWindowId: -1 }) }, componentWillReceiveProps: function(e) { if (e.page && e.page.get("url")) { var t = this._parseUrl(e.page.get("url"), "query"), n = t ? "all" : this._parseUrl(e.page.get("url"), "path") || K, i = this.categoryMap[n] ? this.categoryMap[n] : [], a = n; this.state.filterSetting || this.setState({ categoryTitle: a, filterCategory: i }) } }, componentDidUpdate: function(e, t) { window.isPopup && window.isPopup() && this.state.categoryTitle && t.categoryTitle !== this.state.categoryTitle && (document.title = this.getWindowTitle()) }, getWindowTitle: function() { return B("Vivaldi Settings") + (this.state.categoryTitle && ": " + V.categoryTitleMap[this.state.categoryTitle]) }, _selectedCategoryContains: function(e) { if (this.state.filterCategory) return 0 === this.state.filterCategory.length || G(this.state.filterCategory, e).length > 0 }, onCategoryClick: function(e) { this.setState({ filterSetting: "" }), window.isPopup() ? (this.setState({ categoryTitle: e, filterCategory: this.categoryMap[e] || [] }), this.refs.content.scrollTop = 0) : E.openURL(V.internalUrl("settings", e), { inCurrent: !0 }) }, showCookieManager: function() { this.setState({ cookieManagerDiv: r.findDOMNode(this.refs.settings) }) }, onSettingsFilter: function(e) { var t = e.target.value; this.setState({ filterCategory: [], categoryTitle: "all", filterSetting: t }) }, showRestartDialog: function() { this.setState({ restartDialogDiv: this.refs.settings }) }, closeCookieManager: function() { this.setState({ cookieManagerDiv: null }) }, closeDialog: function() { this.setState({ restartDialogDiv: null }) }, onContextMenu: function(e) { j.indexOf(e.target.nodeName) === -1 && e.preventDefault() }, focusContent: function(e) { 2 !== e.button && j.indexOf(e.target.nodeName) === -1 && this.refs.content.focus() }, _parseUrl: function(e, t) { var n = e.split("?"), i = n && n.length > 1 ? H.parse(n[1])[t] : null; return i }, renderButtons: function() { var e = this; return Object.keys(this.categoryMap).map(function(t) { return "" === t || "network" === t && "linux" === e.state.currentOS || "mail" === t ? null : a.createElement("button", { key: "id-" + t.toLowerCase(), onClick: e.onCategoryClick.bind(e, t), className: e.state.categoryTitle === t ? t + " on" : t + " off", __source: { fileName: i, lineNumber: 250 } }, a.createElement("span", { className: "category-icon", dangerouslySetInnerHTML: { __html: e.svgCategoryMap[t] }, __source: { fileName: i, lineNumber: 254 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 257 } }, V.categoryTitleMap[t])) }) }, render: function() { var e = this.state.filterSetting ? this.state.filterSetting.toLowerCase() : null; return a.createElement(f, { ref: "settings", focusName: "focus_settings", className: "vivaldi-settings", onContextMenu: this.onContextMenu, __source: { fileName: i, lineNumber: 269 } }, a.createElement("header", { className: "settings-header", __source: { fileName: i, lineNumber: 274 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 275 } }, this.getWindowTitle())), a.createElement("nav", { ref: "categories", className: "settings-navigation", __source: { fileName: i, lineNumber: 277 } }, a.createElement("header", { className: "settings-navigation-header", __source: { fileName: i, lineNumber: 278 } }, a.createElement("input", { className: "settings-search", ref: "filter", value: this.state.filterSetting, type: "search", placeholder: B("Search..."), onChange: this.onSettingsFilter, autoFocus: !0, __source: { fileName: i, lineNumber: 279 } })), a.createElement("section", { __source: { fileName: i, lineNumber: 287 } }, this.renderButtons())), this.state.categoryTitle.length > 0 && a.createElement("div", { className: "settings-content", ref: "content", tabIndex: "0", onClick: this.focusContent, __source: { fileName: i, lineNumber: 294 } }, this._selectedCategoryContains(["startup"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 300 } }, a.createElement(M, { filter: e, __source: { fileName: i, lineNumber: 301 } })), this._selectedCategoryContains(["startup"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 305 } }, a.createElement(_, { filter: e, __source: { fileName: i, lineNumber: 306 } })), this._selectedCategoryContains(["appearance"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 310 } }, a.createElement(o, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 311 } })), this._selectedCategoryContains(["themes"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 316 } }, a.createElement(R, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 317 } })), this._selectedCategoryContains(["biscuit"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 322 } }, a.createElement(l, { filter: e, __source: { fileName: i, lineNumber: 323 } })), this._selectedCategoryContains(["appearance"]) && "mac" !== this.state.currentOS && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 328 } }, a.createElement(v, { filter: e, __source: { fileName: i, lineNumber: 329 } })), this._selectedCategoryContains(["addressbar"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 333 } }, a.createElement(s, { filter: e, __source: { fileName: i, lineNumber: 334 } })), this._selectedCategoryContains(["start-page"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 338 } }, a.createElement(k, { filter: e, __source: { fileName: i, lineNumber: 339 } })), this._selectedCategoryContains(["tab"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 343 } }, a.createElement(P, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 344 } })), this._selectedCategoryContains(["panel"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 349 } }, a.createElement(S, { filter: e, __source: { fileName: i, lineNumber: 350 } })), this._selectedCategoryContains(["bookmarks"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 354 } }, a.createElement(u, { filter: e, __source: { fileName: i, lineNumber: 355 } }), a.createElement(c, { filter: e, __source: { fileName: i, lineNumber: 356 } })), this._selectedCategoryContains(["qc"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 360 } }, a.createElement(C, { filter: e, __source: { fileName: i, lineNumber: 361 } })), this._selectedCategoryContains(["keyboard"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 365 } }, a.createElement(D, { filter: e, platform: this.state.currentOS, view: "editable", __source: { fileName: i, lineNumber: 366 } })), this._selectedCategoryContains(["mouse"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 372 } }, a.createElement(b, { filter: e, categoryTitle: this.state.categoryTitle, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 373 } })), this._selectedCategoryContains(["search"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 379 } }, a.createElement(w, { filter: e, showAsDlg: !1, __source: { fileName: i, lineNumber: 380 } })), this._selectedCategoryContains(["privacy"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 385 } }, a.createElement(T, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 386 } })), this._selectedCategoryContains(["privacy"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 392 } }, a.createElement(y, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 393 } })), this._selectedCategoryContains(["privacy"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 399 } }, a.createElement(O, { filter: e, __source: { fileName: i, lineNumber: 400 } })), this._selectedCategoryContains(["cookies"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 404 } }, a.createElement(h, { showCookieManager: this.showCookieManager, filter: e, __source: { fileName: i, lineNumber: 405 } })), this._selectedCategoryContains(["cookies"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 410 } }, a.createElement(A, { filter: e, __source: { fileName: i, lineNumber: 411 } })), this._selectedCategoryContains(["downloads"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 415 } }, a.createElement(p, { filter: e, platform: this.state.currentOS, __source: { fileName: i, lineNumber: 416 } })), this._selectedCategoryContains(["webpages"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 421 } }, a.createElement(x, { filter: e, __source: { fileName: i, lineNumber: 422 } })), this._selectedCategoryContains(["webpages"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 426 } }, a.createElement(m, { filter: e, __source: { fileName: i, lineNumber: 427 } })), this._selectedCategoryContains(["webpages"]) && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 431 } }, a.createElement(g, { filter: e, __source: { fileName: i, lineNumber: 432 } })), this._selectedCategoryContains(["sync"]) && !1 && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 438 } }, a.createElement(L, { filter: e, __source: { fileName: i, lineNumber: 439 } })), this._selectedCategoryContains(["network"]) && "linux" !== this.state.currentOS && a.createElement("section", { className: "setting-section", __source: { fileName: i, lineNumber: 444 } }, a.createElement(N, { filter: e, __source: { fileName: i, lineNumber: 445 } })), null, this.state.restartDialogDiv && a.createElement(I, { parentDiv: this.state.restartDialogDiv, onClose: this.closeDialog, __source: { fileName: i, lineNumber: 461 } }), this.state.cookieManagerDiv && a.createElement(d, { parentDiv: this.state.cookieManagerDiv, onCloseBM: this.closeCookieManager, __source: { fileName: i, lineNumber: 466 } }))) } }); e.exports = z }, function(e, t, n) { // ========================= // Function_371 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/setVivaldiDefaultSetting.jsx", a = n(1), r = n(10), s = n(3), o = n(2), l = n(12), c = a.createClass({ displayName: "VivaldiDefaultBrowser", getInitialState: function() { return { isVivaldiDefault: !0, checkIfVivaldiIsDefaultBrowserStartup: !1 } }, componentWillMount: function() { r.importData.isVivaldiDefaultBrowser(function(e) { this.setState({ isVivaldiDefault: !(!e || !e.toString) && "true" === e.toString() }) }.bind(this)), s.get("CHECK_DEFAULT_BROWSER_STARTUP", function(e) { this.setState({ checkIfVivaldiIsDefaultBrowserStartup: e }) }.bind(this)) }, setVivaldiDefault: function() { r.importData.setVivaldiAsDefaultBrowser(function(e) { this.setState({ isVivaldiDefault: !(!e || !e.toString) && "true" === e.toString() }) }.bind(this)), this.props.onClose && this.props.onClose() }, checkChange: function() { s.set({ CHECK_DEFAULT_BROWSER_STARTUP: !this.state.checkIfVivaldiIsDefaultBrowserStartup }), this.setState({ checkIfVivaldiIsDefaultBrowserStartup: !this.state.checkIfVivaldiIsDefaultBrowserStartup }) }, onClose: function() { this.props.onClose && this.props.onClose() }, render: function() { var e = a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 60 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 61 } }, o("Default Browser")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 63 } }, this.state.isVivaldiDefault ? a.createElement("p", { __source: { fileName: i, lineNumber: 76 } }, o("Vivaldi is set as your default browser.")) : a.createElement("div", { __source: { fileName: i, lineNumber: 65 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 66 } }, o("Vivaldi isn’t your default browser.")), a.createElement("input", { type: "button", onClick: this.setVivaldiDefault, value: o("browser", "Set as Default"), __source: { fileName: i, lineNumber: 67 } }), this.props.showNotNow && a.createElement("input", { type: "button", onClick: this.onClose, value: o("Not Now"), __source: { fileName: i, lineNumber: 71 } }))), a.createElement("div", { className: "setting-single pad-top", __source: { fileName: i, lineNumber: 80 } }, a.createElement("label", { title: o("Check if Vivaldi is your default browser upon every startup"), __source: { fileName: i, lineNumber: 81 } }, a.createElement("input", { type: "checkbox", checked: this.state.checkIfVivaldiIsDefaultBrowserStartup, onChange: this.checkChange, __source: { fileName: i, lineNumber: 83 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 86 } }, o("Check on Startup"))))); return l(e, this.props.filter) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_372 // ========================= "use strict"; function i(e, t) { var n = {}; for (var i in e) t.indexOf(i) >= 0 || Object.prototype.hasOwnProperty.call(e, i) && (n[i] = e[i]); return n } var a = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, r = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/themes/ThemePreview.jsx", s = n(1), o = n(5), l = n(235), c = n(25), u = n(7), A = u.isEqual, d = u.omit, h = ["TABCOLOR_BEHIND_TABS", "THEME_CURRENT"], m = s.createClass({ displayName: "ThemePreview", propTypes: { themeObject: s.PropTypes.object }, componentDidMount: function() { this.updateStyle() }, componentDidUpdate: function(e, t) { A(e.theme, this.props.theme) || this.updateStyle() }, updateStyle: function() { var e = this; Object.keys(this.props.theme).forEach(function(t) { var n = "--" + t, i = e.props.theme[t]; e.refs.themePreview.style.removeProperty(n), e.refs.themePreview.style.setProperty(n, i) }) }, render: function() { var e = this.props, t = e.themeObject, n = e.vivaldiSettings, l = i(e, ["themeObject", "vivaldiSettings"]), c = n.THEME_CURRENT === t.name, u = t.settings.accentOnWindow, A = u ? "var(--colorAccentBg)" : "var(--colorBg)", h = u ? "var(--colorBg)" : "var(--colorAccentBg)", m = u ? "var(--colorAccentBgFaded)" : "var(--colorBgLight)", p = o({ selectbox: !0, "selectbox-selected": c }); return s.createElement("button", a({ className: p }, d(l, ["theme", "accentBg", "highlightBg", "themeBg"]), { __source: { fileName: r, lineNumber: 51 } }), s.createElement("div", { className: "selectbox-image", __source: { fileName: r, lineNumber: 55 } }, s.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "theme-preview", ref: "themePreview", width: "96", height: "76", viewBox: "0 0 96 76", __source: { fileName: r, lineNumber: 56 } }, s.createElement("rect", { fill: "var(--colorBgDarker)", x: "0", y: "16", width: "96", height: "57", __source: { fileName: r, lineNumber: 62 } }), s.createElement("rect", { fill: A, width: "96", height: "10", __source: { fileName: r, lineNumber: 63 } }), s.createElement("path", { fill: h, d: "M0 10h96v6H0v-6zm0-6h30v6H0V4z", __source: { fileName: r, lineNumber: 64 } }), s.createElement("rect", { fill: "var(--colorBgDark)", y: "16", width: "6", height: "57", __source: { fileName: r, lineNumber: 65 } }), s.createElement("rect", { fill: "var(--colorBgLightIntense)", x: "6", y: "16", width: "18", height: "57", __source: { fileName: r, lineNumber: 66 } }), s.createElement("rect", { fill: m, x: "31", y: "4", width: "30", height: "6", __source: { fileName: r, lineNumber: 67 } }), s.createElement("rect", { fill: "var(--colorBg)", y: "73", width: "96", height: "3", __source: { fileName: r, lineNumber: 68 } }), s.createElement("rect", { fill: "var(--colorFg)", x: "8", y: "69", width: "6", height: "2", __source: { fileName: r, lineNumber: 69 } }), s.createElement("rect", { fill: "var(--colorHighlightBg)", x: "16", y: "69", width: "6", height: "2", __source: { fileName: r, lineNumber: 70 } })), s.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: r, lineNumber: 72 } }, s.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: r, lineNumber: 75 } }))), s.createElement("div", { className: "selectbox-title", __source: { fileName: r, lineNumber: 79 } }, t.name)) } }); e.exports = l(c(m, h)) }, function(e, t, n) { // ========================= // Function_373 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDialTitle.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(11), d = i(A), h = n(4), m = i(h), p = n(26), f = i(p), g = n(5), _ = i(g), v = function(e) { function t(e, n) { a(this, t); var i = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return i._documentClickHandler = i._documentClickHandler.bind(i), i.onContextMenu = i.onContextMenu.bind(i), i.handleBlur = i.handleBlur.bind(i), i.handleChange = i.handleChange.bind(i), i.handleClick = i.handleClick.bind(i), i.handleDoubleClick = i.handleDoubleClick.bind(i), i.handleKeyDown = i.handleKeyDown.bind(i), i.state = { isEditing: !1, title: e.bookmark.title }, i } return s(t, e), l(t, [{ key: "componentDidMount", value: function() { this.props.needsInitialEdit && this.enableEditing() } }, { key: "componentDidUpdate", value: function(e, t) { t.isEditing === !1 && this.state.isEditing === !0 && this.refs.input && this.refs.input.value && (this.refs.input.setSelectionRange(0, this.refs.input.value.length), this.refs.input.focus()) } }, { key: "_documentClickHandler", value: function(e) { d.default.findDOMNode(this).contains(e.target) || this.refs.input.blur() } }, { key: "enableEditing", value: function() { this.state.isEditing === !1 && (document.addEventListener("click", this._documentClickHandler), this.setState({ isEditing: !0, fallbackTitle: this.props.bookmark.title, title: this.props.bookmark.title })) } }, { key: "handleClick", value: function(e) { this.props.onSelect && (this.props.onSelect(), d.default.findDOMNode(this).focus()), "click" === this.props.howToEdit && this.enableEditing() } }, { key: "handleDoubleClick", value: function(e) { "doubleClick" === this.props.howToEdit && this.enableEditing() } }, { key: "handleBlur", value: function(e) { this.state.title || this.cancelEdit(), this.setState({ isEditing: !1 }), this.props.needsInitialEdit && "function" == typeof this.props.setSpeedDialAwaitingEdit && this.props.setSpeedDialAwaitingEdit(null), document.removeEventListener("click", this._documentClickHandler) } }, { key: "handleChange", value: function(e) { var t = e.target.value; this.setState({ title: t }) } }, { key: "handleKeyDown", value: function(e) { var t = e.keyCode; if (13 === t) this.saveTitle(this.state.title), this.refs.input.blur(); else { if (27 !== t) return; this.cancelEdit(), this.refs.input.blur() } e.preventDefault() } }, { key: "removeSpeedDial", value: function() { m.default.bookmarks.update(this.props.bookmark.id, { speeddial: !1 }, function() { m.default.runtime.lastError && console.warn("The computer tried to update a speeddial, but The Bookmark API said no: ", m.default.runtime.lastError.message) }) } }, { key: "deleteBookmark", value: function() { m.default.bookmarks.remove(this.props.bookmark.id, function() { m.default.runtime.lastError && console.warn("The computer tried to update a bookmark, but The Bookmark API said no: ", m.default.runtime.lastError.message) }) } }, { key: "cancelEdit", value: function() { this.props.needsInitialEdit ? this.deleteBookmark() : (this.setState({ title: this.state.fallbackTitle }), this.saveTitle(this.state.fallbackTitle)) } }, { key: "saveTitle", value: function(e) { m.default.bookmarks.update(this.props.bookmark.id, { title: e }, function() { m.default.runtime.lastError && console.warn("The computer tried to update a bookmark, but The Bookmark API said no: ", m.default.runtime.lastError.message) }) } }, { key: "onContextMenu", value: function(e) { this.state.isEditing ? e.stopPropagation() : (0, f.default)(this.props.getContextMenuItems(this.props.bookmark))(e) } }, { key: "render", value: function() { var e = (0, _.default)({ "editable-title-container": !0, edit: this.state.isEditing }); return u.default.createElement("span", { className: e, onContextMenu: this.onContextMenu, __source: { fileName: o, lineNumber: 183 } }, u.default.createElement("button", { className: this.props.className, tabIndex: this.props.keyAccess, onClick: this.handleClick, title: this.props.bookmark.title, onDoubleClick: this.handleDoubleClick, __source: { fileName: o, lineNumber: 185 } }, this.props.bookmark.title), this.state.isEditing && u.default.createElement("input", { type: "text", ref: "input", value: this.state.title, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onChange: this.handleChange, autoFocus: !0, __source: { fileName: o, lineNumber: 193 } })) } }]), t }(u.default.Component); v.defaultProps = { howToEdit: "click" }, e.exports = v }, function(e, t, n) { // ========================= // Function_374 // ========================= "use strict"; var i = n(2), a = Object.freeze({ SpeedDial: i("title", "Start Page"), Bookmarks: i("Bookmarks"), History: i("ChromeHistory"), HistoryNew: i("History") }); e.exports = a }, function(e, t, n) { // ========================= // Function_375 // ========================= (function(t) { "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/AudioIcon.jsx", a = n(1), r = n(180), s = n(2), o = a.createClass({ displayName: "AudioIcon", propTypes: { animated: a.PropTypes.bool, color: a.PropTypes.string.isRequired, mode: a.PropTypes.oneOf(["idle", "playing", "muting"]).isRequired }, getDefaultProps: function() { return { color: "#ffffff", mode: "idle" } }, componentDidMount: function() { this._isMounted = !0, this.renderIcon(this.props.mode, this.props.color) }, componentWillReceiveProps: function(e, n) { var i = this; this.props !== e && this.isMounted() && t.nextTick(function() { i.renderIcon(e.mode, e.color) }) }, componentWillUnmount: function() { this._isMounted = !1, cancelAnimationFrame(this.rafId) }, renderIcon: function(e, t) { function n(e, t) { var n = t - e, i = e + o * n; return i } var i = this.refs.canvas; if (i) { var a = i.getContext("2d"), s = r(t).rgb, o = 0, l = function() { a.clearRect(0, 0, i.width, i.height), a.beginPath(), a.moveTo(4, 12), a.lineTo(10, 12), a.lineTo(18, 4), a.lineTo(18, 28), a.lineTo(10, 20), a.lineTo(4, 20), a.closePath(), a.lineWidth = 0, a.fillStyle = t, a.fill() }, c = function() { a.clearRect(0, 0, i.width, i.height), a.beginPath(), a.moveTo(2, 27), a.lineTo(5, 30), a.lineTo(28, 7), a.lineTo(25, 4), a.closePath(), a.lineWidth = 0, a.fillStyle = t, a.fill(), a.beginPath(), a.moveTo(4, 12), a.lineTo(10, 12), a.lineTo(18, 4), a.lineTo(18, 8), a.lineTo(6, 20), a.lineTo(4, 20), a.closePath(), a.lineWidth = 0, a.fillStyle = t, a.fill(), a.beginPath(), a.moveTo(14, 24), a.lineTo(18, 20), a.lineTo(18, 28), a.closePath(), a.lineWidth = 0, a.fillStyle = t, a.fill() }, u = window.requestAnimationFrame || window.webkitRequestAnimationFrame, A = function() { a.clearRect(0, 0, i.width, i.height), l(), o = o > 1 ? 0 : Math.ceil(100 * (o + .011)) / 100, a.beginPath(), a.moveTo(n(18, 22), n(12, 4)), a.quadraticCurveTo(n(20, 32), 16, n(18, 22), n(20, 28)), a.lineTo(n(20, 24), n(22, 30)), a.quadraticCurveTo(n(24, 34), 16, n(20, 24), n(10, 2)), a.closePath(), a.lineWidth = 0, a.fillStyle = "rgba(" + s.r + "," + s.g + "," + s.b + "," + (o < .7 ? 1 : (1 - o) / .3) + ")", a.fill(), "playing" === this.props.mode && this.props.animated ? this._isMounted && (this.rafId = u(A)) : d(this.props.mode) }.bind(this), d = function(e) { "playing" === e ? this.props.animated ? A() : l() : "muting" === e ? c() : l() }.bind(this); d(e) } }, render: function() { var e = ""; return "playing" === this.props.mode ? e = s("Mute tab audio") : "muting" === this.props.mode && (e = s("Unmute tab audio")), a.createElement("canvas", { className: "audioicon", ref: "canvas", width: "32", height: "32", title: e, __source: { fileName: i, lineNumber: 180 } }) } }); e.exports = o }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_376 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }), t.isMultiSelectEvent = t.isSingleSelectEvent = void 0; var a = n(59), r = i(a); t.isSingleSelectEvent = function(e, t) { var n = t.TAB_SELECTION_ENABLED, i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a = "mac" === (0, r.default)(); return Boolean(n && (!a || i) && (a ? e.metaKey : e.ctrlKey)) }, t.isMultiSelectEvent = function(e, t) { var n = t.TAB_SELECTION_ENABLED, i = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a = "mac" === (0, r.default)(); return Boolean(n && (!a || i) && e.shiftKey) } }, function(e, t, n) { // ========================= // Function_377 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), r = n(15), s = i(r), o = n(17), l = i(o), c = n(114), u = (i(c), n(10)), A = i(u), d = n(4), h = i(d), m = n(72), p = function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, i = function() { window.addEventListener("mousemove", d), window.addEventListener("mouseup", p) }, r = function() { window.removeEventListener("mousemove", d), window.removeEventListener("mouseup", p) }, o = function t(i, a, r, o, c) { if ("vivaldi/x-tab-entries" === i.mimeType) { if (A.default.tabsPrivate.onDragEnd.removeListener(t), h.default.runtime.sendMessage({ action: m.MESSAGE_END_DRAGGING }), !a && r) { var u = JSON.parse(i.customData).ids.map(function(e) { return parseInt(e) }).map(function(e) { return l.default.getPages().find(function(t) { return t.id === e }) }).filter(Boolean); u.length ? s.default.detachPage(u, o, c) : console.warn("Dropped Page(s) does not exist:", u.ids) } "function" == typeof n.onDragEnd && n.onDragEnd(e) } }, c = t.pageX, u = t.pageY, d = function(t) { var i = 5; (Math.abs(t.pageX - c) > i || Math.abs(t.pageY - u) > i) && ! function() { r(); var i = n.element || t.target, s = i.getBoundingClientRect(), l = n.offsetLeft || 0, c = n.offsetTop || 0, u = n.offsetHeight || 0, d = n.offsetWidth || 0, p = h.default.app.window.current(); p && A.default.zoom.getVivaldiUIZoom(function(t) { return A.default.thumbnails.captureUI({ appWindowId: p.id, posX: Math.round((s.left + l) * t), posY: Math.round((s.top + c) * t), width: Math.round((s.width + d) * t), height: Math.round((s.height + u) * t) }, function(t) { h.default.runtime.sendMessage({ action: m.MESSAGE_START_DRAGGING }); var i = a(e, 1), r = i[0]; A.default.tabsPrivate.startDrag({ mimeType: "vivaldi/x-tab-entries", customData: JSON.stringify({ ids: e.map(function(e) { return e.id }), active: (e.find(function(e) { return e.active }) || r).id }), url: r.url, title: r.title }, { image: t, cursorX: 10, cursorY: 10 }, !1), A.default.tabsPrivate.onDragEnd.addListener(o), "function" == typeof n.onDragStart && n.onDragStart(e) }) }) }() }, p = function() { r() }; i() }; e.exports = p }, function(e, t, n) { // ========================= // Function_378 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/titlebar/titlebar.jsx", a = n(1), r = n(52), s = n(25), o = n(45), l = n(50), c = n(175), u = n(37), A = n(17), d = n(9), h = n(3), m = n(2), p = n(4), f = n(5), g = n(26), _ = n(20), v = _.urls, b = ["VIVALDI_MENU_POSITION"]; "MacIntel" === navigator.platform && b.push("vivaldi.apple_aqua_color_variant"); var N = -1, E = function() { return { pages: A.getPages(), activePage: A.getActivePage() } }, S = a.createClass({ displayName: "TitleBar", mixins: [d], hasMenuContent: !1, activeShortcuts: [], getInitialState: function() { return Object.assign({ altHover: !1 }, E()) }, componentWillMount: function() { if (A.addChangeListener(this._onPageStoreChange), "mac" !== this.props.currentOS) { var e = h.getSync("VIVALDI_MENU_POSITION"); this.hasMenuContent = "vivaldi" === e, this._setupShortcuts(), h.addListener("VIVALDI_MENU_POSITION", this._onMenuPositionChanged), r.addChangeListener(this._onCommandStoreChanged), window.addEventListener("keydown", this.onKeyDown, !0), window.addEventListener("keyup", this.onKeyUp, !0) } }, componentWillUnmount: function() { var e = this; A.removeChangeListener(this._onPageStoreChange), "mac" !== this.props.currentOS && (h.removeListener("VIVALDI_MENU_POSITION", this._onMenuPositionChanged), r.addChangeListener(this._onCommandStoreChanged), window.removeEventListener("keydown", this.onKeyDown, !0), window.removeEventListener("keyup", this.onKeyUp, !0), this.activeShortcuts.forEach(function(t) { t.shortcut && u.unbind(t.shortcut, e.showSubMenu) })) }, _onPageStoreChange: function() { this.setState(E()) }, _onCommandStoreChanged: function() { "mac" !== this.props.currentOS && this._setupShortcuts() }, _onMenuPositionChanged: function(e, t) { if (t) { var n = "vivaldi" === t; this.hasMenuContent !== n && (this.hasMenuContent = n, this._setupShortcuts()) } }, _setupShortcuts: function() { var e = this; this.activeShortcuts.forEach(function(t) { t.shortcut && u.unbind(t.shortcut, e.showSubMenu) }), this.activeShortcuts = [], this.hasMenu() && "mac" !== this.props.currentOS && (this.activeShortcuts = c.getShortcutsForMenuItems(r.getVerticalMenu()), this.activeShortcuts.forEach(function(t) { t.shortcut && u.bind(t.shortcut, e.showSubMenu) })) }, onKeyDown: function(e) { e.repeat !== !0 && (N === o.KEY_ALT && this.stopMenuDetection(), N = e.keyCode, N === o.KEY_ALT && (window.addEventListener("mousedown", this.stopMenuDetection), window.addEventListener("mouseup", this.stopMenuDetection), window.addEventListener("mousemove", this.stopMenuDetection), window.addEventListener("wheel", this.stopMenuDetection))) }, onKeyUp: function(e) { N === o.KEY_ALT && (this.stopMenuDetection(), e.keyCode === o.KEY_ALT && this.hasMenu() && this.showMenu(e)) }, stopMenuDetection: function() { N = -1, window.removeEventListener("mousedown", this.stopMenuDetection), window.removeEventListener("mouseup", this.stopMenuDetection), window.removeEventListener("mousemove", this.stopMenuDetection), window.removeEventListener("wheel", this.stopMenuDetection) }, hasMenu: function() { return this.hasMenuContent && !(window.isPopup && window.isPopup()); }, close: function(e) { e.stopPropagation(), l.closeWindow() }, minimize: function() { this.props.onNoVisualBlur(), p.app.window.current().minimize() }, maximize: function(e) { var t = p.app.window.current(); if ("mac" !== this.props.currentOS) t.isMaximized() ? t.restore() : t.maximize(); else { var n = e.altKey; !e || 1 !== e.button && n !== !0 || t.isFullscreen() ? t.isFullscreen() ? t.restore() : t.fullscreen() : t.isMaximized() ? t.restore() : t.maximize() } }, skipFocusOnSystemButtonMouseDown: function(e) { var t = document.activeElement; setTimeout(function() { t.focus() }, 1) }, keyDownListener: function(e) { e.altKey && this.setState({ altHover: !0 }) }, keyUpListener: function(e) { "Alt" === e.key && this.setState({ altHover: !1 }) }, handleMouseEnter: function(e) { e.altKey && this.setState({ altHover: !0 }), document.addEventListener("keydown", this.keyDownListener), document.addEventListener("keyup", this.keyUpListener) }, handleMouseLeave: function(e) { this.setState({ altHover: !1 }), document.removeEventListener("keydown", this.keyDownListener), document.removeEventListener("keyup", this.keyUpListener) }, showMenu: function(e) { return g(r.getVerticalMenu(this.state.pages), null, "bottom", this.refs.vivaldiButton, null, null, this.activeShortcuts)(e) }, showSubMenu: function(e) { this.activeShortcuts.forEach(function(t) { if (t.shortcut && t.keyCode === e.keyCode) { var n = r.getVerticalMenu(this.state.pages), i = n[t.index]; return void g(n, null, "bottom", this.refs.vivaldiButton, null, i, this.activeShortcuts)(e) } }.bind(this)) }, render: function() { var e = v.getDisplayTitle(this.state.activePage) || "Vivaldi", t = "top" !== this.props.tabPosition ? "tabless" : null, r = this.props.currentOS, s = p.app.window.current().isFullscreen(), o = window.navigator.appVersion.indexOf("Windows NT 10") > 0 ? "win10" : r, l = void 0, c = void 0, u = void 0; switch (o) { case "linux": case "win": l = n(1032), u = n(1034), c = n(1033); break; case "win10": l = n(1035), u = n(1037), c = n(1036); break; case "mac": l = n(963), u = n(965), c = n(964) } var A = 6 === this.props.vivaldiSettings["vivaldi.apple_aqua_color_variant"]; return a.createElement("div", { ref: "titlebar", id: "titlebar", className: t, __source: { fileName: i, lineNumber: 286 } }, "mac" !== r && this.hasMenu() && a.createElement("button", { ref: "vivaldiButton", className: "vivaldi", onMouseDown: this.showMenu, title: m("Menu"), __source: { fileName: i, lineNumber: 288 } }, a.createElement("span", { className: "application-icon", dangerouslySetInnerHTML: { __html: n(1025) }, __source: { fileName: i, lineNumber: 293 } }), a.createElement("span", { className: "vivaldi-v", dangerouslySetInnerHTML: { __html: n(1023) }, __source: { fileName: i, lineNumber: 296 } })), a.createElement("div", { className: f({ "window-buttongroup": !0, "alt-hover": this.state.altHover && !s, graphite: A }), onMouseEnter: "mac" === r ? this.handleMouseEnter : null, onMouseLeave: "mac" === r ? this.handleMouseLeave : null, __source: { fileName: i, lineNumber: 302 } }, a.createElement("button", { tabIndex: "-1", className: "window-minimize", onMouseDown: this.skipFocusOnSystemButtonMouseDown, onClick: this.minimize, dangerouslySetInnerHTML: { __html: u }, __source: { fileName: i, lineNumber: 309 } }), a.createElement("button", { tabIndex: "-1", className: "window-maximize", onMouseDown: this.skipFocusOnSystemButtonMouseDown, onClick: this.maximize, dangerouslySetInnerHTML: { __html: c }, __source: { fileName: i, lineNumber: 314 } }), a.createElement("button", { tabIndex: "-1", className: "window-close", onMouseDown: this.skipFocusOnSystemButtonMouseDown, onClick: this.close, dangerouslySetInnerHTML: { __html: l }, __source: { fileName: i, lineNumber: 319 } })), "top" !== this.props.tabPosition && (this.hasMenu() || "mac" === r) && a.createElement("div", { id: "pagetitle", __source: { fileName: i, lineNumber: 328 } }, e)) } }); e.exports = s(S, b) }, function(e, t, n) { // ========================= // Function_379 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } Object.defineProperty(t, "__esModule", { value: !0 }); var a = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), r = n(11), s = n(7), o = s.findIndex, l = ["getDropdown", "getSelectionIndex"]; t.OmniNavigation = function() { function e(t, n) { i(this, e), this._inputComponent = t, this._onSave = n } return a(e, [{ key: "_save", value: function() { "function" == typeof this._onSave && this._onSave() } }, { key: "_hasRequiredMethods", value: function() { var e = this; return l.every(function(t) { return "function" == typeof e._inputComponent[t] }) } }, { key: "_moveAutocompleteHighlight", value: function(e, t) { if (!this._hasRequiredMethods()) throw "Missing some methods: " + l.join(","); var n = this._inputComponent.getDropdown(), i = r.findDOMNode(n), a = this._inputComponent.getSelectionIndex(); if (i) { var s = null, c = !1, u = !1, A = i.getElementsByClassName("omni-clickable"); if (null == a || a === -1 || null == A[a]) s = e ? 0 : n.getNumberOfSelectableItems() - 1; else { var d = A[a], h = 0 === a || parseInt(i.scrollTop) + 10 > d.offsetTop; if (t) if (e) h ? s = o(A, function(e) { return e.offsetTop + e.offsetHeight > i.offsetHeight }) : (d.scrollIntoView(!0), s = o(A, function(e) { return e.offsetTop > i.offsetHeight + i.scrollTop })), s === -1 && (s += n.getNumberOfSelectableItems()); else if (h) i.scrollTop -= i.offsetHeight; else { for (var m = A.length - 1; m > 0 && !(A[m].offsetTop - A[m].offsetHeight < i.scrollTop); m--); s = m } else s = a + (e ? 1 : -1), e ? s >= n.getNumberOfSelectableItems() && (s = -1) : (h ? c = !0 : u = !0, s < -1 && (s = n.getNumberOfSelectableItems() - 1)) } if (null != s) return s !== -1 ? (u || A[s].scrollIntoView(c), this._inputComponent.setAutocompleteHighlight(s, !0)) : this._inputComponent.setAutocompleteHighlight(-1, !0) } return !1 } }, { key: "up", value: function() { return (!this._moveAutocompleteHighlight || !this._moveAutocompleteHighlight(!1)) && void this._save() } }, { key: "down", value: function() { return (!this._moveAutocompleteHighlight || !this._moveAutocompleteHighlight(!0)) && void this._save() } }, { key: "pageUp", value: function() { return (!this._moveAutocompleteHighlight || !this._moveAutocompleteHighlight(!1, !0)) && void this._save() } }, { key: "pageDown", value: function() { return (!this._moveAutocompleteHighlight || !this._moveAutocompleteHighlight(!0, !0)) && void this._save() } }]), e }() }, function(e, t, n) { // ========================= // Function_380 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/omnidropdown.jsx", r = n(302), s = i(r), o = n(1), l = n(11), c = n(9), u = n(171), A = n(2), d = n(7), h = n(39), m = n(403), p = n(5), f = o.createClass({ displayName: "OmniDropdown", mixins: [c, h], _ignoreMouseMove: !1, propTypes: { onDeleteHistoryItem: o.PropTypes.func, onDeleteTypedHistoryItem: o.PropTypes.func, onLinkItemClicked: o.PropTypes.func, suggestEnabled: o.PropTypes.bool }, getInitialState: function() { return { searchEngineKeyword: "", searchEngineName: "" } }, componentWillReceiveProps: function(e) { this.props.typedSearchEngine === e.typedSearchEngine && this.props.defaultSearchEngine === e.defaultSeachEngine || this.setState({ searchEngineName: this.props.typedSearchEngine ? this.props.typedSearchEngine.Name : this.props.defaultSearchEngine.Name, searchEngineKeyword: !this.props.typedSearchEngine && this.props.defaultSearchEngine && this.props.defaultSearchEngine.Keyword + " " || "" }) }, componentDidUpdate: function(e, t) { e.isOpen === !0 && this.props.isOpen === !1 ? this.disableOnClickOutside() : e.isOpen === !1 && this.props.isOpen === !0 && this.enableOnClickOutside() }, handleClickOutside: function(e) { this.props.onClose() }, onLinkItemClicked: function(e, t) { this.props.onLinkItemClicked(e, t) }, onSearchClicked: function() { this.props.defaultSearchEngine && this.props.defaultSearchEngine.Url && this.props.onSearchClicked(this.props.pattern, this.props.defaultSearchEngine.Url) }, getNumberOfSelectableItems: function() { var e = l.findDOMNode(this); return e ? e.querySelectorAll(".omni-clickable").length : 0 }, getCurrentValue: function(e) { var t = l.findDOMNode(this); if (t) { if ("number" != typeof e) { var n = t.querySelector(".highlight"); return n && n.dataset.url ? n.dataset.url : this.props.pattern } var i = t.querySelectorAll(".omni-clickable"); if (e >= 0 && e < i.length) return i[e].dataset.url } return "" }, onDeleteHistoryItem: function(e, t) { t.preventDefault(), t.stopPropagation(), this.props.onDeleteHistoryItem && this.props.onDeleteHistoryItem(e.url) }, onDeleteTypedHistoryItem: function(e, t) { t.preventDefault(), t.stopPropagation(), this.props.onDeleteTypedHistoryItem && this.props.onDeleteTypedHistoryItem(e.url) }, deleteCurrentItem: function() { var e = l.findDOMNode(this).querySelector(".highlight"); if (e) { var t = e.getElementsByClassName("erase-from-history")[0]; t && "function" == typeof t.click && t.click() } }, onMouseOver: function(e) { if (!this._ignoreMouseMove) { var t = d.findIndex(document.getElementsByClassName("omni-clickable"), function(t) { return t === e.target.parentNode }); t >= 0 && this.props.setAutocompleteHighlight(t, !1) } }, onScrolled: function(e) { var t = this; this._ignoreMouseMove = !0, setTimeout(function() { return t._ignoreMouseMove = !1 }, 100) }, renderFavicon: function(e, t) { return !e && t.url && this.props.hideIcons !== !0 ? o.createElement("img", { className: "favicon", src: "chrome://favicon/" + t.url, __source: { fileName: a, lineNumber: 159 } }) : e ? this.props.typedSearchEngine && o.createElement("img", { className: "favicon", src: this.props.typedSearchEngine.Image, __source: { fileName: a, lineNumber: 162 } }) || o.createElement("img", { className: "favicon", src: this.props.defaultSearchEngine.Image, __source: { fileName: a, lineNumber: 163 } }) : t.type === u.OMNI_RESULT_FOLDER_NICKNAME ? o.createElement("img", { className: "favicon", src: "/resources/folder@2x.png", __source: { fileName: a, lineNumber: 165 } }) : o.createElement("img", { className: "favicon hidden", __source: { fileName: a, lineNumber: 168 } }) }, renderLinkItem: function(e, t) { var i = e.type === u.OMNI_RESULT_SUGGEST, r = p({ "omni-clickable": !0, highlight: this._linkItemCount === this.props.selectionIndex }); return this._linkItemCount++, o.createElement("div", { key: e.type + "-" + e.id, "data-url": e.url, className: r, onClick: this.onLinkItemClicked.bind(this, e), __source: { fileName: a, lineNumber: 182 } }, this.renderFavicon(i, e), e.url && o.createElement("span", { className: "url", __source: { fileName: a, lineNumber: 191 } }, m(e.url)), e.type === u.OMNI_RESULT_FOLDER_NICKNAME && o.createElement("span", { className: "url", __source: { fileName: a, lineNumber: 194 } }, A("Open all bookmarks in folder") + " (" + (e.urls && e.urls.length || 0) + ")"), t && o.createElement("span", { className: "nickname", __source: { fileName: a, lineNumber: 198 } }, e.nickname) || e.title && o.createElement("span", { className: "title", __source: { fileName: a, lineNumber: 199 } }, e.title), e.type.startsWith("OMNI_RESULT_HISTORY") && o.createElement("span", { className: "erase-from-history", "data-url": e.url, title: A("Delete history item"), onClick: (0, s.default)(this.onDeleteHistoryItem, e), dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: a, lineNumber: 202 } }), e.type.startsWith("OMNI_RESULT_TYPED_HISTORY") && o.createElement("span", { className: "erase-from-history", "data-url": e.url, title: A("Delete typed history item"), onClick: (0, s.default)(this.onDeleteTypedHistoryItem, e), dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: a, lineNumber: 211 } })) }, renderTypedHistory: function(e) { var t = this; if (!Array.isArray(e) || 0 === e.length) return null; var n = e[0].type === u.OMNI_RESULT_TYPED_HISTORY && o.createElement("label", { __source: { fileName: a, lineNumber: 228 } }, A("Typed")); return o.createElement("section", { className: "filter-omni-typedhistory ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 231 } }, n, e.map(function(e) { return t.renderLinkItem(e) })) }, renderBookmarks: function(e) { var t = this; return Array.isArray(e) && 0 !== e.length ? o.createElement("section", { className: "filter-bookmarks ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 244 } }, o.createElement("label", { __source: { fileName: a, lineNumber: 245 } }, A("Bookmarks")), e.map(function(e) { return t.renderLinkItem(e) })) : null }, renderHistory: function(e) { var t = this; return !Array.isArray(e) || e.length <= 0 ? null : o.createElement("section", { className: "filter-history ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 257 } }, o.createElement("label", { __source: { fileName: a, lineNumber: 258 } }, A("History")), e.map(function(e) { return t.renderLinkItem(e) })) }, renderURLSearch: function() { if ("string" != typeof this.props.pattern || this.props.pattern.length < 0 || !this.props.defaultSearchEngine || this.props.disableSearch === !0) return null; var e = p({ "omni-clickable": !0, search: !0, highlight: this._linkItemCount === this.props.selectionIndex }); return this._linkItemCount++, o.createElement("section", { className: "filter-search ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 281 } }, o.createElement("label", { __source: { fileName: a, lineNumber: 282 } }, A("Search $1", [this.state.searchEngineName])), o.createElement("div", { onClick: this.onSearchClicked, className: e, "data-url": this.state.searchEngineKeyword + this.props.pattern, __source: { fileName: a, lineNumber: 283 } }, o.createElement("img", { className: "favicon", src: (this.props.typedSearchEngine || this.props.defaultSearchEngine).Image, __source: { fileName: a, lineNumber: 287 } }), o.createElement("span", { __source: { fileName: a, lineNumber: 289 } }, this.props.pattern))) }, renderNickname: function(e) { return !Array.isArray(e) || e.length <= 0 ? null : o.createElement("section", { className: "filter-bookmarks ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 302 } }, o.createElement("label", { __source: { fileName: a, lineNumber: 303 } }, A("Nickname")), d.take(e.map(function(e) { return this.renderLinkItem(e, e.nickname) }.bind(this)), u.OMNI_RESULT_COUNT)) }, renderSuggest: function(e) { var t = this; return !Array.isArray(e) || e.length <= 0 ? null : o.createElement("section", { className: "filter-suggestions ignore-react-onclickoutside", __source: { fileName: a, lineNumber: 318 } }, o.createElement("label", { __source: { fileName: a, lineNumber: 319 } }, A("Suggestions")), d.take(e.map(function(e) { return t.renderLinkItem(e) }), u.OMNI_RESULT_COUNT)) }, render: function() { if (!this.props.isOpen) return null; if (this.props.results && this.props.results.length > 0) { var e = d.take(this.props.results.filter(function(e) { return e.type.startsWith("OMNI_RESULT_HISTORY") }), u.OMNI_RESULT_COUNT), t = d.take(this.props.results.filter(function(e) { return e.type.startsWith("OMNI_RESULT_BOOKMARK") && !e.type.includes("OMNI_RESULT_BOOKMARK_NICKNAME") }), u.OMNI_RESULT_COUNT), n = this.props.results.filter(function(e) { return e.type.startsWith("OMNI_RESULT_BOOKMARK_NICKNAME") || e.type.startsWith("OMNI_RESULT_FOLDER_NICKNAME") }), i = d.take(this.props.results.filter(function(e) { return e.type.startsWith("OMNI_RESULT_TYPED_HISTORY") }), u.OMNI_RESULT_COUNT), r = this.props.suggestEnabled ? d.take(this.props.results.filter(function(e) { return e.type.startsWith("OMNI_RESULT_SUGGEST") }), u.OMNI_RESULT_COUNT_SUGGEST) : []; return this._linkItemCount = 0, o.createElement("div", { className: "urlSearch ignore-react-onclickoutside", onMouseOver: this.onMouseOver, onScroll: this.onScrolled, __source: { fileName: a, lineNumber: 364 } }, this.renderNickname(n), this.props.isUrlbarSearchDisabled !== !0 && this.renderURLSearch(), this.renderTypedHistory(i), this.props.suggestEnabled && this.renderSuggest(r), this.renderBookmarks(t), this.renderHistory(e)) } return this.props.isUrlbarSearchDisabled ? null : o.createElement("div", { className: "urlSearch", onMouseOver: this.onMouseOver, onScroll: this.onScrolled, __source: { fileName: a, lineNumber: 383 } }, this.renderURLSearch()) } }); e.exports = f }, function(e, t, n) { // ========================= // Function_381 // ========================= "use strict"; function i(e, t) { var n = this; return new Promise(function(i, a) { for (var l = e.getSync("THEMES_SYSTEM"), c = r(t.THEMES_USER), u = o(c, l, s), A = u.length > 0, d = 0; d < u.length; d++) for (var h = 0; h < l.length; h++) u[d].name === l[h].name && (u[d].name = u[d].name + " 01"); if (A) { var m = { THEMES_USER: u }; e.set(m, i.bind(n, Object.assign({}, t, m))) } else i(t) }) } var a = n(7), r = a.cloneDeep, s = a.isEqual, o = a.differenceWith; e.exports = i }, function(e, t, n) { // ========================= // Function_382 // ========================= "use strict"; var i, a, r = n(52), s = n(17), o = n(775), l = { _onCommandStoreChanged: function() { i = r.getHorizontalMenu(s.getPages()), o(i)("menubar") }, _onPageStoreChanged: function() { if (a) { var e = r.getOpenTabsMenuList(s.getPages()); i !== e && (i = e, o(i)("tabs")) } }, onBlur: function() { a = !1 }, onFocus: function() { a = !0, i = r.getHorizontalMenu(s.getPages()), o(i)("menubar") }, onLastWindowClosed: function() { i = r.getHorizontalMenu(), o(i)("menubar") }, init: function() { r.addChangeListener(this._onCommandStoreChanged), s.addChangeListener(l._onPageStoreChanged), i = r.getHorizontalMenu(), o(i)("menubar") } }; e.exports = l }, function(e, t, n) { // ========================= // Function_383 // ========================= "use strict"; var i = n(4), a = navigator.userAgent.replace(/Vivaldi/, "Viv"), r = navigator.userAgent.replace(/Vivaldi.*/, "Vivaldi/1.0."), s = navigator.userAgent.replace(/Vivaldi.*/, ""), o = [{ id: "VB9275UAALTER", urlMatches: "[docs|www]*.google.*|[fonts|www]*.gstatic.com/[^?]*", schemes: ["https"], headerName: "User-Agent", headerValue: a }, { id: "NETFLIX", urlMatches: ".netflix.com/", schemes: ["http", "https"], headerName: "User-Agent", headerValue: r }, { id: "gmaildisposition", urlMatches: "mail-attachment.googleusercontent.com", schemes: ["https"], headerName: "User-Agent", headerValue: s }]; "MacIntel" === navigator.platform && o.push({ id: "VB12544", urlMatches: "www.facebook.com/", schemes: ["https"], headerName: "User-Agent", headerValue: navigator.userAgent + " OPR/99.0.9999.99" }); var l = []; o.forEach(function(e) { var t = new i.declarativeWebRequest.RequestMatcher({ url: { urlEquals: e.urlEquals, hostEquals: e.hostEquals, schemes: e.schemes, urlMatches: e.urlMatches }, resourceType: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest"], stages: ["onBeforeSendHeaders"] }), n = { id: e.id, conditions: [t], actions: [new i.declarativeWebRequest.SetRequestHeader({ name: e.headerName, value: e.headerValue })] }; l.push(n) }), e.exports = { uaspoofRules: l, uaspoofRuleIds: l.map(function(e) { return e.id }) } }, function(e, t, n) { // ========================= // Function_384 // ========================= "use strict"; function i(e) { c = r.List(e), u.emitChange() } var a = n(18).EventEmitter, r = n(27), s = n(8), o = n(6), l = "change", c = r.List(), u = Object.assign({}, a.prototype, { getBackgroundTasks: function(e) { return c }, emitChange: function() { this.emit(l) }, addChangeListener: function(e) { this.on(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }); s.register(function(e) { var t = e.action; switch (t.actionType) { case o.BACKGROUND_TASKS_SET: i(t.tasks); break; default: return !0 } }), e.exports = u }, function(e, t, n) { // ========================= // Function_385 // ========================= "use strict"; function i(e, t, n) { A[e] = u.Map({ id: t, url: n }) } function a(e, t, n) { var i = e.get("id"); A[i] && (A[i] = u.Map({ id: t, url: n })) } function r(e, t) { var n = e.get("id"); A[n] && (A[n] = void 0) } function s(e) { A[e] && (A[e] = void 0) } var o = n(8), l = n(6), c = n(18).EventEmitter, u = n(27), A = {}, d = Object.assign({}, c.prototype, { getQueue: function(e) { return A[e.get("id")] || u.Map() }, emitChange: function() { this.emit(l.CHANGED) }, addChangeListener: function(e) { this.on(l.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(l.CHANGED, e) } }); o.register(function(e) { var t = e.action; switch (t.actionType) { case l.BOOKMARK_THUMBNAIL_QUEUE_ADD_ITEM: i(t.pageId, t.id, t.url), d.emitChange(); break; case l.BOOKMARK_THUMBNAIL_QUEUE_UPDATE_ITEM: a(t.page, t.id, t.url), d.emitChange(); break; case l.BOOKMARK_THUMBNAIL_QUEUE_REMOVE_ITEM: r(t.page, t.id), d.emitChange(); break; case l.CHROME_TABS_REMOVED: s(t.tabId), d.emitChange(); break; default: return !0 } return !0 }), e.exports = d }, function(e, t, n) { // ========================= // Function_386 // ========================= (function(t) { "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function a(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } var r = n(8), s = n(6), o = n(3), l = n(18).EventEmitter, c = n(362), u = n(360), A = n(4), d = n(138), h = n(624), m = h.updateThreads, p = n(237), f = n(47), g = n(15), _ = n(2), v = n(621), b = n(622), N = n(240), E = N.parseMailBody, S = n(387), T = n(49), y = n(20).urls, C = n(42), I = C.BUFFER_OPERATION_MARKFLAGGED, O = C.BUFFER_OPERATION_MARKFORWARDED, w = C.BUFFER_OPERATION_MARKREPLIED, D = C.BUFFER_OPERATION_MARKUNREAD, k = C.BUFFER_OPERATION_MOVE, M = C.BUFFER_OPERATION_DELETE, L = C.MAIL_STATUS_TIMEOUT, P = C.SENT_FOLDER_TYPE, R = C.INDICATOR_TYPE_FETCHING, x = C.INDICATOR_TYPE_FLUSHING, B = C.INDICATOR_TYPE_CONNECTING, U = n(7), F = U.debounce, H = U.isMatch, V = U.pick, W = "change", G = {}, K = {}, j = new Set, z = new Set, Y = !1, J = {}, Q = {}, Z = 1e4, q = function(e) { return G[e] && G[e]._loggedIn ? Promise.resolve(G[e]) : Promise.reject(e + " not connected") }, X = F(function() { function e(e) { return d.getBufferByAccount(e).then(function(n) { function i(n) { var i = n.operation, r = n.path, s = n.uids, o = n.params; switch (a.current += s.length, t.nextTick(function() { return T.addAccountIndicator(e, x, a) }), i) { case D: return ne.setUnreadState(e, r, s, o); case I: return ne.setFlagged(e, r, s, o); case O: return ne.setForwarded(e, r, s, o); case w: return ne.setReplied(e, r, s, o); case k: return ne.move(e, r, s, o); case M: return ne.delete(e, r, s, o); default: return Promise.reject("Unknown batch operation '" + i + "'") } } var a = { current: 0, total: n.length }, r = [], s = !0, o = !1, l = void 0; try { for (var c, u = n[Symbol.iterator](); !(s = (c = u.next()).done); s = !0) { var A = c.value, h = V(A, ["path", "operation", "params"]), m = r.length; if (0 !== m && H(r[m - 1], h)) { var p = r[m - 1]; p.uids.push(A.uid), p._ids.push(A._id) } else h.uids = [A.uid], h._ids = [A._id], r.push(h) } } catch (e) { o = !0, l = e } finally { try { !s && u.return && u.return() } finally { if (o) throw l } } return r.reduce(function(e, t) { return e.then(function() { return i(t).then(function() { return d.bulkRemoveFromBuffer(t._ids) }).catch(function(e) { console.error(e.stack || e) }) }) }, Promise.resolve()).then(function() { z.delete(e), t.nextTick(function() { return T.removeAccountIndicator(e, x) }) }) }) } if (Y) return X(); Y = !0; var n = [].concat(a(z)); return Promise.all(n.map(function(t) { return e(t).catch(function(e) { return console.error(e.stack || e) }).then(function() { return $(t) }) })).then(function() { return Y = !1 }) }, 1e3), $ = function(e) { j.add(e), ee() }, ee = F(function() { var e = [].concat(a(j)); j.clear(); var t = !0, n = !1, i = void 0; try { for (var r, s = e[Symbol.iterator](); !(t = (r = s.next()).done); t = !0) { var o = r.value, l = K[o]; l ? te(o, l, !0) : console.warn("Parking " + o + " without a permit") } } catch (e) { n = !0, i = e } finally { try { !t && s.return && s.return() } finally { if (n) throw i } } }, 2e3), te = function(e, n) { function i() { var n = J[e]; if (!n || n.length <= 0) return void(Q[e] = !1); var a = n.pop(), r = R; t.nextTick(function() { return T.addPathIndicator(e, a, r) }), q(e).then(function(e) { return e.selectMailbox({ path: a }) }).catch(function(e) { return console.error(e) }).then(function() { t.nextTick(function() { return T.removePathIndicator(e, a, r) }), i() }) } var a = arguments.length > 2 && void 0 !== arguments[2] && arguments[2]; J[e] || (J[e] = []); var r = J[e]; a ? r[0] !== n && r.unshift(n) : r.includes(n) || r.push(n), Q[e] || (Q[e] = !0, i()) }, ne = Object.assign({}, l.prototype, { parkAll: function(e) { e.forEach(function(e) { return $(e) }) }, isDisconnected: function(e) { return G[e] && !G[e]._loggedIn }, delete: function(e, t, n) { return n.reduce(function(n, i) { return n.then(function() { var n = { path: t, uid: i }; return q(e).then(function(e) { return e.deleteMessage(n) }) }) }, Promise.resolve()) }, fetchAndParseRaw: function(e) { return q(e.accountId).then(function(t) { return t.getMessage({ path: e.path, uid: e.uid }) }).then(function(t) { return $(e.accountId), e.raw = t, E(e) }).then(function(e) { return d.add(e.accountId, e.path, [e], !0) }) }, move: function(e, t, n, i) { var a = this; return n.reduce(function(n, r) { return n.then(function() { var n = { path: t, uid: r, destination: i }; return a.setUnreadState(e, t, [r], !1).then(function() { return q(e) }).then(function(e) { return e.moveMessage(n) }) }) }, Promise.resolve()) }, setUnreadState: function(e, t, n, i) { return this._updateFlags(e, t, n, "unread", i) }, setFlagged: function(e, t, n, i) { return this._updateFlags(e, t, n, "flagged", i) }, setForwarded: function(e, t, n, i) { return this._updateFlags(e, t, n, "forwarded", i) }, setReplied: function(e, t, n, i) { return this._updateFlags(e, t, n, "answered", i) }, _updateFlags: function(e, t, n, i, a) { var r = { path: t, uids: n }; return r[i] = a, q(e).then(function(e) { return e.updateFlags(r) }) }, uploadSentMessage: function(e, t, n) { var i = t.MAIL_EMAIL, a = S.getAll()[i].folders[P]; a.length > 0 ? ! function() { var t = { path: a[0].path, message: e }; q(i).then(function(e) { return e.uploadMessage(t, n) }).then(function() { return $(i) }).catch(function(e) { return n(e) }) }() : console.warn("uploadSentMessage: No sent folder found for account", i) }, emitChange: function(e) { this.emit(W, e) }, addChangeListener: function(e) { this.on(W, e) }, removeChangeListener: function(e) { this.removeListener(W, e) }, flushBuffer: function(e) { z.add(e), X() } }), ie = function(e, t, n) { var i = new Notification(u(n.from), { body: n.subject, icon: "resources/favicon_mail@2x.png" }); i.onclick = function() { var a = "message/" + e + "/" + t + "/" + n.uid, r = y.internalUrl("mailpage", a, _("Mail")); g.openURL(r), A.app.window.current().show(), i.close() }, setTimeout(function() { return i.close() }, L) }, ae = function(e) { if (Array.isArray(e)) { var t = [], n = new Set, i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done); i = !0) for (var l = s.value, c = ["to", "cc", "bcc"], u = 0; u < c.length; u++) { var A = c[u], d = l[A]; if (Array.isArray(d)) { var h = !0, m = !1, f = void 0; try { for (var g, _ = d[Symbol.iterator](); !(h = (g = _.next()).done); h = !0) { var v = g.value; n.has(v.address) || (n.add(v.address), v.isGeneratedFromSentMail = !0, t.push(v)) } } catch (e) { m = !0, f = e } finally { try { !h && _.return && _.return() } finally { if (m) throw f } } } } } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } p.addIfNotAddressExists(t).then(function(e) { T.addContacts(e) }) } }, re = function(e, n, i, a, r) { return e.listMessages({ path: i.path, uids: i.list }).then(function(e) { return d.add(n, i.path, e).then(function(s) { var o = i.path.toLowerCase(); return o.indexOf("inbox") > -1 && a === r ? ie(n, i.path, e[0]) : (f.setStatus(_("Indexing mail $1 $2 $3/$4", [n, i.path, a, r])), t.nextTick(function() { return T.addPathIndicator(n, i.path, R, a, r) })), S.getFolderType(n, i.path) === P && ae(e), s }) }) }, se = 1e3, oe = function(e, n, i) { return f.setStatus(_("Indexing - $1 $2", [n, i.path])), Promise.resolve().then(function() { if ("new" === i.type) { var t = i.list.reverse(); delete i.list; for (var a = t.length, r = [], s = 0; s < a; s += se) { var o = s + se > a ? a : s + se, l = Object.assign({}, i); l.list = t.slice(s, s + se), r.push({ newOptions: l, current: o, total: a }) } return r.reduce(function(t, i) { return t.then(function(t) { return re(e, n, i.newOptions, i.current, i.total).then(function(e) { return t.concat(e) }) }) }, Promise.resolve([])).then(function(e) { m(n, i.path, e).then(function() { T.addMessages(n, i.path, e) }) }) } return "deleted" === i.type ? d.remove(n, i.path, i.list).then(function() { return T.removeMessages(n, i.path, i.list) }) : "messages" === i.type ? d.checkBuffer(n, i.path, i.list).then(function() { return d.update(n, i.path, i.list) }).then(function(e) { e.length > 0 && T.updateMessages(n, i.path, e) }) : void 0 }).then(function() { return v.setCache(n, i.path, e.mailboxCache) }).then(function() { return f.setStatus(_("Finished indexing") + " - " + n + " " + i.path, L) }).catch(function(e) { return console.error(e.stack || e) }).then(function() { return t.nextTick(function() { return T.removePathIndicator(n, i.path, R) }) }) }, le = function(e, t) { console.error(t.stack || t); var n = e.MAIL_IMAP_SERVER, i = e.MAIL_IMAP_USER, a = n + " / " + i + ": " + (t.message || t); f.setStatus(a), ne.emitChange(), fe(e) }, ce = function() { var e = {}; return d.getAllSearchListKeys().then(function(t) { for (var n = 0; n < t.length; n++) { var i = t[n], a = i[0], r = i[1], s = i[2]; e[a] || (e[a] = {}), e[a][r] || (e[a][r] = []), e[a][r].push(s) } return e }) }, ue = function() { var e = o.getSync("MAIL_ACCOUNTS") || []; ce().then(function(t) { e.forEach(function(e) { return de(e, t[e.MAIL_EMAIL] || {}) }) }) }, Ae = {}, de = function(e, n) { if (!e.MAIL_IMAP_PORT || e.MAIL_IMAP_PORT <= 0) throw new Error("Port missing or invalid: " + e.MAIL_IMAP_PORT); var a = e.MAIL_EMAIL; if (Ae[a]) return Ae[a]; var r = function(t) { le(e, t) }, s = c.getIMAPClient(e).then(function(e) { e.onSyncUpdate = oe.bind(null, e, a), e.onError = r, G[a] = e }).then(function() { return n || ce().then(function(e) { return e[a] }) }).then(function(e) { return v.getCache(a, e) }).then(function(e) { return G[a].mailboxCache = e || {} }).then(function() { return t.nextTick(function() { return T.addAccountIndicator(a, B) }) }).then(function() { return G[a].login() }).then(function() { return t.nextTick(function() { return T.removeAccountIndicator(a, B) }) }).then(function() { return G[a].listWellKnownFolders() }).then(function(e) { v.add(a, e); var t = i({}, a, { folders: e }); T.addFolders(t) }).then(function() { return ve(a) }).then(function() { return ne.flushBuffer(a) }).catch(r).then(function() { ne.emitChange(), delete Ae[a] }); return Ae[a] = s, s }, he = function() { for (var e in G) me(e) }, me = function(e) { if (!Ae[e]) { var n = G[e]; n && (delete G[e], ne.emitChange(), n.logout().catch(function(e) {})), delete J[e], delete Q[e], t.nextTick(function() { return T.removeAllIndicators(e) }) } }, pe = {}, fe = function(e, t) { var n = e.MAIL_EMAIL; me(n), pe[n] || (pe[n] = setTimeout(function() { delete pe[n], de(e, t) }, Z)) }, ge = function(e, t) { te(e, t), $(e) }, _e = function(e, t) { return q(e).then(function(n) { var i = n.mailboxCache[t]; i && (i.highestModseq = "0", te(e, t), $(e)) }) }, ve = function(e) { var t = {}; e ? t[e] = S.getAll()[e] : t = S.getAll(); var n = b.getSubscribedFolders(t); n.forEach(function(e) { function t(e) { e.subscribed && te(n, e.path), e.children && e.children.forEach(function(e) { return t(e) }) } var n = e.accountId, i = e.children; if (!(i.length <= 0)) { i.sort(function(e, t) { return e.type === t.type ? 0 : "All" === e.type ? 1 : "All" === t.type ? -1 : "Inbox" === e.type ? 1 : "Inbox" === t.type ? -1 : 0 }); var a = i[i.length - 1]; K[n] = a.path, i.forEach(function(e) { return t(e) }), $(n) } }) }, be = !1, Ne = function(e, t) { be && clearInterval(be), be = !!e && setInterval(ve, 6e4 * t) }; r.register(function(e) { var t = e.action; switch (t.actionType) { case s.MAIL_CONNECT_IMAP_CLIENTS: ue(); break; case s.MAIL_DISCONNECT_IMAP_CLIENTS: he(); break; case s.MAIL_CHECK_NEW_DELETED_MODIFIED: ge(t.accountId, t.path); break; case s.MAIL_RESCAN_UNREAD_FLAGS: _e(t.accountId, t.path); break; case s.MAIL_CHECK_FOR_MAIL: ve(t.accountId); break; case s.MAIL_SET_CHECK_INTERVAL: Ne(t.active, t.minutes) } }), e.exports = ne }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_387 // ========================= "use strict"; var i = n(8), a = n(6), r = n(18).EventEmitter, s = "change", o = {}, l = {}, c = Object.assign({}, r.prototype, { getAll: function() { return o }, getFolderType: function(e, t) { return l[e] && l[e][t] ? l[e][t] : u(e, t) }, emitChange: function(e) { this.emit(s, e) }, addChangeListener: function(e) { this.on(s, e) }, removeChangeListener: function(e) { this.removeListener(s, e) } }), u = function(e, t) { var n = void 0; if (o[e]) { var i = o[e].folders; for (var a in i) { var r = o[e].folders[a]; if (r.some(function(i) { if (i.path === t) return n = i.type, l[e] || (l[e] = {}), l[e][t] = n, !0 })) break } } return n ? n : t }; c.dispatchToken = i.register(function(e) { var t = e.action; switch (t.actionType) { case a.MAIL_ADD_FOLDERS: o = Object.assign({}, o, t.folders), l = {}, c.emitChange(); break; case a.MAIL_REPLACE_FOLDERS: o = t.folders, l = {}, c.emitChange() } }), e.exports = c }, function(e, t, n) { // ========================= // Function_388 // ========================= "use strict"; var i, a = n(8), r = n(6), s = n(18).EventEmitter, o = n(3), l = "change", c = Object.assign({}, s.prototype, { getSelectedFolder: function() { return i }, emitChange: function(e) { this.emit(l, e) }, addChangeListener: function(e) { this.on(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }), u = function(e) { o.set({ FOLDER_SELECTION: e }, function(t) { t && console.error("Failed to store selected folder", e, t) }) }; c.dispatchToken = a.register(function(e) { var t = e.action; switch (t.actionType) { case r.MAIL_SELECT_FOLDER: i = t.folder, u(i), c.emitChange() } }), e.exports = c }, function(e, t, n) { // ========================= // Function_389 // ========================= "use strict"; var i = n(8), a = n(6), r = n(17), s = n(18).EventEmitter, o = n(4), l = "change", c = null, u = Object.assign({}, s.prototype, { emitChange: function() { this.emit(l) }, emitChangeParam: function(e) { this.emit(l, e) }, addChangeListener: function(e) { this.on(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }); i.register(function(e) { var t = e.action; switch (t.actionType) { case a.MAIN_FULLSCREEN: u.emitChangeParam({ action: "fullscreen", url: "" }); break; case a.MAIN_SHOW_QUICKCOMMANDS: u.emitChangeParam({ action: "quickcommand", url: "" }); break; case a.MAIN_SHOW_KEYBOARDS_SHORTCUTS: u.emitChangeParam({ type: a.MAIN_SHOW_KEYBOARDS_SHORTCUTS }); break; case a.MAIN_SHOW_CONFIRM_OPEN_BOOKMARKS_DIALOG: u.emitChangeParam({ action: "confirmOpenBookmarks", options: t.options }); break; case a.MAIN_SHOW_CLEAR_BROWSING_DATA_DIALOG: u.emitChangeParam({ action: "showClearBrowsingHistory", options: t.options }); break; case a.MAIN_SHOW_IMPORT_DATA: u.emitChangeParam({ action: "importData", url: "" }); break; case a.MAIN_SHOW_EXPORT_DATA: u.emitChangeParam({ action: "exportData" }); break; case a.MAIN_SHOW_SAVE_SESSION: u.emitChangeParam({ action: "saveSession", url: "" }); break; case a.MAIN_SHOW_OPEN_SESSION: u.emitChangeParam({ action: "openSession", url: "" }); break; case a.MAIN_SHOW_PAGE_INFO: u.emitChangeParam({ action: "showPageInfo", page: e.action.page, event: e.action.event }); break; case a.MAIN_ZOOM_IN: u.emitChangeParam({ type: a.MAIN_ZOOM_IN }); break; case a.MAIN_ZOOM_OUT: u.emitChangeParam({ type: a.MAIN_ZOOM_OUT }); break; case a.MAIN_ZOOM_HALF: u.emitChangeParam({ type: a.MAIN_ZOOM_HALF }); break; case a.MAIN_ZOOM_DOUBLE: u.emitChangeParam({ type: a.MAIN_ZOOM_DOUBLE }); break; case a.MAIN_ZOOM_RESET: u.emitChangeParam({ type: a.MAIN_ZOOM_RESET }); break; case a.MAIN_TOGGLE_TAB_BAR: u.emitChangeParam({ type: a.MAIN_TOGGLE_TAB_BAR }); break; case a.MAIN_TOGGLE_ADDRESS_BAR: u.emitChangeParam({ type: a.MAIN_TOGGLE_ADDRESS_BAR }); break; case a.MAIN_TOGGLE_UI: u.emitChangeParam({ type: a.MAIN_TOGGLE_UI }); break; default: return !0 } return !0 }), o.tabs.onActivated.addListener(function(e) { if (e.windowId === window.vivaldiWindowId && void 0 !== r.getPages) { var t = r.getPages().find(function(t) { return t.get("id") === e.tabId }); t && (c = e.tabId, u.emitChangeParam({ action: "currentTab", tabId: c, page: t })) } }), e.exports = u }, function(e, t, n) { // ========================= // Function_390 // ========================= "use strict"; function i(e, t) { var n = e || T; return e && Array.isArray(e) && e.length >= S && (n = (0, p.take)(e, S)), n && t && (n = n.filter(function(e) { return e !== t })), n } function a() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; if (!Array.isArray(e)) throw TypeError("typedhistory must be an array"); return (0, p.compact)(e.map(function(e) { return "string" == typeof e ? { id: e, url: e, when: Date.now() } : e && ["id", "url", "when"].every(function(t) { return e.hasOwnProperty(t) }) ? e : null })) } function r(e) { if ("function" != typeof e) throw TypeError("loadTypedHistory: callback required"); var t = _.getSync("TYPED_SEARCH_HISTORY"); s(t, e) } function s(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : p.noop, n = T; try { e && (n = JSON.parse(e)) } catch (e) { console.warn("Unable to parse typed history JSON. TODO: fix!", e) } n && t(a(n)) } function o(e) { var t = e.page.get("id"); if (e.state) { var n = e.state.searchEngine; n && "undefined" != typeof n.Id && _.getSync("CURRENT_SEARCH_ENGINE") !== n.Id && _.set({ CURRENT_SEARCH_ENGINE: n.Id }, function() { return y.emitChange() }) } N[t] = Object.assign(N[t] || {}, (0, p.omit)(e.state, "searchEngine")), y.emitChange() } function l(e) { N[e.tabId] = void 0 } function c(e) { r(function(t) { var n = i(t, e.query); n = [{ id: e.query, url: e.query, when: Date.now() }].concat(n), _.set({ TYPED_SEARCH_HISTORY: JSON.stringify(n) }), E = n, y.emitChange() }) } function u(e) { var t = E.filter(function(t) { var n = t.url; return e !== n }); _.set({ TYPED_SEARCH_HISTORY: JSON.stringify(t) }), E = t, y.emitChange() } function A(e) { var t = e.since, n = e.dataTypes.typedHistory; if (null == n || "boolean" === !("undefined" == typeof n ? "undefined" : m(n))) throw TypeError("Typed history must be true or false"); var i = E.filter(function(e) { var n = e.when; return t - n > 0 }); _.set({ TYPED_SEARCH_HISTORY: JSON.stringify(i) }), E = i, y.emitChange() } function d() { _.remove("TYPED_SEARCH_HISTORY"), E = [], y.emitChange() } function h(e) { s(e, function(e) { E = e, y.emitChange() }) } var m = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, p = n(7), f = n(8), g = n(6), _ = n(3), v = n(18), b = v.EventEmitter, N = {}, E = [], S = 30, T = [], y = Object.assign({}, b.prototype, { emitChange: function() { this.emit(g.CHANGED) }, getSearchEngine: function(e) { return (0, p.find)(_.getSync("SEARCH_ENGINES"), { Id: _.getSync("CURRENT_SEARCH_ENGINE") }) }, getSearchText: function(e) { var t = N[e.get("id")]; return t ? t.editText || "" : "" }, getTypedSearchHistory: function() { return E }, addChangeListener: function(e) { this.on(g.CHANGED, e) }, removeChangeListener: function(e) { this.removeListener(g.CHANGED, e) } }); f.register(function(e) { var t = e.action; switch (t.actionType) { case g.SEARCH_FIELD_SET_STATE: o(t); break; case g.SEARCH_FIELD_ADD_TYPED_HISTORY: c(t); break; case g.CHROME_TABS_REMOVED: l(t); break; case g.SEARCH_FIELD_DELETE_TYPED_HISTORY: u(t.query); break; case g.NAVIGATION_HISTORY_ALL_DELETED: d(); break; case g.SEARCH_FIELD_INIT_TYPED_HISTORY: h(t.typedHistory); break; case g.BROWSING_DATA_REMOVED: (0, p.get)(t, "dataTypes.typedHistory") === !0 && A(t) } }), e.exports = y }, function(e, t, n) { // ========================= // Function_391 // ========================= "use strict"; var i = n(8), a = n(6), r = n(18).EventEmitter, s = n(138), o = n(407), l = n(625), c = l.sentDateMsgComp, u = l.threadKeyComp, A = n(49), d = n(628), h = n(246), m = n(766), p = n(2), f = n(42), g = f.ALL_MESSAGES_ACCOUNT_ID, _ = f.MAILING_LISTS_ACCOUNT_ID, v = f.MAILING_LISTS_OTHER_FOLDER, b = f.UNREAD_FOLDER_PATH, N = n(135), E = N.isUnread, S = n(3), T = n(7), y = T.cloneDeep, C = "change", I = [], O = {}, w = {}, D = void 0, k = void 0, M = void 0, L = Object.assign({}, r.prototype, { clear: function() { I = [], O = {} }, getAll: function() { return I }, getCounters: function() { return O }, getCountersForNode: function(e, t) { var n = void 0; return e && t ? O[e] && (n = O[e][t]) : n = O[e], n || { unread: 0, unseen: 0, total: 0 } }, getCountersTextForNode: function(e, t) { var n = this.getCountersForNode(e, t); return "(" + (n.unseen > 0 ? p("$1 new", "$1 new", [n.unseen]) + " in " : "") + (n.unread > 0 ? p("$1 unread", "$1 unread", [n.unread]) + " of " : "") + p("$1 message", "$1 messages", [n.total]) + ")" }, emitChange: function(e) { this.emit(C, e) }, addChangeListener: function(e) { this.on(C, e) }, removeChangeListener: function(e) { this.removeListener(C, e) }, addOneTimeChangeListener: function(e) { this.once(C, e) }, getMessagesFiltered: function(e, t) { var n = h.getFolderFilter(e, t), i = m.getOptionsFilter(), a = [], r = void 0; return I.forEach(function(e) { for (var t = 0; t < n.length; t++) if (n[t](e, r) && i(e)) { a.push(e), r = e.messageId; break } }), a } }), P = function(e, t, n, i, a) { return !e[t] || !e[t][n] || e[t][n](i, a) }, R = function(e, t, n, i, a, r) { for (var s = 0; s < a.length; s++) { var o = a[s].path, l = a[s].accountId; if (o === b) if (t < 0) { var c = y(e), u = c.flags.indexOf("\\Seen"); u > -1 && c.flags.splice(u, 1), r[g][o](c) && d(g, o, t, n, t, O) } else t > 0 && r[g][o](e) && d(g, o, t, n, t, O); else r[l][o](e) && d(l, o, t, n, i, O) } }, x = function() { return h.getAll().filter(function(e) { return e.accountId === g || e.accountId === _ }) }, B = 0, U = {}, F = !1, H = function e(t) { for (0 === B && (O = {}, U = {}, w = {}, F = !1); t.timeRemaining() - .1 > 0 && I.length > B;) { var n = I[B]; V(n), n.listId && (G(n, D, M), F = !0), B += 1 } I.length > B ? window.requestIdleCallback(e) : (B = 0, W(F), L.emitChange(), F = !1) }, V = function(e) { e.listId && (w[e.listId] || (w[e.listId] = 0), w[e.listId] += 1), U[e.accountId] || (U[e.accountId] = {}), U[e.accountId][e.path] = !0 }, W = function() { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; Object.keys(w).forEach(function(t) { if (1 === w[t]) { var n = k.filter(function(e) { return e.filterValue.listId === t }); if (n.length > 0) return; var i = D.filter(function(e) { return e.filterValue.listId === t }); if (i.length > 1) i.forEach(function(e) { e.path.startsWith(v) || D.splice(D.indexOf(e), 1) }); else if (1 === i.length) { var a = i[0]; a.path.startsWith(v) || (D.splice(D.indexOf(a), 1), a.path = v + "/" + a.path, D.push(a), e = !0) } } }), Object.keys(U).forEach(function(t) { Object.keys(U[t]).forEach(function(n) { void 0 === h.get(t, n) && (e = !0, D.push({ accountId: t, path: n, filterValue: {} })) }) }), e && A.bulkAddFilter(D) }, G = function(e, t, n) { var i = z(e), a = Y(i, t, e.listId); a && (t.push(a), n[a.accountId] || (n[a.accountId] = {}), n[a.accountId][a.path] = h.filterToFolderFilter(a)) }, K = function(e) { if (e.listId.endsWith("facebook.com")) { var t = e.subject.match(/^.*\[(.*)\].*/m); if (t && t[1] && t[1].length > 1) return "/" + t[1].replace("/", " ") } else if (e.listId.endsWith("google.com") && e.from && e.from[0]) return "/" + e.from[0].name; return "" }, j = function(e) { var t = e.match(/([0-9a-f]{32,64})\..*$/m); return t && t[1] ? e.substr(t[1].length + 1) : e }, z = function(e) { var t = e.listId.match(/^.*\.(.*\..*\..*$|^\S*$)/m), n = K(e), i = void 0; return i = t && t[1] && t[1].length > 1 ? t[1] : t && t[0] && t[0].length > 1 ? t[0] : e.listId, i = j(i) + n }, Y = function(e, t, n) { var i = t.filter(function(t) { return t.accountId === _ && (t.path === e || t.path === v + "/" + e) })[0]; return i ? i.hasOwnProperty("filterValue") && i.filterValue.hasOwnProperty("listId") && i.filterValue.listId.indexOf(n) === -1 ? (i.filterValue.listId += "," + n, i.hidden = !1, i) : void 0 : i = { accountId: _, path: e, hidden: !1, filterValue: { listId: n, name: e } } }, J = function() { return S.getSync("MAIL_SEARCH_THREADING") }, Q = function() { var e = J() ? s.getSearchListThreaded : s.getSearchList; e().then(function(e) { I = e, D = x(), k = D.slice(), M = h.getAllFolderFilters(), window.requestIdleCallback(ie), L.emitChange("addremove") }) }, Z = function() { return J() ? u : c }, q = function(e, t, n) { var i = d(e, t), a = x(), r = h.getAllFolderFilters(), s = !1; n.forEach(function(n) { n.accountId = e, n.path = t; var l = o(I, n, Z()), c = 0, u = 0, A = 0; l < 0 ? (I.splice(-l - 1, 0, n), c = E(n) || 0, u = n.unseen || 0, A = 1) : (c = E(n) - E(I[l]), u = 0, I[l] = n), V(n), n.listId && (G(n, a, r), s = !0), P(r, e, t, n) && i(c, u, A, O), R(n, c, u, A, a, r) }), s && W(s), L.emitChange("addremove") }, X = function(e, t, n) { var i = d(e, t), a = x(), r = h.getAllFolderFilters(); n.forEach(function(n) { var s = o(I, Object.assign(n, { accountId: e, path: t }), Z()); if (s >= 0) { var l = I[s], c = P(r, e, t, l); l.flags = n.flags, n.dUnseen === -1 && (l.unseen = !1); var u = P(r, e, t, l); c === u ? n.dTotal = 0 : c && !u ? n.dTotal = -1 : n.dTotal = 1, i(n.dUnread, n.dUnseen, n.dTotal, O), R(l, n.dUnread, n.dUnseen, n.dTotal, a, r), I[s] = Object.assign({}, l) } }), L.emitChange("update") }, $ = function(e) { if (e.unseen) { var t = x(), n = h.getAllFolderFilters(), i = o(I, e, Z()); I[i] = Object.assign({}, I[i], { unseen: !1 }), P(n, e.accountId, e.path, e) && d(e.accountId, e.path, 0, -1, 0, O), R(e, 0, -1, 0, t, n), s.markSeen(e), L.emitChange("seen") } }, ee = function(e, t, n) { var i = d(e, t), a = x(), r = h.getAllFolderFilters(); I = I.filter(function(s) { var o = s.accountId === e && s.path === t && n.indexOf(s.uid) > -1; return o && (P(r, e, t, s) && i(-E(s), -s.unseen, -1, O), R(s, -E(s), -s.unseen, -1, a, r)), !o }), L.emitChange("addremove") }, te = 0, ne = void 0, ie = function e(t) { for (0 === te && (O = {}); t.timeRemaining() - .1 > 0 && I.length > te;) { var n = I[te]; P(M, n.accountId, n.path, n, ne) && d(n.accountId, n.path, E(n), n.unseen, 1, O), R(n, E(n), n.unseen, 1, D, M), ne = n.messageId, te += 1 } I.length > te ? window.requestIdleCallback(e) : (te = 0, ne = void 0, L.emitChange()) }; i.register(function(e) { var t = e.action; switch (t.actionType) { case a.MAIL_REGENERATE_MAILING_LISTS: window.requestIdleCallback(H); break; case a.MAIL_FILTERS_CHANGED: i.waitFor([h.dispatchToken]), D = x(), k = D.slice(), M = h.getAllFolderFilters(), window.requestIdleCallback(ie); break; case a.MAIL_MESSAGES_INIT: Q(); break; case a.MAIL_ADD_MESSAGES: q(t.accountId, t.path, t.messages); break; case a.MAIL_UPDATE_MESSAGES: X(t.accountId, t.path, t.updates); break; case a.MAIL_MARK_SEEN: $(t.sle); break; case a.MAIL_REMOVE_MESSAGES: ee(t.accountId, t.path, t.uids) } }), e.exports = L }, function(e, t, n) { // ========================= // Function_392 // ========================= "use strict"; var i = n(8), a = n(6), r = n(18).EventEmitter, s = "change", o = Object.assign({}, r.prototype, { emitChangeParam: function(e) { this.emit(s, e) }, emitChange: function() { this.emit(s) }, addChangeListener: function(e) { this.on(s, e) }, removeChangeListener: function(e) { this.removeListener(s, e) } }); i.register(function(e) { var t = e.action; switch (t.actionType) { case a.TAB_NEW_TAB: o.emitChangeParam({ action: "newTab", url: t.url }); break; case a.TAB_NEW_BACKGROUND_TAB: o.emitChangeParam({ action: "newBackgroundTab", url: t.url }); break; case a.TAB_CLOSE_ALL_BUT_ACTIVE_TAB: o.emitChangeParam({ action: "closeAllButActiveTab" }); break; case a.TAB_SWITCH_BACK_SETTING: o.emitChangeParam({ action: "switchTabBackBySetting", maybeEvent: t.maybeEvent }); break; case a.TAB_SWITCH_FORWARD_SETTING: o.emitChangeParam({ action: "switchTabForwardBySetting", maybeEvent: t.maybeEvent }); break; case a.TAB_SWITCH_BACK_HISTORY: o.emitChangeParam({ action: "switchTabBackByHistory", maybeEvent: t.maybeEvent }); break; case a.TAB_SWITCH_FORWARD_HISTORY: o.emitChangeParam({ action: "switchTabForwardByHistory", maybeEvent: t.maybeEvent }); break; case a.TAB_SWITCH_BACK_ORDER: o.emitChangeParam({ action: "switchTabBackByOrder", maybeEvent: t.maybeEvent }); break; case a.TAB_SWITCH_FORWARD_ORDER: o.emitChangeParam({ action: "switchTabForwardByOrder", maybeEvent: t.maybeEvent }); break; case a.TAB_UNDO_RECENTLY_CLOSED: o.emitChangeParam({ action: "reopenRecentlyClosed" }); break; case a.TAB_VIEW_PAGE_SOURCE: o.emitChangeParam({ action: "viewPageSource" }); break; case a.TAB_STACK_UNTILE: o.emitChangeParam({ action: "stackUntile" }); break; case a.TAB_STACK_TILE_GRID: o.emitChangeParam({ action: "stackTileGrid" }); break; case a.TAB_STACK_TILE_HORIZONTAL: o.emitChangeParam({ action: "stackTileHorizontal" }); break; case a.TAB_STACK_TILE_VERTICAL: o.emitChangeParam({ action: "stackTileVertical" }); break; case a.TAB_TOGGLE_THUMBNAIL: o.emitChangeParam({ action: "tabThumbnail" }); break; default: return !0 } return !0 }), e.exports = o }, function(e, t, n) { // ========================= // Function_393 // ========================= "use strict"; function i(e) { return e in r ? r[e] : e } var a = n(2), r = { "Invalid URL.": a("Invalid URL."), "Nickname exists.": a("Nickname exists.") }; e.exports = i }, function(e, t, n) { // ========================= // Function_394 // ========================= "use strict"; var i = n(4), a = ["be", "gl", "is", "mk", "hy", "nn"], r = void 0; r = a.indexOf(i.i18n.getUILanguage()) === -1 ? [i.i18n.getUILanguage(), "en-US"] : ["en-US"]; var s = new Intl.DateTimeFormat(r, { year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric" }), o = new Intl.DateTimeFormat(r, { month: "short", day: "numeric", hour: "numeric", minute: "numeric" }), l = new Intl.DateTimeFormat(r, { hour: "numeric", minute: "numeric" }), c = new Intl.DateTimeFormat(r, { day: "numeric", month: "short" }), u = new Intl.DateTimeFormat(r, { day: "2-digit", month: "2-digit", year: "numeric" }); e.exports = { dateTimeLong: function(e) { return s.format(e) }, dateTimeShort: function(e) { return o.format(e) }, dateTimeRelative: function(e) { var t = new Date, n = new Date(t.getFullYear(), t.getMonth(), t.getDate()), i = new Date(t.getFullYear(), 0, 1); return e > n ? l.format(e) : e > i ? c.format(e) : u.format(e) } } }, function(e, t) { // ========================= // Function_395 // ========================= "use strict"; var n = ["mail.google.com"], i = function(e, t) { var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 999, a = "+", r = "", s = "", o = !1; if (!e || !t) return ""; for (var l in n) t.indexOf(n[l]) !== -1 && (o = !0); return r = o ? e.match(/[\(\[\{](\d+)[\}\]\)]/) : e.match(/^\((\d+)\D*?\)/), r && r[1] && r[1] > 0 && (s = parseInt(r[1])), s > i && (s = a), s }; e.exports = i }, function(e, t, n) { // ========================= // Function_396 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = n(88), r = i(a), s = function(e, t) { var n = { ctrlKey: [17], altKey: [18], metaKey: [91, 93] }; return Object.keys(n).filter(function(t) { return e[t] }).filter(function(e) { return n[e].indexOf(t.keyCode) !== -1 }).some(Boolean) }, o = function() { var e = !1; return function(t, n, i) { return i = i || null, (0, r.default)(t) ? void(e !== !0 && (e = !0, document.addEventListener("keyup", function a(r) { s(t, r) && (e = !1, n.call(i, r), document.removeEventListener("keyup", a)) }))) : void n.call(i) } }(); t.modifierIsUp = s, t.modifierUpListener = o }, function(e, t) { // ========================= // Function_397 // ========================= "use strict"; var n = { 3: "Break", 8: "Backspace", 9: "Tab", 12: "Clear", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause", 20: "Capslock", 27: "Escape", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 41: "Select", 42: "Print", 43: "Execute", 44: "PrintScreen", 45: "Insert", 46: "Del", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 58: ":", 59: "None", 60: "<", 61: "=", 63: "ß", 64: "@", 65: "A", 66: "B", 67: "C", 68: "D", 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77: "M", 78: "N", 79: "O", 80: "P", 81: "Q", 82: "R", 83: "S", 84: "T", 85: "U", 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", 91: "Meta", 92: "None", 93: "Meta", 96: "Numpad0", 97: "Numpad1", 98: "Numpad2", 99: "Numpad3", 100: "Numpad4", 101: "Numpad5", 102: "Numpad6", 103: "Numpad7", 104: "Numpad8", 105: "Numpad9", 106: "*", 107: "+", 108: ",", 109: "-", 110: ".", 111: "/", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 124: "F13", 125: "F14", 126: "F15", 127: "F16", 128: "F17", 129: "F18", 130: "F19", 131: "F20", 132: "F21", 133: "F22", 134: "F23", 135: "F24", 144: "NumLock", 145: "Scrolllock", 160: "^", 161: "!", 163: "#", 164: "$", 165: "None", 166: "BrowserBack", 167: "BrowserForward", 169: ")", 170: "*", 171: "+", 173: "None", 174: "None", 175: "None", 176: "Next", 177: "Previous", 178: "Stop", 179: "None", 180: "None", 181: "None", 182: "None", 183: "None", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "None", 193: "None", 194: ".", 219: "[", 220: "\\", 221: "]", 222: "'", 223: "`", 224: "Meta", 225: "AltGraph", 226: "None", 230: "None", 233: "None", 234: "None", 255: "None" }; e.exports = n }, function(e, t) { // ========================= // Function_398 // ========================= "use strict"; e.exports = { padLeftZeros: function(e, t) { if (e ? "number" == typeof e && (e = e.toString()) : e = "", e.length >= t) return e; for (var n = "", i = 0; i < t - e.length; i++) n += "0"; return n + e } } }, function(e, t, n) { // ========================= // Function_399 // ========================= "use strict"; var i = n(4), a = function(e, t) { i.windows.get(e, function(n) { var a = n.extData && JSON.parse(n.extData) || {}, r = JSON.stringify(Object.assign(a, t)); i.windows.update(e, { extData: r }) }) }; e.exports = a }, function(e, t) { // ========================= // Function_400 // ========================= "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }); t.createIdleListener = function() { var e = void 0, t = void 0, n = void 0, i = void 0, a = void 0; return function(r, s, o, l) { var c = (new Date).getTime(); r !== e || s !== t ? (e = r, t = s, n = c) : r === e && s === t && r !== i && s !== a && n && c - n > o && (l(), i = r, a = s, e = t = n = void 0) } } }, function(e, t, n) { // ========================= // Function_401 // ========================= "use strict"; var i = n(116), a = n(36), r = n(20), s = r.urls, o = function(e) { if (s.isInternalUrl(e.get("url"))) { var t = Object.keys(s.internals).find(function(t) { return e.get("url").startsWith(s.internals[t]) }); if (t) return s.getDisplayTitle(e) } return a.parse(i(e.get("url"))).hostname }, l = function(e, t) { var n = o(e); return [n, t.filter(function(e) { return "tab" === e.type }).filter(function(e) { return !e.getIn(["page", "pinned"]) }).filter(function(e) { return o(e.get("page")) === n })] }; e.exports = l }, function(e, t, n) { // ========================= // Function_402 // ========================= "use strict"; var i = n(4), a = function(e) { return function() { for (var t = arguments.length, n = Array(t), a = 0; a < t; a++) n[a] = arguments[a]; return new Promise(function(t, a) { e.apply(void 0, n.concat([function() { i.runtime.lastError ? a(i.runtime.lastError) : t.apply(void 0, arguments) }])) }) } }; e.exports = a }, function(e, t) { // ========================= // Function_403 // ========================= "use strict"; function n(e) { try { return decodeURI(e) } catch (t) { return e } } e.exports = n }, function(e, t) { // ========================= // Function_404 // ========================= "use strict"; function n(e) { try { return decodeURIComponent(e) } catch (t) { return e } } e.exports = n }, function(e, t) { // ========================= // Function_405 // ========================= e.exports = "‰PNG\r\n\n\0\0\0\rIHDR\0\0\0\0\0\0\b\0\0\0óÿa\0\0\0ÉIDATxÚ­Ó½\nÂ0Àq_«£»ïQ}uriA°»8§~Ì:èæøv+mCRZ(\r¥Ä\\ᤋ¹‚\rü¸’ÿ–Él¾øË¸sÖ?L´Ö«ž¥çyÇq¶Ø´mûÅ{\b!$FÈ@Ó4;#\0J©\0ڜ~ĨëúÐçºî>\fÃ;ð}ÿ\fw¬ªªŽ'2P–åµ(Š€'\"æÁ3Ïóì8q'Rʗ\ràœ¿Q–eNÜÉ@’$$˜\0\0\0\0IEND®B`‚" }, function(e, t) { // ========================= // Function_406 // ========================= e.exports = "‰PNG\r\n\n\0\0\0\rIHDR\0\0\0\0\0\0\b\0\0\0µú7ê\0\0\0©IDATxcøÏˆVÀ`ÃPÃÐ\0…)\fÌ\n€Ò\"\fìPÅàƒ© A…](\tÂ\f|\f¹\fµH°‚Á¨ “x£ùÐ[¡¤@\0ûAB‚ù`•¢¸!XAŽH‚0‚„Ê!`„,\bGÈÆÉpœX“²“²'# ‹\b»(è©ë©«ƒ0@D€¤ –ÏTP;ä2†ƒ#hÀ2Ž”Ç&\0‘¥šñÄÍ­³\0\0\0\0IEND®B`‚" }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_458 // ========================= e.exports = '\n \n \n' }, function(e, t) { // ========================= // Function_459 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_460 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_461 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_462 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_463 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_464 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_465 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_466 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_467 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_468 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_469 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_470 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_471 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_472 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_473 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_474 // ========================= e.exports = '\n \n\n' }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_548 // ========================= "use strict"; e.exports = { ar: function(e) { var t = 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : e % 100 >= 3 && e % 100 <= 10 ? 3 : e % 100 >= 11 ? 4 : 5; return t }, bar: function(e) { var t = 1 !== e; return t }, be: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 12 || e % 100 > 14) ? 1 : e % 10 === 0 || e % 10 >= 5 && e % 10 <= 9 || e % 100 >= 11 && e % 100 <= 14 ? 2 : 3; return t }, bg: function(e) { var t = 1 !== e; return t }, bs: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, "ca@valencia": function(e) { var t = 1 !== e; return t }, ca: function(e) { var t = 1 !== e; return t }, cs: function(e) { var t = 1 === e ? 0 : e >= 2 && e <= 4 ? 1 : 2; return t }, da: function(e) { var t = 1 !== e; return t }, de: function(e) { var t = 1 !== e; return t }, el: function(e) { var t = 1 !== e; return t }, en: function(e) { var t = 1 !== e; return t }, eo: function(e) { var t = 1 !== e; return t }, "es-MX": function(e) { var t = 1 !== e; return t }, "es-PE": function(e) { var t = 1 !== e; return t }, es: function(e) { var t = 1 !== e; return t }, et: function(e) { var t = 1 !== e; return t }, eu: function(e) { var t = 1 !== e; return t }, fa: function(e) { var t = 0; return t }, fi: function(e) { var t = 1 !== e; return t }, fil: function(e) { var t = e > 1; return t }, fr: function(e) { var t = e > 1; return t }, fy: function(e) { var t = 1 !== e; return t }, gd: function(e) { var t = 1 === e || 11 === e ? 0 : 2 === e || 12 === e ? 1 : e > 2 && e < 20 ? 2 : 3; return t }, gl: function(e) { var t = 1 !== e; return t }, he: function(e) { var t = 1 !== e; return t }, hi: function(e) { var t = 1 !== e; return t }, hr: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, hu: function(e) { var t = 1 !== e; return t }, hy: function(e) { var t = 1 !== e; return t }, id: function(e) { var t = 0; return t }, io: function(e) { var t = 1 !== e; return t }, is: function(e) { var t = e % 10 !== 1 || e % 100 === 11; return t }, it: function(e) { var t = 1 !== e; return t }, ja: function(e) { var t = 0; return t }, jbo: function(e) { var t = 0; return t }, ka: function(e) { var t = 0; return t }, kn: function(e) { var t = 1 !== e; return t }, ko: function(e) { var t = 0; return t }, ku: function(e) { var t = 1 !== e; return t }, ln: function(e) { var t = e > 1; return t }, lt: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, lv: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : 0 !== e ? 1 : 2; return t }, mk: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : 1; return t }, nb: function(e) { var t = 1 !== e; return t }, nl: function(e) { var t = 1 !== e; return t }, nn: function(e) { var t = 1 !== e; return t }, pl: function(e) { var t = 1 === e ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, "pt-BR": function(e) { var t = e > 1; return t }, "pt-PT": function(e) { var t = e > 1; return t }, ro: function(e) { var t = 1 === e ? 0 : 0 === e || e % 100 > 0 && e % 100 < 20 ? 1 : 2; return t }, ru: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 12 || e % 100 > 14) ? 1 : e % 10 === 0 || e % 10 >= 5 && e % 10 <= 9 || e % 100 >= 11 && e % 100 <= 14 ? 2 : 3; return t }, sc: function(e) { var t = 1 !== e; return t }, sk: function(e) { var t = 1 === e ? 0 : e >= 2 && e <= 4 ? 1 : 2; return t }, sl: function(e) { var t = e % 100 === 1 ? 0 : e % 100 === 2 ? 1 : e % 100 === 3 || e % 100 === 4 ? 2 : 3; return t }, sq: function(e) { var t = 1 !== e; return t }, "sr-Latn": function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, sr: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, sv: function(e) { var t = 1 !== e; return t }, tr: function(e) { var t = e > 1; return t }, uk: function(e) { var t = e % 10 === 1 && e % 100 !== 11 ? 0 : e % 10 >= 2 && e % 10 <= 4 && (e % 100 < 10 || e % 100 >= 20) ? 1 : 2; return t }, vi: function(e) { var t = 0; return t }, "zh-CN": function(e) { var t = 0; return t }, "zh-TW": function(e) { var t = 0; return t } } }, function(e, t, n) { // ========================= // Function_549 // ========================= "use strict"; var i = n(8), a = n(6), r = { setActiveWebView: function(e) { i.handleViewAction({ actionType: a.WEBVIEW_SET_ACTIVE, webview: e }) } }; e.exports = r }, function(e, t, n) { // ========================= // Function_550 // ========================= "use strict"; var i = n(8), a = n(6), r = { setBackgroundTasks: function(e) { i.handleViewAction({ actionType: a.BACKGROUND_TASKS_SET, tasks: e }) } }; e.exports = r }, function(e, t, n) { // ========================= // Function_551 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = n(8), r = i(a), s = n(6), o = i(s), l = n(4), c = i(l), u = n(130), A = i(u), d = n(7), h = { clearBrowsingData: function(e, t) { c.default.browsingData.remove({ since: t }, (0, d.omit)(e, "typedHistory"), function() { e.history && A.default.removeLocalHistory(t), r.default.handleViewAction({ actionType: o.default.BROWSING_DATA_REMOVED, dataTypes: e, since: t }) }) } }; e.exports = h }, function(e, t, n) { // ========================= // Function_552 // ========================= "use strict"; function i() { var e, t = function(t) { t.clipboardData.types.indexOf("text/plain") > -1 && (e = t.clipboardData.getData("text/plain"), t.preventDefault()) }; return document.addEventListener("paste", t), document.execCommand("paste"), document.removeEventListener("paste", t), e } var a = n(55), r = n(4), s = n(10), o = ["INPUT", "FRAME", "IFRAME", "OBJECT", "SELECT", "TEXTAREA", "EMBED"], l = { undo: function() { r.editcommand.execute("undo") }, redo: function() { r.editcommand.execute("redo") }, cut: function() { r.editcommand.execute("cut") }, copy: function() { r.editcommand.execute("copy") }, paste: function() { r.editcommand.execute("paste") }, selectAll: function() { r.editcommand.execute("selectAll") }, pasteAsPlainText: function() { var e = i(); o.indexOf(document.activeElement.tagName) > -1 || document.activeElement.isContentEditable ? document.execCommand("insertText", !1, e) : "WEBVIEW" === document.activeElement.tagName && document.activeElement.getFocusedElementInfo(function(t, n, i) { console.log(i), i || (window.event.preventDefault(), document.activeElement.executeScript({ code: "document.execCommand('insertText', false, " + JSON.stringify(e) + ");" })) }) }, pasteAsPlainTextOrPastAndGo: function(e) { var t = i(); document.activeElement.classList.contains("vivaldi-addressfield") ? a.doAction("urlPasteAndGo") : document.activeElement.classList.contains("vivaldi-searchfield") ? a.doAction("searchPasteAndGo") : o.indexOf(document.activeElement.tagName) > -1 || document.activeElement.isContentEditable ? document.execCommand("insertText", !1, t) : "WEBVIEW" === document.activeElement.tagName ? document.activeElement.getFocusedElementInfo(function(e, n, i) { i ? (window.event.preventDefault(), document.activeElement.executeScript({ code: "document.execCommand('insertText', false, " + JSON.stringify(t) + ");" })) : a.doAction("urlPasteAndGo") }) : a.doAction("urlPasteAndGo") }, createNoteFromSelection: function() { var e = i(); e && s.notes.create({ type: "note", content: e }) } }; e.exports = l }, function(e, t, n) { // ========================= // Function_553 // ========================= "use strict"; var i = n(4), a = n(8), r = n(6), s = r.SPATNAV_NAVIGATE, o = function(e, t) { var n = document.activeElement, r = n && "WEBVIEW" === n.tagName.toUpperCase(); if (r) { var o = { actionType: s, direction: e }; a.handleViewAction(o); var l = parseInt(n.getAttribute("tab_id")); i.tabs.sendMessage(l, o) } }; e.exports = { left: o.bind(void 0, "left"), up: o.bind(void 0, "up"), right: o.bind(void 0, "right"), down: o.bind(void 0, "down") } }, function(e, t, n) { // ========================= // Function_554 // ========================= "use strict"; var i = n(176), a = n(17), r = n(8), s = n(6), o = n(3), l = n(2), c = n(177), u = c.showNotification, A = { toggleMenuPosition: function() { o.get("SHOW_PANEL", function(e) { o.set({ SHOW_PANEL: !e }) }) }, newBackgroundTab: function(e, t, n) { n && (n.url ? e = n.url : n.source_url && (e = n.source_url)), r.handleViewAction({ actionType: s.TAB_NEW_BACKGROUND_TAB, url: e }) }, switchTabBackBySetting: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_BACK_SETTING, maybeEvent: t }) }, switchTabForwardBySetting: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_FORWARD_SETTING, maybeEvent: t }) }, switchTabBackByHistory: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_BACK_HISTORY, maybeEvent: t }) }, switchTabForwardByHistory: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_FORWARD_HISTORY, maybeEvent: t }) }, switchTabBackByOrder: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_BACK_ORDER, maybeEvent: t }) }, switchTabForwardByOrder: function(e, t) { r.handleViewAction({ actionType: s.TAB_SWITCH_FORWARD_ORDER, maybeEvent: t }) }, closeAllButActiveTab: function() { r.handleViewAction({ actionType: s.TAB_CLOSE_ALL_BUT_ACTIVE_TAB }) }, stackUntile: function() { r.handleViewAction({ actionType: s.TAB_STACK_UNTILE }) }, stackTileGrid: function() { r.handleViewAction({ actionType: s.TAB_STACK_TILE_GRID }) }, stackTileHorizontal: function() { r.handleViewAction({ actionType: s.TAB_STACK_TILE_HORIZONTAL }) }, stackTileVertical: function() { r.handleViewAction({ actionType: s.TAB_STACK_TILE_VERTICAL }) }, viewPageSource: function() { r.handleViewAction({ actionType: s.TAB_VIEW_PAGE_SOURCE }) }, toggleTabThumbnail: function() { r.handleViewAction({ actionType: s.TAB_TOGGLE_THUMBNAIL }) }, capturePage: function(e) { var t = a.getActivePage(), n = t ? t.id : 0; n && i.captureFullpage(n, "png", e, function(t) { "clipboard" === e && u({ title: l("Page Captured"), body: l("Image stored in the clipboard.") }) }) } }; e.exports = A }, function(e, t, n) { // ========================= // Function_555 // ========================= (function(e) { "use strict"; var t = n(54), i = n(94), a = n(231), r = n(129), s = n(232), o = n(65), l = n(382), c = (n(66), n(167)), u = n(15), A = n(131), d = n(130), h = n(1), m = n(11), p = n(168), f = n(74), g = n(3), _ = n(4), v = n(757), b = h.createFactory(n(636)), N = h.createFactory(n(638)), E = n(784), S = n(758), T = n(761), y = n(760), C = y.loadUASpoof, I = n(18), O = I.EventEmitter, w = n(937), D = 50, k = !1, M = void 0; M || console.time("JS init startup"); var L = function(e, t) { return e.displayName = t, M ? e : w.log(e) }; if (k) { var P = n(27), R = n(824); R(P), window.Perf = n(1038), window.onunhandledrejection = function(e) { var t = e.reason; console.warn("Unhandled Promise Rejection: ", t && (t.stack || t)), e.preventDefault() }, window.React = h } var x = function() { return new Promise(function(e) { e() }) }, B = function() { return new Promise(function(e, t) { var n = window.isPopup && window.isPopup() ? N() : b(); try { m.render(n, document.getElementById("app"), e) } catch (e) { t(e) } }) }, U = function() { var e = _.app.window.current(); if (e) { if (!M && k && g.getSync("OPEN_WINDOW_TIMESTAMP")) { var t = g.getSync("OPEN_WINDOW_TIMESTAMP"), n = (new Date).getTime(), i = n - t; console.log("Time to Window Since Last 'Open Window Command': " + i + "ms"), g.set({ OPEN_WINDOW_TIMESTAMP: 0 }) } e.show() } else console.warn("Couldn’t show hidden application window because of missing current window.") }; O.EventEmitter.defaultMaxListeners = 100, S(), C(), r.initFastForward(), L(g.loadPromise, "vivaldiSettings")().then(L(f.loadPromise, "VivaldiFeatureFlags")).then(function() { return L(x, "StartMail")() }).then(function() { return Promise.all([L(i.loadPromise, "CommandActions")(), L(u.loadPromise, "PageActions")(), L(A.loadPromise, "PanelActions")(), L(p.loadPromise, "TrashActions")(), L(c.loadPromise, "NoteActions")(), L(v, "createProfile")().then(L(t.loadPromise, "BookmarkActions")())]) }).then(function() { return B() }).then(function() { return E({ timeout: D }) }).then(function() { return U() }).then(function() { return Promise.all([L(a.loadPromise, "ContentScript")(), L(d.loadPromise.bind(d), "HistoryActions")()]); }).then(function() { return s.load() }).then(function() { return o.load() }).then(function() { T.start(), "MacIntel" === navigator.platform && l.init() }).then(function() { return !M && console.timeEnd("JS init startup") }).catch(function(t) { console.log("Startup Process Failure:", t), U(), k && e.nextTick(function() { throw t }) }) }).call(t, n(16)) }, , , , function(e, t, n) { // ========================= // Function_559 // ========================= (function(t) { "use strict"; function i(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function a(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } function r(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var s = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), o = n(117), l = n(18).EventEmitter, c = "0", u = "1", A = "2", d = "4", h = o({ Created: null, Removed: null, Changed: null, Moved: null, ChildrenReordered: null, ImportBegan: null, ImportEnded: null }), m = function e(t) { r(this, e), this.id = t.id, this.parentId = t.parentId, this.index = t.index, this.url = t.url, this.title = t.title || "", this.speeddial = t.speeddial, this.dateAdded = t.dateAdded || Date.now(), this.dateGroupModified = t.dateGroupModified, this.unmodifiable = "managed", this.trash = Boolean(t.trash), this.children = t.children || [] }, p = function(e) { function n() { r(this, n); var e = i(this, (n.__proto__ || Object.getPrototypeOf(n)).call(this)); return e.bookmarksBarFolder = new m({ id: u, title: "Bookmarks Bar" }), e.otherBookmarksFolder = new m({ id: A, title: "Other Bookmarks" }), e.trashFolder = new m({ id: d, title: "Trash", trash: !0 }), e.rootFolder = new m({ id: c, title: "", children: [e.bookmarksBarFolder, e.otherBookmarksFolder, e.trashFolder] }), e.nextId = 3, e.bookmarkItems = {}, e.bookmarkItems[e.rootFolder.id] = e.rootFolder, e.bookmarkItems[e.bookmarksBarFolder.id] = e.bookmarksBarFolder, e.bookmarkItems[e.otherBookmarksFolder.id] = e.otherBookmarksFolder, e.recentBookmarks = [], e.onChanged = { addListener: e.addEventListener.bind(e, h.Changed) }, e.onCreated = { addListener: e.addEventListener.bind(e, h.Created) }, e.onRemoved = { addListener: e.addEventListener.bind(e, h.Removed) }, e.onMoved = { addListener: e.addEventListener.bind(e, h.Moved) }, e.onChildrenReordered = { addListener: e.addEventListener.bind(e, h.ChildrenReordered) }, e.onImportBegan = { addListener: e.addEventListener.bind(e, h.ImportBegan) }, e.onImportEnded = { addListener: e.addEventListener.bind(e, h.ImportEnded) }, e } return a(n, e), s(n, [{ key: "get", value: function(e, n) { var i = this, a = [].concat(e), r = a.map(function(e) { return i.bookmarkItems[e] }); t.nextTick(function() { return n && n(r) }) } }, { key: "getTree", value: function(e) { var n = this; t.nextTick(function() { return e && e([n.rootFolder]) }) } }, { key: "getSubTree", value: function(e, n) { var i = this.bookmarkItems[e]; t.nextTick(function() { return n && n([i]) }) } }, { key: "create", value: function(e, n) { var i = this._getParent(e.parentId), a = new m({ id: String(this.nextId++), parentId: i.id, title: e.title, url: e.url, speeddial: e.speeddial }); this._addChild(i, a, e.index), this.recentBookmarks.push(a), this.bookmarkItems[a.id] = a, t.nextTick(function() { n && n(a), this.emit(h.Created, a) }.bind(this)) } }, { key: "move", value: function(e, n, i) { var a = this.bookmarkItems[e], r = a.index, s = this._getParent(a.parentId); this._removeChild(s, a); var o = this._getParent(n.parentId); this._addChild(o, a, n.index), t.nextTick(function() { i && i(a), this.emit(h.Moved, { parentId: o.id, index: a.index, oldParentId: s.id, oldIndex: r }) }.bind(this)) } }, { key: "update", value: function(e, n, i) { var a = this.bookmarkItems[e]; a.title = n.title || a.title, a.url = n.url || a.title, a.speeddial = void 0 !== n.speeddial ? n.speeddial : a.speeddial, t.nextTick(function() { i && i(a), this.emit(h.Changed, { title: a.title, url: a.url }) }.bind(this)) } }, { key: "remove", value: function(e, n) { var i = this.bookmarkItems[e]; this._removeChild(this._getParent(i.parentId), i), t.nextTick(function() { n && n(i), this.emit(h.Removed, { parentId: i.parentId, index: i.index }) }.bind(this)) } }, { key: "removeTree", value: function(e, n) { var i = this.bookmarkItems[e]; this._removeChild(this._getParent(i.parentId), i), this._removeChildren(i), t.nextTick(function() { return n && n() }) } }, { key: "getChildren", value: function(e, n) { var i = this.bookmarkItems[e]; t.nextTick(function() { return n && n(i.children) }) } }, { key: "search", value: function(e, t) { t && t([]) } }, { key: "getRecent", value: function(e, n) { t.nextTick(function() { n && n(this.recentBookmarks.reverse().slice(0, e)) }.bind(this)) } }, { key: "addEventListener", value: function(e, t) { this.on(e, t) } }, { key: "_getParent", value: function(e) { return e && this.bookmarkItems[e] ? this.bookmarkItems[e] : this.otherBookmarksFolder } }, { key: "_addChild", value: function(e, t, n) { n ? e.children.splice(n, 0, t) : e.children = (e.children || []).concat(t), this._updateIndexes(e) } }, { key: "_removeChild", value: function(e, t) { e.children = e.children.filter(function(e) { return e !== t }), this._updateIndexes(e) } }, { key: "_removeChildren", value: function(e) { var t = this; e.children.forEach(function(e) { return t._removeChildren(e) }), e.children = null } }, { key: "_updateIndexes", value: function(e) { for (var t = 0; t < e.children.length; t++) e.children.index = t } }]), n }(l); e.exports = p }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_560 // ========================= (function(t) { "use strict"; var i = n(559), a = n(561), r = n(562), s = n(563); window.vivaldiWindowId = 42, window.isPopup = function() { return !1 }; var o = function() {}, l = { addListener: o, removeListener: o }, c = new r, u = new s(c), A = { app: { window: { current: function() { return { isFullscreen: function() { return !1 }, isMaximized: function() { return !0 }, onMaximized: l, onMinimized: l, onFullscreened: l, onRestored: l, show: o } } } }, bookmarks: new i, contextMenus: { create: o, update: o, remove: o, removeAll: o, onClicked: l }, declarativeWebRequest: { onRequest: { removeRules: o, addRules: o }, RequestMatcher: o, SetRequestHeader: o }, downloads: { onCreated: l, onChanged: l, onErased: l, onDeterminingFilename: l, search: o, setShelfEnabled: o, pause: o, resume: o, erase: o }, extension: { getURL: function(e) { return e } }, extensionActionUtils: { onAdded: l, onRemoved: l, onUpdated: l, onIconLoaded: l, getToolbarExtensions: o }, history: { search: function(e, t) { t([]) }, onVisited: l, onVisitRemoved: l }, i18n: { getMessage: function(e, t) { return "" }, getUILanguage: function() { return "en-US" } }, identity: { launchWebAuthFlow: function(e, t) { var n = "https://mpognobbkildjkofajifpdfhcoklimli.chromiumapp.org/", i = Math.random().toString(36); t(n + "#access_token=" + i + "&token_type=Bearer&expires_in=3600") } }, notifications: { create: o, update: o, clear: o, getAll: o, getPermissionLevel: o, onClosed: l, onClicked: l, onButtonClicked: l, onPermissionLevelChanged: l, onShowSettings: l }, runtime: { sendMessage: o, onMessage: l, getPlatformInfo: o, getPackageDirectoryEntry: o }, sessions: { getRecentlyClosed: function(e) { return e([]) }, onChanged: l }, topSites: { get: function(e) { t.nextTick(e.bind(this, [])) } }, savedpasswords: { getSavedPasswordList: function(e) { return [] } }, storage: a, tabs: c, windows: u, contentSettings: { popups: { set: o, get: o }, javascript: { set: o, get: o } }, commandLinePrivate: { hasSwitch: o } }; e.exports = window.chrome_mock = A }).call(t, n(16)) }, function(e, t) { // ========================= // Function_561 // ========================= "use strict"; var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, i = {}, a = [], r = { onChanged: { addListener: function(e) { a.push(e) }, removeListener: function(e) { var t = a.indexOf(e); t > -1 && a.splice(t, 1) } }, local: { get: function(e, t) { var a = {}; if (null === e) Object.assign(a, i); else if ("string" == typeof e) a[e] = i[e]; else if (Array.isArray(e)) e.forEach(function(e) { return a[e] = i[e] }); else { if ("object" !== ("undefined" == typeof e ? "undefined" : n(e))) throw Error("StorageMock.local.get Error: keys type not correct"); Object.keys(e).forEach(function(t) { return a[t] = i[t] ? i[t] : e[t] }) } t(a) }, getBytesInUse: function(e, t) { t(0) }, set: function(e, t) { var n = {}; Object.keys(e).forEach(function(t) { n[t] = { oldValue: i[t], newValue: e[t] }, i[t] = e[t] }), a.forEach(function(e) { return e(n, "local") }), t && t() }, remove: function(e, t) { if ("string" == typeof e && (e = [e]), !Array.isArray(e)) throw Error("StorageMock.local.remove Error: keys type not correct"); ! function() { var n = {}; e.forEach(function(e) { n[e] = { oldValue: i[e], newValue: void 0 }, delete i[e] }), a.forEach(function(e) { return e(n, "local") }), t && t() }() }, clear: function(t) { e.exports.local.remove(Object.keys(i)) } } }; e.exports = r }, function(e, t, n) { // ========================= // Function_562 // ========================= (function(t) { "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var a = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), r = n(117), s = n(27), o = n(18), l = o.EventEmitter, c = function() {}, u = r({ Created: null, Updated: null, Moved: null, SelectionChanged: null, ActiveChanged: null, Activated: null, HighlightChanged: null, Highlighted: null, Detached: null, Attached: null, Removed: null, Replaced: null, ZoomChange: null }), A = s.fromJS({ id: void 0, index: void 0, windowId: window.vivaldiWindowId, openerTabId: void 0, selected: !1, highlighted: !1, active: !1, pinned: !1, url: "", title: "", status: "", incognito: !1, width: void 0, height: void 0, sessionId: void 0 }), d = 0, h = function() { function e() { var t = this; i(this, e), this._tabs = s.List(), this.eventEmitter = new l, this.eventEmitter.setMaxListeners(1e3), Object.keys(u).forEach(function(e) { t["on" + e] = { addListener: t.addEventListener.bind(t, u[e]) } }) } return a(e, [{ key: "addEventListener", value: function(e, t) { this.eventEmitter.on(e, t) } }, { key: "get", value: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c; t(this._tabs.find(function(t) { return t.id === e })) } }, { key: "getCurrent", value: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : c; e(this._tabs.first()) } }, { key: "connect", value: function(e, t) {} }, { key: "sendMessage", value: function(e, t, n, i) {} }, { key: "duplicate", value: function(e) { arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c } }, { key: "highlight", value: function(e, t) {} }, { key: "sendRequest", value: function(e, t, n) {} }, { key: "getSelected", value: function(e, t) {} }, { key: "getAllInWindow", value: function(e, t) {} }, { key: "create", value: function(e) { var n = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c, a = { active: !0, pinned: !1 }, r = A.merge({ id: d++ }).merge(a).merge(e); this._tabs = this._tabs.push(r), this._tabs = this._tabs.map(function(e, t) { return e.set("index", t) }), r.get("active") && (this._tabs = this._tabs.map(function(e) { return e.set("active", e.get("id") === r.get("id")) })), r = this._tabs.find(function(e) { return e.get("id") === r.get("id") }), t.nextTick(function() { i(r.toJS()), n.eventEmitter.emit(u.Created, r.toJS()), r.get("active") && n.eventEmitter.emit(u.Activated, { tabId: r.get("id"), windowId: r.get("windowId") }) }) } }, { key: "query", value: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c, n = s.fromJS(e); t(this._tabs.filter(function(e) { return n.isSubset(e) }).toJS()) } }, { key: "update", value: function(e, n) { var i = this, a = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : c, r = s.fromJS(n); this._tabs = this._tabs.map(function(t) { return t.get("id") === e ? t.merge(r) : t }); var o = this._tabs.find(function(t) { return t.get("id") === e }); t.nextTick(function() { a(o) }), t.nextTick(function() { i.eventEmitter.emit(u.Updated, o.get("id"), { status: "complete", url: o.get("url"), pinned: o.get("pinned") }, o.toJS()) }), o.get("active") && t.nextTick(function() { i.eventEmitter.emit(u.Activated, { tabId: o.get("id"), windowId: window.vivaldiWindowId }) }) } }, { key: "move", value: function(e, t, n) {} }, { key: "reload", value: function(e, t, n) {} }, { key: "remove", value: function(e) { var n = this, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : c, a = Array.isArray(e) ? e : [e]; this._tabs.filter(function(e) { return !a.find(function(t) { return t === e.id }) }), t.nextTick(function() { i(), a.forEach(function(e) { n.eventEmitter.emit(u.Removed, e, { windowId: 42, isWindowClosing: n._tabs.isEmpty() }) }), n._tabs.isEmpty() || n._tabs.find(function(e) { return e.get("active") }) || n.update(n._tabs.getIn([-1, "id"]), { active: !0 }) }) } }, { key: "detectLanguage", value: function(e, t) {} }, { key: "captureVisibleTab", value: function(e, t, n) {} }, { key: "executeScript", value: function(e, t, n) {} }, { key: "insertCSS", value: function(e, t, n) {} }, { key: "setZoom", value: function(e, t, n) {} }, { key: "getZoom", value: function(e, t) {} }, { key: "setZoomSettings", value: function(e, t, n) {} }, { key: "getZoomSettings", value: function(e, t) {} }]), e }(); e.exports = h }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_563 // ========================= (function(t) { "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var a = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), r = n(117), s = n(18), o = s.EventEmitter, l = r({ onCreated: null, onRemoved: null, onFocusChanged: null }), c = function() { function e(t) { var n = this; i(this, e), this.chromeTabs = t, this.WINDOW_ID_NONE = -1, this.WINDOW_ID_CURRENT = -2, this.windows = {}, this.windows[window.vivaldiWindowId] = { id: window.vivaldiWindowId, extData: "" }, this.eventEmitter = new o, Object.keys(l).forEach(function(e) { n["on" + e] = { addListener: n.addEventListener.bind(n, l[e]) } }) } return a(e, [{ key: "addEventListener", value: function(e, t) { this.eventEmitter.on(e, t) } }, { key: "get", value: function(e, n, i) { var a = this.windows[e]; a && n.populate && (a.tabs = this.chromeTabs._tabs); var r = "function" == typeof n ? n : i; "function" == typeof r && t.nextTick(function() { return r(a) }) } }, { key: "getCurrent", value: function(e, t) {} }, { key: "getLastFocused", value: function(e, t) {} }, { key: "getAll", value: function(e, t) {} }, { key: "create", value: function(e, t) {} }, { key: "update", value: function(e, t, n) {} }, { key: "remove", value: function(e, t) {} }]), e }(); e.exports = c }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_564 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/actionlog/ActionLog.jsx", a = n(1), r = n(762), s = n(26), o = n(30), l = a.createClass({ displayName: "ActionLog", getInitialState: function() { return { actionLog: "" } }, _actionLoggerChanged: function() { this.setState({ actionLog: r.getAction() }) }, componentWillMount: function() { r.addChangeListener(this._actionLoggerChanged) }, componentWillUnmount: function() { r.removeChangeListener(this._actionLoggerChanged) }, getContextMenuItems: function() { return [Object.assign({ handler: r.clear.bind(r) }, o("Clear"))] }, render: function() { return a.createElement("div", { className: "actionlog", id: "action_logger", tabIndex: "0", onContextMenu: s(this.getContextMenuItems), __source: { fileName: i, lineNumber: 36 } }, a.createElement("textarea", { className: "actionlogs", readOnly: "true", value: this.state.actionLog, __source: { fileName: i, lineNumber: 38 } })) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_565 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/bookmarks-manager/bookmarks-manager.jsx", a = n(1), r = n(11), s = n(351), o = n(352), l = n(50), c = n(169), u = n(96), A = n(98), d = n(69), h = n(3), m = n(2), p = n(4), f = n(26), g = n(108), _ = g.PLACEHOLDER_URL, v = [{ text: m("Title"), value: "title", fullScreenTitle: m("Sort by Title") }, { text: m("Address"), value: "url", fullScreenTitle: m("Sort by Address") }, { text: m("Nickname"), value: "nickname", fullScreenTitle: m("Sort by Nickname") }, { text: m("Description"), value: "description", fullScreenTitle: m("Sort by Description") }], b = a.createClass({ displayName: "BookmarksManager", getInitialState: function() { return { parentSelectedId: null, filter: "", bookmarkSorting: { sortOrder: A.NO_SORTING, sortField: "manually" }, isCreating: !1 } }, componentWillMount: function() { var e = this; h.get("BOOKMARKS_MANAGER_BOOKMARKSSORT", function(t) { e.onSortChange(t.sortOrder, t.sortField) }) }, getDefaultProps: function() { return { open: !0 } }, isFolder: function(e) { return e.children && e.children.length > 0 || void 0 === e.url }, onSortChange: function(e, t) { var n = d(this.state, { bookmarkSorting: { sortOrder: { $set: e }, sortField: { $set: t } } }); this.setState(n); var i = { sortOrder: e, sortField: t }; h.set({ BOOKMARKS_MANAGER_BOOKMARKSSORT: i }) }, toggleSpeeddial: function(e) { p.bookmarks.update(e.id, { speeddial: !e.speeddial }, function(e) {}) }, importData: function() { l.showImportData() }, onFocusTree: function() { r.findDOMNode(this.refs.tree).focus() }, onSelect: function(e) { e && this.refs.editor.setItem(e), !this.state.isCreating || e && e.url === _ || this.setState({ isCreating: !1 }) }, onCreate: function(e) { e && this.setState({ isCreating: !0 }) }, onUpdate: function() { this.state.isCreating && this.setState({ isCreating: !1 }) }, removeIfCreating: function(e) { this.state.isCreating && (e && p.bookmarks.remove(e, function() { p.bookmarks.remove(e) }), this.refs.tree.selectNextAfterDelete(), this.setState({ isCreating: !1 })) }, getSelectedItem: function() { return this.refs.tree.getSelectedItem() }, deleteItem: function() { this.refs.tree.onDelete() }, updateThumbnailHandler: function() { var e = this.refs.tree.getSelectedBookmarks(), t = !0, n = !1, i = void 0; try { for (var a, r = e[Symbol.iterator](); !(t = (a = r.next()).done); t = !0) { var s = a.value; this._updateThumbnail(s) } } catch (e) { n = !0, i = e } finally { try { !t && r.return && r.return() } finally { if (n) throw i } } }, _updateThumbnail: function(e) { if (this.isFolder(e)) for (var t = 0; t < e.children.length; t++) this._updateThumbnail(e.children[t]); else u.updateBookmarkThumbnail(e) }, onSearchChange: function(e) { this.setState({ filter: e.target.value }) }, createBookmark: function() { this.refs.tree.onAdd(!1) }, createFolder: function() { this.refs.tree.onAdd(!0) }, onContextMenu: function(e) { this.refs.tree.unSelectAll(), f(this.refs.tree.getRootContextMenuItems())(e) }, render: function() { return this.props.open ? a.createElement("div", { className: "manager", ref: "panelElement", style: this.props.style, __source: { fileName: i, lineNumber: 184 } }, a.createElement("div", { className: "manager-content", __source: { fileName: i, lineNumber: 187 } }, a.createElement("div", { className: "toolbar-wrapper", __source: { fileName: i, lineNumber: 188 } }, a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 189 } }, a.createElement("button", { className: "button-toolbar add", onClick: this.createBookmark, __source: { fileName: i, lineNumber: 190 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 192 } }), a.createElement("span", { className: "buttontext", __source: { fileName: i, lineNumber: 193 } }, m("New Bookmark"))), a.createElement("button", { className: "button-toolbar folder", onClick: this.createFolder, __source: { fileName: i, lineNumber: 195 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(216) }, __source: { fileName: i, lineNumber: 197 } }), a.createElement("span", { className: "buttontext", __source: { fileName: i, lineNumber: 198 } }, m("New Folder"))), a.createElement("button", { className: "button-toolbar delete", onClick: this.deleteItem, __source: { fileName: i, lineNumber: 200 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 202 } }), a.createElement("span", { className: "buttontext", __source: { fileName: i, lineNumber: 203 } }, m("other", "Delete"))), a.createElement("button", { className: "button-toolbar import", onClick: this.importData, __source: { fileName: i, lineNumber: 205 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(1014) }, __source: { fileName: i, lineNumber: 207 } }), a.createElement("span", { className: "buttontext", __source: { fileName: i, lineNumber: 208 } }, m("Import..."))), a.createElement("button", { className: "button-toolbar updatethumb", onClick: this.updateThumbnailHandler, __source: { fileName: i, lineNumber: 210 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(1020) }, __source: { fileName: i, lineNumber: 212 } }), a.createElement("span", { className: "buttontext", __source: { fileName: i, lineNumber: 213 } }, m("Update Thumbnails"))), a.createElement("div", { className: "bookmark-filter", __source: { fileName: i, lineNumber: 215 } }, a.createElement("input", { value: this.state.filter, onChange: this.onSearchChange, type: "search", placeholder: m("Search..."), __source: { fileName: i, lineNumber: 216 } })))), a.createElement(c, { fields: v, onSortChange: this.onSortChange, fullsize: !0, sortField: this.state.bookmarkSorting.sortField, sortOrder: this.state.bookmarkSorting.sortOrder, __source: { fileName: i, lineNumber: 224 } }), a.createElement("div", { className: "manager-treeview", __source: { fileName: i, lineNumber: 230 } }, a.createElement("div", { className: "vivaldi-tree-container", onContextMenu: this.onContextMenu, __source: { fileName: i, lineNumber: 232 } }, a.createElement(o, { filter: this.state.filter, ref: "tree", fullView: !0, inManager: !0, onEdit: this.onSelect, onToggleSpeeddial: this.toggleSpeeddial, onSelect: this.onSelect, onCreate: this.onCreate, sorting: this.state.bookmarkSorting, __source: { fileName: i, lineNumber: 234 } })))), a.createElement(s, { ref: "editor", getSelectedItem: this.getSelectedItem, removeIfCreating: this.removeIfCreating, onUpdate: this.onUpdate, onFocusTree: this.onFocusTree, __source: { fileName: i, lineNumber: 246 } })) : a.createElement("span", { __source: { fileName: i, lineNumber: 180 } }) } }); e.exports = b }, function(e, t, n) { // ========================= // Function_566 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/bookmarks/bookmarksPanel.jsx", a = n(1), r = n(11), s = n(69), o = n(352), l = n(351), c = n(58), u = n(134), A = n(3), d = n(13), h = n(169), m = n(98), p = n(2), f = n(4), g = n(5), _ = n(113), v = n(26), b = n(21), N = 174, E = 174, S = 600, T = n(108), y = T.PLACEHOLDER_URL, C = [{ text: p("Title"), value: "title", fullScreenTitle: p("Sort by Title") }, { text: p("Address"), value: "url", fullScreenTitle: p("Sort by Address") }, { text: p("Nickname"), value: "nickname", fullScreenTitle: p("Sort by Nickname") }, { text: p("Description"), value: "description", fullScreenTitle: p("Sort by Description") }, { text: p("Created"), value: "dateAdded", fullScreenTitle: p("Sort by Date Created") }], I = a.createClass({ displayName: "BookmarksPanel", mixins: [d], vivaldiSettingsKeys: ["BOOKMARKS_EDITOR_HEIGHT", "KEY_ACCESS"], getInitialState: function() { return { filter: "", editor: !1, bookmarkSorting: { sortOrder: m.NO_SORTING, sortField: "manually", comparator: this.sortComparator } } }, componentWillMount: function() { var e = this; A.get("BOOKMARKS_PANEL_BOOKMARKSSORT", function(t) { e.onSortChange(t.sortOrder, t.sortField) }) }, componentDidMount: function() { c.addChangeListener(this.onPanelStoreChange) }, componentWillUnmount: function() { c.removeChangeListener(this.onPanelStoreChange) }, componentDidUpdate: function(e, t) { !e.open && this.props.open && r.findDOMNode(this.refs.tree).focus() }, shouldComponentUpdate: function(e, t) { return b(this, e, t) }, onPanelStoreChange: function(e) { this.props.open && "setFocus" === e && !_(r.findDOMNode(this)) && r.findDOMNode(this.refs.tree).focus() }, onSelect: function(e) { this.state.editor ? e ? this.refs.editor.setItem(e) : this.toggleEdit() : this._isCreating && this.toggleEdit(e), this._isCreating && (this.isFolder(e) && e.title || !this.isFolder(e) && (!e || e.url !== y)) && (this._isCreating = !1) }, addBookmark: function() { this.onAdd(!1) }, addFolder: function() { this.onAdd(!0) }, onAdd: function(e) { this.refs.tree.onAdd(e) }, onCreate: function(e) { e && (this._isCreating = !0) }, onUpdate: function() { this._isCreating = !1 }, removeIfCreating: function(e) { this._isCreating && (e && f.bookmarks.remove(e, function() { f.bookmarks.remove(e) }), this._isCreating = !1) }, focusTree: function() { var e = this; this.setState({ editor: !1 }, function() { r.findDOMNode(e.refs.tree).focus() }) }, deleteItem: function() { this.refs.tree.onDelete(), this.state.editor && this.toggleEdit() }, onEdit: function() { this.toggleEdit() }, toggleEdit: function(e) { var t = this; e = e || this.refs.tree.getSelectedItem(), (this.state.editor || e) && this.setState({ editor: !this.state.editor }, function() { t.state.editor ? (t.refs.editor.setItem(e), t.refs.tree.scrollToId(e.id)) : t.refs.tree.forceUpdate() }) }, toggleSpeeddial: function(e) { f.bookmarks.update(e.id, { speeddial: !e.speeddial }) }, onSortChange: function(e, t) { var n = s(this.state, { bookmarkSorting: { sortOrder: { $set: e }, sortField: { $set: t } } }); this.setState(n); var i = { sortOrder: e, sortField: t }; A.set({ BOOKMARKS_PANEL_BOOKMARKSSORT: i }) }, sortComparator: function(e, t) { if (e.trash) return 1; if (t.trash) return -1; if (this.isFolder(e) && !this.isFolder(t)) return -1; if (this.isFolder(t) && !this.isFolder(e)) return 1; var n = this.state.bookmarkSorting, i = n.sortOrder, a = n.sortField, r = m.getDefaultComparator(i, a); return r(e, t) }, collapseAll: function() { this.refs.tree.collapseAllFolders() }, expandAll: function() { this.refs.tree.expandAllFolders() }, onSlidebarPosition: function(e, t) { var n = r.findDOMNode(this.refs.bookmarksEditor), i = n.getBoundingClientRect(), a = i.bottom - t; a > S ? a = S : a < E && (a = E), this.state.BOOKMARKS_EDITOR_HEIGHT && this.state.BOOKMARKS_EDITOR_HEIGHT > a && this.refs.tree.forceUpdate(), A.set({ BOOKMARKS_EDITOR_HEIGHT: a }) }, resizeToDefault: function() { A.set({ BOOKMARKS_EDITOR_HEIGHT: N }) }, isFolder: function(e) { return !(!e || !e.children && e.url) }, getSelectedItem: function() { return this.refs.tree.getSelectedItem() }, onContextMenu: function(e) { this.refs.tree.unSelectAll(), v(this.refs.tree.getRootContextMenuItems())(e) }, onSearchChange: function(e) { this.setState({ filter: e.target.value }) }, render: function() { if (!this.props.open) return null; var e = g({ "button-toolbar": !0, edit: !0, active: this.state.editor }); return a.createElement("div", { className: "panel panel-bookmarks", ref: "bookmarkPanelElement", __source: { fileName: i, lineNumber: 282 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 283 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 284 } }, p("Bookmarks")), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 286 } }, a.createElement("input", { type: "search", placeholder: p("Search..."), value: this.state.filter, onChange: this.onSearchChange, __source: { fileName: i, lineNumber: 287 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 291 } }, a.createElement("button", { className: "button-toolbar add", title: p("New Bookmark"), tabIndex: this.props.keyAccess, onClick: this.addBookmark, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 292 } }), a.createElement("button", { className: "button-toolbar folder", title: p("New Folder"), tabIndex: this.props.keyAccess, onClick: this.addFolder, dangerouslySetInnerHTML: { __html: n(216) }, __source: { fileName: i, lineNumber: 297 } }), a.createElement("button", { className: "button-toolbar delete", title: p("other", "Delete"), tabIndex: this.props.keyAccess, onClick: this.deleteItem, dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 302 } }), a.createElement("button", { className: e, title: p("verb", "Edit"), tabIndex: this.props.keyAccess, onClick: this.onEdit, dangerouslySetInnerHTML: { __html: n(217) }, __source: { fileName: i, lineNumber: 307 } })))), a.createElement(h, { fields: C, onSortChange: this.onSortChange, keyAccess: this.props.keyAccess, sortField: this.state.bookmarkSorting.sortField, sortOrder: this.state.bookmarkSorting.sortOrder, __source: { fileName: i, lineNumber: 317 } }), a.createElement("section", { onContextMenu: this.onContextMenu, __source: { fileName: i, lineNumber: 324 } }, a.createElement(o, { ref: "tree", filter: this.state.filter, fullView: !1, inManager: !1, onToggleSpeeddial: this.toggleSpeeddial, onEdit: this.onEdit, onSelect: this.onSelect, onCreate: this.onCreate, sorting: this.state.bookmarkSorting, __source: { fileName: i, lineNumber: 326 } })), this.state.editor && a.createElement("section", { className: "panel-bookmarks-edit limited", ref: "bookmarksEditor", style: { flexBasis: this.state.BOOKMARKS_EDITOR_HEIGHT || N }, __source: { fileName: i, lineNumber: 337 } }, a.createElement(u, { onSlidebarPosition: this.onSlidebarPosition, onDoubleClick: this.resizeToDefault, position: "bottom", __source: { fileName: i, lineNumber: 340 } }), a.createElement(l, { ref: "editor", getSelectedItem: this.getSelectedItem, removeIfCreating: this.removeIfCreating, onUpdate: this.onUpdate, onFocusTree: this.focusTree, __source: { fileName: i, lineNumber: 344 } }))) } }); e.exports = I }, function(e, t, n) { // ========================= // Function_567 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/bookmarksbar/bookmarksbar.jsx", a = n(1), r = n(69), s = n(54), o = n(51), l = n(40), c = n(568), u = n(45), A = n(17), d = n(178), h = n(98), m = n(3), p = n(2), f = n(4), g = n(26), _ = n(249), v = n(30), b = a.createClass({ displayName: "BookmarksBar", clipboardItem: {}, dropMode: { support: !1, copy: !1 }, getInitialState: function() { return { bookmarksData: o.getBookmarksBarNodes(), dragoverBookmarkObj: { id: -1 }, width: document.documentElement.clientWidth, bookmarkSorting: { sortOrder: h.NO_SORTING, sortField: "manually" }, cutIds: o.getCutIds(), editId: -1, newItemAdded: !1, renderedArray: [] } }, componentWillReceiveProps: function(e) { e.display !== this.props.display && this._onStoreChange() }, _onStoreChange: function() { var e = o.getBookmarksBarNodes(), t = this.getRenderedItems(e, this.state.bookmarkSorting, this.state.newItemAdded === !0 ? this.state.editId : -1); this.setState({ bookmarksData: e, renderedArray: t, cutIds: o.getCutIds() }) }, getRenderedItems: function(e, t, n) { var i = _(e); if (i.length > 0 && t && t.sortOrder >= h.ASCENDING_SORT && (h.treeSort(i, h.getDefaultComparator(t.sortOrder, t.sortField)), n !== -1)) { var a = i.findIndex(function(e) { return e.id === n }); a !== -1 && i.splice(0, 0, i.splice(a, 1)[0]) } return i }, componentWillMount: function() { var e = this; m.get("BOOKMARKS_BAR_BOOKMARKSSORT", function(t) { e._onSortChange(t.sortOrder, t.sortField) }), o.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { o.removeChangeListener(this._onStoreChange) }, onKeyDown: function(e) { e.keyCode === u.KEY_ESCAPE && this.resetDragoverObj() }, openItem: function(e, t, n) { var i = l.getOpenOptionsFromEvent(t); i.bookmarks = l.getBookmarksByNode(e), l.open(i, !0) }, showDropMenu: function(e, t) { var n = this, i = function e(t) { if (t.children) { var i = []; return t.children.length > 0 && (t.children.forEach(function(t) { i.push(e(t)) }), i.push({ name: "---" })), i.push({ name: p("Add Active Tab"), handler: s.bookmarkPageInFolder.bind(n, A.getActivePage(), t.id) }), { mnemonic: !1, name: n.trimTitle(t.title), bookmarkFolder: !0, items: i } } return { mnemonic: !1, name: n.trimTitle(t.title), url: t.url, handler: n.openItem.bind(null, t) } }; if (e.children) { var a = []; return e.children.length > 0 && (e.children.forEach(function(e) { a.push(i(e, this)) }.bind(this)), a.push({ name: "---" })), a.push({ name: p("Add Active Tab"), handler: s.bookmarkPageInFolder.bind(this, A.getActivePage(), e.id) }), { mnemonic: !1, bookmarkFolder: !0, name: e.title, items: a } } var r = {}; return r.mnemonic = !1, r.name = e.title, r.url = e.url, r.handler = this.openItem.bind(null, e), r }, trimTitle: function(e) { return e.length > 50 ? e.substring(0, 50) + "..." : e }, onButtonRendered: function(e, t) { for (var n = this.state.renderedArray, i = 0; i < n.length; i++) if (n[i].id === e) { if (n[i].buttonWidth !== t && this.state.editId === -1) { var a = this.state.renderedArray.slice(); a[i].buttonWidth = t, this.setState({ renderedArray: a }) } break } }, onResize: function(e) { var t = e[0].target; this.setState({ width: Math.floor(t.clientWidth) }) }, _createNewTopFolder: function() { var e = this, t = { parentId: o.getBookmarkBarFolderId(), title: p("New Folder"), index: 0, url: "" }; f.bookmarks.create(t, function(t) { f.runtime.lastError || e.setState({ editId: t.id, newItemAdded: !0 }) }) }, resetDragoverObj: function() { this.setState({ dragoverBookmarkObj: { id: -1, position: "", index: null } }) }, onEditChanged: function(e) { if (e === -1) { var t = this.getRenderedItems(this.state.bookmarksData, this.state.bookmarkSorting, -1); this.setState({ renderedArray: t, newItemAdded: !1, editId: -1 }) } else this.setState({ editId: e }) }, onDragEndBookmark: function() { this.draggedId = -1, this.resetDragoverObj() }, onDropBar: function(e) { e.preventDefault(), e.stopPropagation(), this.dropMode.support ? ! function() { var t = l.getMimeType(); if (e.dataTransfer.types.findIndex(function(e) { return e === t }) !== -1) { var n = JSON.parse(e.nativeEvent.dataTransfer.getData(t)); l.isCopyModifierPressed(e) ? s.copyBookmarks(n, o.getBookmarkBarFolderId(), o.getBookmarksBarNodes().length) : s.moveBookmarksPromise(n, o.getBookmarkBarFolderId(), o.getBookmarksBarNodes().length) } else l.getUrlsFromEventPromise(e, !1).then(function(e) { return s.createBookmarks(e, o.getBookmarkBarFolderId(), o.getBookmarksBarNodes().length) }) }() : l.getUrlsFromEventPromise(e, !1).then(function(e) { return s.createBookmarks(e, o.getBookmarkBarFolderId(), o.getBookmarksBarNodes().length) }), this.resetDragoverObj() }, onDragEnter: function(e) { this.dropMode = this.supportDropForEvent(e) }, onDragOverBar: function(e) { e.preventDefault(), e.stopPropagation(), this.dropMode.support && (e.dataTransfer.dropEffect = this.dropMode.copy ? "copy" : "move") }, onDragOver: function(e, t) { if (e.id !== this.draggedId) { var n = ""; if (this.state.bookmarkSorting.sortOrder === h.NO_SORTING) { var i = t.currentTarget.getBoundingClientRect(), a = (t.clientX - i.left) / i.width; n = this.isFolder(e) ? a <= .33 ? "left" : a > .66 ? "right" : "on" : a <= .5 ? "left" : "right"; } else this.isFolder(e) && (n = "on"); (this.state.dragoverBookmarkObj.id !== e.id || this.state.dragoverBookmarkObj.id === e.id && this.state.dragoverBookmarkObj.position !== n) && this.setState({ dragoverBookmarkObj: { id: e.id, position: n, index: e.index } }) } }, onDragStart: function(e) { this.draggedId = e }, supportDropForEvent: function(e) { var t = l.getMimeType(), n = {}; return n.support = e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || e === t }), n.copy = n.support && (l.isCopyModifierPressed(e) || !e.dataTransfer.types.some(function(e) { return e === t })), n }, findBookmarkItem: function(e) { var t = {}, n = function n(i) { return i.id === e ? t = i : void(i.children && i.children.forEach(function(e) { n(e) })) }; return this.state.bookmarksData.forEach(function(e) { n(e) }.bind(this)), t }, isFolder: function(e) { return !!e && (e.children && e.children.length > 0 || void 0 === e.url) }, onCut: function(e) { s.cut(e, [this.clipboardItem.id]), e.stopPropagation(), e.preventDefault() }, onCopy: function(e) { s.copy(e, [this.clipboardItem.id]), e.stopPropagation(), e.preventDefault() }, onPaste: function(e) { var t = this.clipboardItem.id === o.getBookmarkBarFolderId(); s.pastePromise(e, this.clipboardItem.id, t) }, onCutContextMenu: function(e) { this.clipboardItem = e, document.addEventListener("cut", this.onCut), document.execCommand("cut"), document.removeEventListener("cut", this.onCut) }, onCopyContextMenu: function(e) { this.clipboardItem = e, document.addEventListener("copy", this.onCopy), document.execCommand("copy"), document.removeEventListener("copy", this.onCopy) }, onPasteContextMenu: function(e) { this.clipboardItem = e, document.addEventListener("paste", this.onPaste), document.execCommand("paste"), document.removeEventListener("paste", this.onPaste) }, getExtenderButtonItems: function() { for (var e = 10, t = [], n = !1, i = 0; i < this.state.renderedArray.length; i++) { var a = this.state.renderedArray[i]; n || (e += a.buttonWidth ? a.buttonWidth : 0, n = e > this.state.width), n && this.state.editId !== a.id && (a.title = this.trimTitle(a.title), t.push(this.showDropMenu(a, "bottom"))) } return t }, _onSortOrderChange: function() { var e = this.state.bookmarkSorting.sortOrder === h.DESCENDING_SORT ? h.ASCENDING_SORT : h.DESCENDING_SORT; this._onSortChange(e, this.state.bookmarkSorting.sortField) }, _onTitleSortChange: function(e) { var t = this.state.bookmarkSorting.sortOrder; "manually" !== e && t === h.NO_SORTING ? t = h.ASCENDING_SORT : "manually" === e && (t = h.NO_SORTING), this._onSortChange(t, e) }, _onSortChange: function(e, t) { var n = r(this.state, { bookmarkSorting: { sortOrder: { $set: e }, sortField: { $set: t } } }); this.setState(n); var i = { sortOrder: e, sortField: t }; m.set({ BOOKMARKS_BAR_BOOKMARKSSORT: i }); var a = this.getRenderedItems(this.state.bookmarksData, i, this.state.newItemAdded === !0 ? this.state.editId : -1); this.setState({ renderedArray: a }) }, getContextMenu: function() { var e = o.getItemById(o.getBookmarkBarFolderId()), t = [Object.assign({ handler: this._createNewTopFolder }, v("New Folder")), Object.assign({ items: [Object.assign({ handler: this._onTitleSortChange.bind(this, "manually"), type: "checkbox", checked: "manually" === this.state.bookmarkSorting.sortField }, v("Manually")), Object.assign({ handler: this._onTitleSortChange.bind(this, "title"), type: "checkbox", checked: "title" === this.state.bookmarkSorting.sortField }, v("by Title")), Object.assign({ handler: this._onTitleSortChange.bind(this, "url"), type: "checkbox", checked: "url" === this.state.bookmarkSorting.sortField }, v("by Address")), Object.assign({ handler: this._onTitleSortChange.bind(this, "nickname"), type: "checkbox", checked: "nickname" === this.state.bookmarkSorting.sortField }, v("by Nickname")), Object.assign({ handler: this._onTitleSortChange.bind(this, "description"), type: "checkbox", checked: "description" === this.state.bookmarkSorting.sortField }, v("by Description")), Object.assign({ handler: this._onTitleSortChange.bind(this, "dateAdded"), type: "checkbox", checked: "dateAdded" === this.state.bookmarkSorting.sortField }, v("by Date Created"))] }, v("Sort")), { name: "---" }, Object.assign({ handler: this.onPasteContextMenu.bind(this, e) }, "MacIntel" === navigator.platform ? v("mac", "Paste") : v("win_linux", "Paste"))]; if (this.state.bookmarkSorting.sortOrder !== h.NO_SORTING) { var n = p(this.state.bookmarkSorting.sortOrder === h.ASCENDING_SORT ? "Descending" : "Ascending"); t[1].items.push({ name: "---" }), t[1].items.push({ name: n, handler: this._onSortOrderChange }) } return console.log("items", t), t }, renderBookmarkBarButton: function(e) { return a.createElement(c, { ref: e.id, key: e.id, item: e, edit: this.state.editId === e.id, isCut: this.state.cutIds.indexOf(e.id) !== -1, onEditChanged: this.onEditChanged, keyAccess: this.props.keyAccess, onDragStart: this.onDragStart, onDragEnd: this.onDragEndBookmark, onDragOver: this.onDragOver, supportDropForEvent: this.supportDropForEvent, createNewTopFolder: this._createNewTopFolder, display: this.props.display, statusOff: this.props.statusOff, dragoverState: this.state.dragoverBookmarkObj, resetDragoverState: this.resetDragoverObj, onButtonRendered: this.onButtonRendered, onCut: this.onCutContextMenu.bind(this, e), onCopy: this.onCopyContextMenu.bind(this, e), onPaste: this.onPasteContextMenu.bind(this, e), __source: { fileName: i, lineNumber: 542 } }) }, render: function() { for (var e = !1, t = 10, r = [], s = 0; s < this.state.renderedArray.length; s++) { var o = this.state.renderedArray[s], l = t + (o.buttonWidth ? o.buttonWidth : 0); if (l > this.state.width && this.state.editId !== o.id) { e = this.state.editId === -1; break } r.push(this.renderBookmarkBarButton(o)), t = l } var c = e > 0 ? a.createElement("button", { className: "chevron", title: p("More bookmarks"), tabIndex: this.props.keyAccess, dangerouslySetInnerHTML: { __html: n(459) }, onClick: g(this.getExtenderButtonItems, null, "bottom"), __source: { fileName: i, lineNumber: 584 } }) : null; return a.createElement("div", { className: "bookmark-bar", onDragEnter: this.onDragEnter, onDragOver: this.onDragOverBar, onDragLeave: this.resetDragoverObj, onDrop: this.onDropBar, onContextMenu: g(this.getContextMenu), __source: { fileName: i, lineNumber: 595 } }, a.createElement(d, { className: "observer", onKeyDown: this.onKeyDown, onResize: this.onResize, __source: { fileName: i, lineNumber: 602 } }, r), c) } }); e.exports = b }, function(e, t, n) { // ========================= // Function_568 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/bookmarksbar/bookmarksbarItem.jsx", a = n(1), r = n(11), s = n(54), o = n(40), l = n(234), c = n(45), u = n(17), A = n(47), d = n(2), h = n(4), m = n(5), p = n(26), f = n(30), g = a.createClass({ displayName: "BookmarksBarItem", regularWidth: -1, dropMode: { support: !1, copy: !1 }, getInitialState: function() { return { dragging: !1, isEditing: this.props.edit, title: this.props.item.title } }, componentDidUpdate: function() { var e = r.findDOMNode(this.refs.bookmarkButton).offsetWidth; this.props.onButtonRendered(this.props.item.id, e), this.state.isEditing || (this.regularWidth = e) }, componentDidMount: function() { var e = r.findDOMNode(this.refs.bookmarkButton).offsetWidth; this.props.onButtonRendered(this.props.item.id, e) }, rename: function() { this.setState({ isEditing: !0, title: this.props.item.title }), this.props.onEditChanged(this.props.item.id) }, handleChange: function(e) { this.setState({ title: e.target.value }) }, handleKeyDown: function(e) { var t = e.keyCode; t === c.KEY_ENTER || t === c.KEY_RETURN ? (this.saveTitle(e.target.value), this.refs.input.blur()) : t === c.KEY_ESCAPE && (this.cancelEdit(), this.refs.input.blur()) }, killEvent: function(e) { e.preventDefault(), e.stopPropagation() }, cancelEdit: function() { this.setState({ title: this.props.item.title, isEditing: !1 }), this.props.onEditChanged(-1) }, saveTitle: function(e) { h.bookmarks.update(this.props.item.id, { title: e }, function() { h.runtime.lastError && console.warn("The computer tried to update a bookmark, but The Bookmark API said no: ", h.runtime.lastError.message) }) }, handleFocus: function(e) { e.target.select() }, handleBlur: function(e) { this.state.title || this.cancelEdit(), this.setState({ isEditing: !1 }), this.props.onEditChanged(-1), this.props.onButtonRendered(this.props.item.id, this.regularWidth) }, delete: function() { s.removeBookmark(this.props.item) }, trimTitle: function(e) { return e.length > 50 ? e.substring(0, 50) + "..." : e }, getFolderContent: function(e) { var t = this, n = function e(n) { if (n.children) { var i = []; return n.children.length > 0 && (n.children.forEach(function(t) { i.push(e(t)) }), i.push({ name: "---" })), i.push(Object.assign({ handler: s.bookmarkPageInFolder.bind(t, u.getActivePage(), n.id) }, f("Add Active Tab"))), { mnemonic: !1, bookmarkFolder: !0, name: t.trimTitle(n.title), items: i } } return { mnemonic: !1, name: t.trimTitle(n.title), handler: t.openItem.bind(null, n), url: n.url } }, i = []; return e.children.length > 0 && (e.children.forEach(function(e) { i.push(n(e, this)) }.bind(this)), i.push({ name: "---" })), i.push(Object.assign({ handler: s.bookmarkPageInFolder.bind(this, u.getActivePage(), e.id) }, f("Add Active Tab"))), i }, handleItemMouseUp: function(e) { 1 === e.button && 0 === e.buttons && this.handleItemClick(e) }, handleItemClick: function(e) { var t = this.props.item; t.children && 0 === e.button ? p(this.getFolderContent(t), null, "bottom")(e) : this.openItem(t, e) }, openItem: function(e, t, n) { var i = o.getOpenOptionsFromEvent(n ? n : t); i.bookmarks = o.getBookmarksByNode(e), o.open(i, !0) }, handleDrop: function(e) { var t = this; e.preventDefault(), e.stopPropagation(), this.dropMode.support && "" !== this.props.dragoverState.position && ! function() { var n = "on" === t.props.dragoverState.position ? t.props.item.id : t.props.item.parentId, i = "on" === t.props.dragoverState.position ? 0 : t.props.dragoverState.index + ("right" === t.props.dragoverState.position ? 1 : 0), a = o.getMimeType(); if (e.dataTransfer.types.findIndex(function(e) { return e === a }) !== -1) { var r = JSON.parse(e.dataTransfer.getData(a)); o.isCopyModifierPressed(e) ? s.copyBookmarks(r, n, i) : s.moveBookmarksPromise(r, n, i) } else o.getUrlsFromEventPromise(e, !1).then(function(e) { return s.createBookmarks(e, n, i) }) }(), this.props.resetDragoverState() }, handleDragStart: function(e) { this.props.onDragStart(this.props.item.id), this.setState({ dragging: !0 }); var t = JSON.stringify([this.props.item.id.toString()]); e.dataTransfer.setData(o.getMimeType(), t), e.dataTransfer.setData("text/uri-list", this.props.item.url), e.dataTransfer.setData("text/plain", this.props.item.url), e.dataTransfer.effectAllowed = "all" }, handleDragEnd: function(e) { this.setState({ dragging: !1 }), this.props.onDragEnd() }, handleDragLeave: function(e) {}, handleDragEnter: function(e) { this.dropMode = this.props.supportDropForEvent(e) }, handleDragOver: function(e) { e.preventDefault(), e.stopPropagation(), this.dropMode.support && (e.dataTransfer.dropEffect = this.dropMode.copy ? "copy" : "move", this.props.onDragOver(this.props.item, e)) }, handleMouseEnter: function(e) { A.setStatus(this.props.item.url ? this.props.item.url : this.props.item.title) }, handleMouseLeave: function(e) { A.clearStatus() }, _openInNewWindow: function(e, t, n) { var i = { bookmarks: o.getBookmarksByNode(e), inNewWindow: !0, inBackground: t, incognito: n }; o.open(i, !0) }, _openInNewTab: function(e, t) { var n = { bookmarks: o.getBookmarksByNode(e), inCurrent: !1, inBackground: t }; o.open(n, !0) }, _open: function(e) { var t = { bookmarks: o.getBookmarksByNode(e), inCurrent: !0 }; o.open(t, !0) }, isFolder: function(e) { return !!e && (e.children && e.children.length >= 0 || void 0 === e.url) }, getContextMenuItems: function(e) { return [Object.assign({ handler: this._open.bind(this, e) }, f("Open")), Object.assign({ handler: this._openInNewTab.bind(this, e, !1) }, f("Open in New Tab")), Object.assign({ handler: this._openInNewTab.bind(this, e, !0) }, f("Open in Background Tab")), { name: "---" }, Object.assign({ handler: this._openInNewWindow.bind(this, e, !1, !1) }, f("Open in New Window")), Object.assign({ handler: this._openInNewWindow.bind(this, e, !0, !1) }, f("Open in Background Window")), Object.assign({ handler: this._openInNewWindow.bind(this, e, !1, !0) }, f("Open in Private Window")), { name: "---" }, Object.assign({ handler: this.props.createNewTopFolder }, f("New Folder")), Object.assign({ handler: this.rename }, f("Rename")), { name: "---" }, Object.assign({ handler: this.props.onCut }, "MacIntel" === navigator.platform ? f("mac", "Cut") : f("win_linux", "Cut")), Object.assign({ handler: this.props.onCopy }, "MacIntel" === navigator.platform ? f("mac", "Copy") : f("win_linux", "Copy")), Object.assign({ handler: this.props.onPaste }, "MacIntel" === navigator.platform ? f("mac", "Paste") : f("win_linux", "Paste")), { name: "---" }, Object.assign({ handler: this.delete }, f("other", "Delete"))] }, onContextMenu: function(e) { this.state.isEditing ? e.stopPropagation() : p(this.getContextMenuItems(this.props.item))(e) }, render: function() { var e = this.props.item, t = void 0; "icon" === this.props.display && e.title && e.url ? (t = e.title, e.url !== "http://" + e.title && (t = t + " (" + e.url + ")")) : "icon" === this.props.display && e.title ? t = e.title : e.url && (t = e.url), void 0 === t && (t = d("Show folder contents")); var n = !1; return "icon" !== this.props.display && (n = "iconexceptfolders" !== this.props.display || !e.url), a.createElement("button", { key: e.id, ref: "bookmarkButton", title: t, tabIndex: this.props.keyAccess, className: m({ "data-cut": this.props.isCut, dragging: this.state.dragging, dragover: this.props.dragoverState.id === e.id && "on" === this.props.dragoverState.position, dragoverLeft: this.props.dragoverState.id === e.id && "left" === this.props.dragoverState.position, dragoverRight: this.props.dragoverState.id === e.id && "right" === this.props.dragoverState.position }), draggable: !this.state.isEditing, onDragStart: this.handleDragStart, onDragEnd: this.handleDragEnd, onDragEnter: this.handleDragEnter, onDragOver: this.handleDragOver, onDrop: this.handleDrop, onMouseEnter: this.props.statusOff ? null : this.handleMouseEnter, onMouseLeave: this.props.statusOff ? null : this.handleMouseLeave, onMouseUp: this.handleItemMouseUp, onClick: this.handleItemClick, onContextMenu: this.onContextMenu, onKeyUp: this.killEvent, __source: { fileName: i, lineNumber: 382 } }, e.url && "text" !== this.props.display && a.createElement("img", { src: "chrome://favicon/" + e.url, width: "16", alt: "", __source: { fileName: i, lineNumber: 410 } }), !e.url && "text" !== this.props.display && a.createElement(l, { __source: { fileName: i, lineNumber: 414 } }), !this.state.isEditing && n && a.createElement("span", { __source: { fileName: i, lineNumber: 418 } }, e.title), this.state.isEditing && a.createElement("input", { ref: "input", type: "text", value: this.state.title, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.killEvent, onKeyDown: this.handleKeyDown, onChange: this.handleChange, autoFocus: !0, __source: { fileName: i, lineNumber: 421 } })) } }); e.exports = g }, function(e, t, n) { // ========================= // Function_569 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/ColorPicker.jsx", a = n(1), r = n(180), s = n(2), o = n(39), l = a.createClass({ displayName: "ColorPicker", mixins: [o], getInitialState: function() { return { dragging: !1, originalColor: void 0 } }, componentWillMount: function() { this.props.color && this.setState({ originalColor: this.props.color }) }, componentDidMount: function() { window.addEventListener("mouseup", this.stopPlotMove), this.refs.reticle.focus() }, componentWillUnmount: function() { window.removeEventListener("mouseup", this.stopPlotMove) }, handleClickOutside: function(e) { this.props.hide && "function" == typeof this.props.hide && this.props.name && this.props.hide(this.props.name) }, getColorFromPlot: function(e) { if ("function" == typeof this.props.setColor && this.props.color && this.props.name) { var t = r(this.props.color), n = e.currentTarget, i = n.getBoundingClientRect(), a = e.clientX - i.left, s = e.clientY - i.top, o = isNaN(t.get("hsv.h")) ? 0 : t.get("hsv.h"), l = a / i.width, c = (i.height - s) / i.height; (l > 1 || l < 0 || c > 1 || c < 0) && this.setState({ dragging: !1 }), l = l > 1 ? 1 : l, l = l < 0 ? 0 : l, c = c > 1 ? 1 : c, c = c < 0 ? 0 : c, c = 0 === c && l > 0 ? .01 : c; var u = r.hsv(o, l, c).hex(); this.props.setColor(u, this.props.name) } }, startPlotMove: function(e) { this.refs.reticle.focus(), this.getColorFromPlot(e), this.setState({ dragging: !0 }) }, plotMove: function(e) { this.state.dragging && this.getColorFromPlot(e) }, stopPlotMove: function(e) { this.setState({ dragging: !1 }) }, onPlotRecticleKeyDown: function(e) { if (this.props.setColor && "function" == typeof this.props.setColor && this.props.hide && "function" == typeof this.props.hide && this.props.color && this.props.name) { var t = e.shiftKey ? 10 : 1, n = r(this.props.color), i = this.refs.plot.clientWidth, a = 0, s = 0; if ("Enter" === e.key || "Tab" === e.key && e.shiftKey) return this.props.hide(this.props.name), void e.preventDefault(); if ("Escape" === e.key) return this.props.hide(this.props.name), e.preventDefault(), void this.props.setColor(this.state.originalColor, this.props.name, !1); if ("ArrowUp" === e.key || "ArrowRight" === e.key || "ArrowDown" === e.key || "ArrowLeft" === e.key) { e.preventDefault(), "ArrowUp" === e.key ? s = 1 * t : "ArrowRight" === e.key ? a = 1 * t : "ArrowDown" === e.key ? s = -1 * t : "ArrowLeft" === e.key && (a = -1 * t); var o = isNaN(n.get("hsv.h")) ? 0 : n.get("hsv.h"), l = n.get("hsv.v") * i, c = n.get("hsv.s") * i, u = (c + a) / i, A = (l + s) / i; u = u > 1 ? 1 : u, u = u < 0 ? 0 : u, A = A > 1 ? 1 : A, A = A < 0 ? 0 : A, A = 0 === A && u > 0 ? .01 : A; var d = r.hsv(o, u, A).hex(); this.props.setColor(d, this.props.name, !1) } } }, onHueSliderKeyDown: function(e) { if (this.props.setColor && "function" == typeof this.props.setColor && this.props.hide && "function" == typeof this.props.hide && this.props.name) { var t = e.shiftKey ? 10 : 1, n = r(this.props.color), i = e.currentTarget.clientWidth, a = 0; if ("Enter" === e.key) return this.props.hide(this.props.name), void e.preventDefault(); if ("Escape" === e.key) return this.props.hide(this.props.name), e.preventDefault(), void this.props.setColor(this.state.originalColor, this.props.name, !1); if ("ArrowUp" === e.key || "ArrowRight" === e.key || "ArrowDown" === e.key || "ArrowLeft" === e.key) { e.preventDefault(), "ArrowRight" === e.key ? a = 1 * t : "ArrowLeft" === e.key && (a = -1 * t); var s = n.get("hsv.h") / (360 / i), o = (s + a) * (360 / i); o = o > 359 ? 359 : o, o = o < 0 ? 0 : o; var l = n.set("hsv.h", o).hex(); this.props.setColor(l, this.props.name, !1) } } }, onHueSliderChange: function(e) { if (this.props.setColor && "function" == typeof this.props.setColor && this.props.hide && "function" == typeof this.props.hide && this.props.name && this.props.color) { var t = r(this.props.color); t.set("hsv.h", e.currentTarget.value), this.props.setColor(t.hex(), this.props.name) } }, onSystemPickerChange: function(e) { this.props.setColor && "function" == typeof this.props.setColor && this.props.setColor(e.currentTarget.value, this.props.name) }, onSystemPickerKeyDown: function(e) { this.props.setColor && "function" == typeof this.props.setColor && this.props.hide && "function" == typeof this.props.hide && this.props.name && ("Escape" === e.key ? (this.props.setColor(this.state.originalColor, this.props.name, !1), this.props.hide(this.props.name)) : "Tab" !== e.key || e.shiftKey || this.props.hide(this.props.name)) }, render: function() { if (!this.props.name || !this.props.color) return null; var e = r(this.props.color), t = isNaN(e.get("hsv.h")) ? 0 : e.get("hsv.h"), n = 128 - 128 * e.get("hsv.v"), o = 128 * e.get("hsv.s"), l = "translateX(" + o + "px)" + ("translateY(" + n + "px)"); return a.createElement("div", { className: "colorpicker ignore-onclickoutside-" + this.props.name, outsideClickIgnoreClass: "ignore-onclickoutside-" + this.props.name, __source: { fileName: i, lineNumber: 240 } }, a.createElement("div", { className: "colorpicker-plot", ref: "plot", onMouseDown: this.startPlotMove, onMouseMove: this.plotMove, style: { backgroundColor: r.hsv(t, 1, 1).hex() }, __source: { fileName: i, lineNumber: 243 } }, a.createElement("button", { ref: "reticle", className: "colorpicker-plot-reticle", onKeyDown: this.onPlotRecticleKeyDown, style: { transform: l }, __source: { fileName: i, lineNumber: 248 } })), a.createElement("input", { type: "range", tabIndex: this.props.keyAccess, className: "rangeHue", min: 0, max: 359, value: t, onKeyDown: this.onHueSliderKeyDown, onChange: this.onHueSliderChange, __source: { fileName: i, lineNumber: 254 } }), a.createElement("input", { type: "color", title: s("Show system color picker"), tabIndex: this.props.keyAccess, className: "colorpicker-system", value: e.hex(), onKeyDown: this.onSystemPickerKeyDown, onChange: this.onSystemPickerChange, __source: { fileName: i, lineNumber: 263 } })) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_570 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/Dropdown.jsx", a = n(1), r = n(236), s = n(39), o = n(7), l = o.isArray, c = o.find, u = o.isEqual, A = n(2), d = a.createClass({ displayName: "VivaldiDropdown", mixins: [s], propTypes: { store: a.PropTypes.array, displayField: a.PropTypes.string, shortcut: a.PropTypes.string, itemField: a.PropTypes.string, onItemClicked: a.PropTypes.func, onClose: a.PropTypes.func, keyAccess: a.PropTypes.oneOf(["-1", "0"]), disabled: a.PropTypes.bool }, getInitialState: function() { return { isExpanded: this.props.isExpanded === !0 || !1 } }, shouldComponentUpdate: function(e, t) { return !u(this.state, t) || !u(this.props, e) }, handleClickOutside: function(e) { this.setState({ isExpanded: !1 }) }, onItemClicked: function(e, t) { t && t.stopPropagation(), this.props.onItemClicked(e.Id), this.setState({ isExpanded: !1 }) }, collapse: function() { this.state.isExpanded && ("function" == typeof this.props.onClose && this.props.onClose(), this.setState({ isExpanded: !1 })) }, expand: function(e) { e && e.preventDefault(), this.setState({ isExpanded: !this.state.isExpanded }) }, isExpanded: function() { return this.state.isExpanded }, renderDropdown: function() { return a.createElement(r, { items: this.props.store, open: !0, minWidth: this.props.minWidth, onClosed: this.collapse, onItemSelected: this.onItemClicked, onDeleted: this.props.onDeleted, __source: { fileName: i, lineNumber: 65 } }) }, renderTrigger: function() { return "search" === this.props.type ? a.createElement("button", { className: "button-addressfield input-dropdown search-engines", tabIndex: this.props.keyAccess, onMouseDown: this.expand, title: A("Change search engine"), dangerouslySetInnerHTML: { __html: n(973) }, __source: { fileName: i, lineNumber: 77 } }) : a.createElement("button", { className: "button-addressfield input-dropdown search-history", tabIndex: this.props.keyAccess, onMouseDown: this.expand, disabled: this.props.disabled, title: A("Show search history"), dangerouslySetInnerHTML: { __html: n(314) }, __source: { fileName: i, lineNumber: 85 } }) }, renderDefaultValue: function() { var e, t = this; l(this.props.store) && this.props.store.length > 0 && (e = c(this.props.store, function(e) { if (e[t.props.itemField] === t.props.value) return e })); var n = a.createElement("a", { tabIndex: "0", onFocusout: "", onClick: this.expand, __source: { fileName: i, lineNumber: 107 } }, A("Select")); return e && (n = a.createElement("a", { tabIndex: "0", onFocusout: "", onClick: this.expand, __source: { fileName: i, lineNumber: 113 } }, this.props.imageField && this.renderImage(e[this.props.imageField]), e[this.props.displayField])), a.createElement("div", { className: "iconmenu-header", __source: { fileName: i, lineNumber: 121 } }, n) }, render: function() { var e = {}; return e["is-expanded"] = this.state.isExpanded === !0, e["is-collapsed"] = this.state.isExpanded === !1, a.createElement("span", { __source: { fileName: i, lineNumber: 133 } }, this.props.hideTrigger && this.renderDefaultValue(), !this.props.hideTrigger && this.renderTrigger(), this.state.isExpanded === !0 && this.renderDropdown()) } }); e.exports = d }, function(e, t) { // ========================= // Function_571 // ========================= "use strict"; function n() { this._length = 0, this._head = null, this._tail = null } n.prototype = { add: function(e) { var t = { data: e, next: null, prev: null }; 0 === this._length ? (this._head = t, this._tail = t) : (this._tail.next = t, t.prev = this._tail, this._tail = t), this._length++ }, get length() { return this._length } }, e.exports = n }, function(e, t, n) { // ========================= // Function_572 // ========================= "use strict"; var i = n(573), a = !0, r = { getInitialState: function() { return { navigationModel: new i } }, updateKeyboardState: function() { this.setState({ stateCount: this.state.stateCount++, selectionModel: this.state.selectionModel }) }, setMultiSelectInMixin: function(e) { a = e }, KeyboardNavigationMixinReset: function() { this.state.navigationModel.clear() }, KeyboardNavigationMixinAddToNavigationList: function(e) { this.state.selectionModel.leadIndex === -1 && (this.state.selectionModel.leadIndex = e, this.state.selectionModel.selectedIds_.push(new Object({ id: e, selected: !0 })), this.state.selectionModel.anchorIndex = e), this.state.navigationModel.add(e) }, left: function(e) { if (this.isfolderAndHasItems && this.isfolderAndHasItems() === !0) { if (this.state.expandModel && this.state.selectionModel.isSingleItemSelected) { var t = this.isExpanded(this.state.selectionModel.FirstSingleItemSelected); t && this.toggleExpandModel(this.state.selectionModel.FirstSingleItemSelected) } e.preventDefault(), e.stopPropagation() } }, right: function(e) { if (this.isfolderAndHasItems && this.isfolderAndHasItems() === !0) { if (this.state.expandModel && this.state.selectionModel.isSingleItemSelected) { var t = this.isExpanded(this.state.selectionModel.FirstSingleItemSelected); t || this.toggleExpandModel(this.state.selectionModel.FirstSingleItemSelected) } e.preventDefault(), e.stopPropagation() } }, log: function() { for (var e = "", t = this.state.navigationModel.list._head; t;) e = e + t.data + " - ", t = t.next }, up: function(e) { var t = this.state.selectionModel.leadIndex, n = this.state.navigationModel.list._tail; if (n) for (; n.prev;) { if (t === n.data) return this.selectById(n.prev.data, e), this.state.selectionModel.leadIndex = n.prev.data, this.setState({ selectionModel: this.state.selectionModel }), e && (e.preventDefault(), e.stopPropagation()), !1; n = n.prev } }, down: function(e) { var t = this.state.selectionModel.leadIndex, n = this.state.navigationModel.list._head; if (n) for (; n.next;) { if (t === n.data) return this.selectById(n.next.data, e), this.state.selectionModel.leadIndex = n.next.data, this.setState({ selectionModel: this.state.selectionModel }), e && (e.preventDefault(), e.stopPropagation()), !1; n = n.next } }, home: function() { var e = this.state.navigationModel.list._head; this.selectById(e.data) }, space: function(e) { var t = this.state.selectionModel.leadIndex, n = this.state.selectionModel.isSelected(t); this.state.selectionModel.setIndexSelected(t, !n), this.updateKeyboardState() }, end: function() { var e = this.state.navigationModel.list._tail; this.selectById(e.data) }, ctrlup: function(e) { for (var t = this.state.selectionModel.leadIndex, n = this.state.navigationModel.list._tail; n.prev;) { if (t === n.data) return this.state.selectionModel.leadIndex = n.prev.data, void this.updateKeyboardState(); n = n.prev } }, ctrldown: function(e) { for (var t = this.state.selectionModel.leadIndex, n = this.state.navigationModel.list._head; n.next;) { if (t === n.data) return this.state.selectionModel.leadIndex = n.next.data, void this.updateKeyboardState(); n = n.next } }, shiftup: function() { var e = this.state.selectionModel.leadIndex; this.state.selectionModel.unSelectAll(), this.state.selectionModel.anchorIndex === -1 && (this.state.selectionModel.anchorIndex = e); for (var t, n = this.state.navigationModel.list._tail; n;) { if (e === n.data) { if (!n.prev) return; this.state.selectionModel.leadIndex = n.prev.data, t = n.prev.data; var i, a = this.isAnchorFirst(this.state.selectionModel.leadIndex); for (i = a.anchorFirst ? this.state.selectionModel.leadIndex : this.state.selectionModel.anchorIndex; a.node;) { if (i === a.node.data) return this.state.selectionModel.setIndexSelected(a.node.data, !0), this.state.selectionModel.leadIndex = t, void this.updateKeyboardState(); this.state.selectionModel.setIndexSelected(a.node.data, !0), a.node = a.node.next } } n = n.prev } }, shiftdown: function() { var e = this.state.selectionModel.leadIndex; this.state.selectionModel.unSelectAll(), this.state.selectionModel.anchorIndex === -1 && (this.state.selectionModel.anchorIndex = e, this.state.selectionModel.setIndexSelected(e, !0)); for (var t, n = this.state.navigationModel.list._head; n;) { if (e === n.data) { if (!n.next) return; this.state.selectionModel.leadIndex = n.next.data, t = n.next.data; var i, a = this.isAnchorFirst(this.state.selectionModel.leadIndex); for (i = a.anchorFirst ? this.state.selectionModel.leadIndex : this.state.selectionModel.anchorIndex; a.node;) { if (i === a.node.data) return this.state.selectionModel.setIndexSelected(a.node.data, !0), this.state.selectionModel.leadIndex = t, void this.updateKeyboardState(); this.state.selectionModel.setIndexSelected(a.node.data, !0), a.node = a.node.next } } n = n.next } }, _selectAll: function(e) { return this.selectAll(), !1 }, KeyboardNavigationMixinOnFocus: function() { var e = n(37), t = "MacIntel" === navigator.platform; e.bind("up", this.up), e.bind("down", this.down), e.bind("left", this.left), e.bind("right", this.right), e.bind("home", this.home), e.bind("end", this.end), e.bind("esc", this.unSelectAll), e.bind(t ? "meta+a" : "ctrl+a", this._selectAll), e.bind(t ? "meta+left" : "ctrl+left", this.left), e.bind(t ? "meta+right" : "ctrl+right", this.right), this.onDelete ? e.bind(t ? "meta+backspace" : "del", this.onDelete) : null, t || (e.bind("ctrl+space", this.space), e.bind("ctrl+up", this.ctrlup), e.bind("ctrl+down", this.ctrldown)), a && (e.bind("shift+up", this.shiftup), e.bind("shift+down", this.shiftdown)) }, KeyboardNavigationMixinOnBlur: function() { var e = n(37), t = "MacIntel" === navigator.platform; e.unbind("up", this.up), e.unbind("down", this.down), e.unbind("left", this.left), e.unbind("right", this.right), e.unbind("home", this.home), e.unbind("end", this.end), e.unbind("esc", this.unSelectAll), e.unbind(t ? "meta+a" : "ctrl+a", this._selectAll), e.unbind(t ? "meta+left" : "ctrl+left", this.left), e.unbind(t ? "meta+right" : "ctrl+right", this.right), this.onDelete ? e.unbind(t ? "meta+backspace" : "del", this.onDelete) : null, t || (e.unbind("ctrl+space", this.space), e.unbind("ctrl+up", this.ctrlup), e.unbind("ctrl+down", this.ctrldown)), a && (e.unbind("shift+up", this.shiftup), e.unbind("shift+down", this.shiftdown)) }, KeyboardNavigationMixinAddItemToNavigationList: function(e, t) { for (var n = !1, i = this.state.navigationModel._linkedList._head; i;) { if (e === i.data) { n = !0; break } i = i.next } n || t === -1 || this.KeyboardNavigationMixinAddToNavigationList(e) } }; e.exports = r }, function(e, t, n) { // ========================= // Function_573 // ========================= "use strict"; function i() { this._linkedList = new a } var a = n(571); i.prototype = { add: function(e) { this._linkedList.add(e) }, clear: function(e) { this._linkedList = new a }, get list() { return this._linkedList }, get length() { return this._linkedList.length }, get print() { return 1 === this.selectedIds_.length } }, e.exports = i }, function(e, t, n) { // ========================= // Function_574 // ========================= "use strict"; var i = n(353), a = { getInitialState: function() { return { selectionModel: new i, stateCount: -1 } }, resetSelectionModel: function() { this.state.selectionModel.resetSelectionModel(), this.updateState() }, updateState: function() { this.setState({ stateCount: this.state.stateCount++ }) }, unSelectAll: function() { this.state.selectionModel.unSelectAll(), this.updateState() }, selectNextItemAfterDelete: function(e, t) { var n = 1, i = this.state.navigationModel.list._head, a = this.state.navigationModel.list._tail; if (i.data === a.data) return null; if (e === a.data) return n = a.prev.data; for (; i;) { if (e === i.data) { if (!t || !this.isExpanded(i.data)) return n = i.next.data; for (i = i.next; i;) { var r = this.findTreeItem(i.data); if (this.isFolder(r)) return i.data; if (i = i.next, !i) return null } n = i.prev ? i.prev.data : i.next.data } i = i.next } }, selectAll: function() { for (var e = [], t = this.state.navigationModel.list._head; t;) e.push(t.data), t = t.next; this.state.selectionModel.selectAll(e), this.updateState() }, SelectionMixinGetLead: function() { return this.state.selectionModel.leadIndex }, SelectionMixinGetSelected: function() { return this.state.selectionModel.FirstSingleItemSelected }, SelectionMixinGetAllSelected: function() { return this.state.selectionModel.selectedIds }, SelectionMixinSetSelection: function(e) { this.state.selectionModel.resetSelectionModel(), this.state.selectionModel.setIndexSelected(e, !0), this.state.selectionModel.leadIndex = e, this.updateState() }, SelectionMixinIsSelected: function(e) { return this.state.selectionModel.isSelected(e) }, SelectionMixinIsLead: function(e) { return this.state.selectionModel.isSelectionLead(e) }, SelectionMixinSelectItem: function(e, t, n, i, a) { this.state.selectionModel.leadIndex = e; var r = "MacIntel" === navigator.platform ? i : t, s = this.state.selectionModel.isSelected(e); if (r || n) s = a ? a : !s; else { if (a && this.state.selectionModel.length > 1) return; this.state.selectionModel.unSelectAll(), s = !0 } if (n) { var o, l = this.isAnchorFirst(e); for (o = l.anchorFirst ? e : this.state.selectionModel.anchorIndex; l.node;) { if (o === l.node.data) return this.state.selectionModel.setIndexSelected(l.node.data, !0), void this.updateState(); this.state.selectionModel.setIndexSelected(l.node.data, !0), l.node = l.node.next } } else this.state.selectionModel.setIndexSelected(e, s); this.updateState() }, isAnchorFirst: function(e) { for (var t = this.state.navigationModel.list._head; t;) { if (this.state.selectionModel.anchorIndex === t.data) return { anchorFirst: !0, node: t }; if (e === t.data) return { anchorFirst: !1, node: t }; t = t.next } } }; e.exports = a }, function(e, t, n) { // ========================= // Function_575 // ========================= "use strict"; var i = n(69), a = n(353), r = { getInitialState: function() { var e = this.props ? this.props.multiSelect : void 0; return { selectionModel: new a(e) } }, componentWillReceiveProps: function(e) { this.props.multiSelect !== e.multiSelect && (this.state.selectionModel.multiSelect = e.multiSelect) }, resetSelectionModel: function() { this.state.selectionModel.resetSelectionModel(), this.updateSelectionState(this.state.selectionModel) }, updateSelectionState: function(e) { var t = i(this.state.selectionModel, { $merge: e }); t.__proto__ = this.state.selectionModel.__proto__, this.setState({ selectionModel: t }) }, SelectionMixinSelectAll: function() { this.updateSelectionState(this.state.selectionModel.selectAll(this.getAllIds())) }, SelectionMixinUnSelectAll: function() { this.updateSelectionState(this.state.selectionModel.unSelectAll()); }, SelectionMixinGetLead: function() { return this.state.selectionModel.leadIndex }, SelectionMixinGetAnchor: function() { return this.state.selectionModel.anchorIndex }, SelectionMixinGetSelectionModel: function() { return this.state.selectionModel }, SelectionMixinGetSelected: function() { return this.state.selectionModel.FirstSingleItemSelected }, SelectionMixinGetAllSelected: function() { return this.state.selectionModel.selectedIds }, SelectionMixinIsSelected: function(e) { return this.state.selectionModel.isSelected(e) }, SelectionMixinIsLead: function(e) { return this.state.selectionModel.isSelectionLead(e) }, SelectionMixinSetLead: function(e) { this.updateSelectionState(this.state.selectionModel.setLeadIndex(e)) }, SelectionMixinSelectItem: function(e, t, n, i, a) { var r = this.state.selectionModel.setLeadIndex(e), s = "MacIntel" === navigator.platform ? i : t, o = this.state.selectionModel.isSelected(e); if (s || n) o = a ? a : !o; else { if (a && this.state.selectionModel.length > 1) return; r = Object.assign(r, this.state.selectionModel.unSelectAll()), o = !0 } if (n) { var l = this.getSelectedIdsFromIdToAnchor(e); r = Object.assign(r, this.state.selectionModel.setSelectedIds(l)) } else r = Object.assign(r, this.state.selectionModel.setIndexSelected(e, o)); this.updateSelectionState(r) }, getSelectedIdsFromIdToAnchor: function(e) { var t = this.state.selectionModel.anchorIndex, n = this.getIdsBetween(t, e); return n } }; e.exports = r }, function(e, t, n) { // ========================= // Function_576 // ========================= (function(t) { "use strict"; function n(e) { var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; return function() { if (!n.isRunning) { n.isRunning = !0; try { e.apply(this, arguments) } finally { t.nextTick(function() { n.isRunning = !1 }) } } } } e.exports.throttleSync = n }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_577 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/TreeItem.jsx", a = n(1), r = n(9), s = n(5), o = n(26), l = n(7), c = l.noop, u = a.createClass({ displayName: "TreeItem", mixins: [r], supportDrop: !1, defaultProps: { onDragLeave: c }, isFolder: function() { return this.props.isFolder(this.props.treeItem) }, hasChildren: function() { return this.props.hasChildren(this.props.treeItem) }, onClick: function(e) { this.props.onItemClick(this.props.treeItem, e), e.stopPropagation() }, onDoubleClick: function(e) { void 0 === this.props.inlineEditText && (this.isFolder() && this.onExpandClick(), this.props.onItemDoubleClick(this.props.treeItem, e)) }, onContextMenu: function(e) { void 0 !== this.props.inlineEditText ? e.stopPropagation() : o(this.props.getContextMenuItems(this.props.treeItem), this.props.onContextMenuOpen(e, this.props.treeItem))(e) }, onDragStart: function(e) { var t = this.props.getAllSelectedItems(!0).map(function(e) { return e.id }); if (t = this.props.validateForDrag ? this.props.validateForDrag(t) : [], t.length > 0 && void 0 === this.props.inlineEditText) { if (this.props.onDragStart(), this.props.mimeType) { var n = "function" == typeof this.props.mimeType ? this.props.mimeType() : this.props.mimeType; e.dataTransfer.setData(n, JSON.stringify(t)) } e.dataTransfer.setData("text/uri-list", this.props.getDragData("text/uri-list", this.props.treeItem)), e.dataTransfer.setData("text/plain", this.props.getDragData("text", this.props.treeItem)), e.dataTransfer.setData("vivaldi/x-title", this.props.getDragData("title", this.props.treeItem)), e.dataTransfer.effectAllowed = "all", this.setState({ dragging: !0 }) } }, onDragEnd: function(e) { this.setState({ dragging: !1 }), this.props.onDragEnd() }, onDragEnter: function(e) { this.supportDrop = this.props.supportDrop(this.props.treeItem, e) }, onDrop: function(e) { e.preventDefault(), e.stopPropagation(), this.supportDrop && this.props.onDrop(e, this.props.treeItem) }, onDragOver: function(e) { e.preventDefault(), e.stopPropagation(), this.supportDrop && (e.nativeEvent.dataTransfer.dropEffect = "move", this.props.onDragOver(this.props.treeItem, e)) }, onDragLeave: function(e) { e.preventDefault(), e.stopPropagation(), this.supportDrop && this.props.onDragLeave(this.props.treeItem, e) }, onMouseDown: function(e) { this.props.onMouseDown(this.props.treeItem, e) }, onMouseUp: function(e) { this.props.onMouseUp(this.props.treeItem, e) }, onExpandClick: function() { this.props.treeItem.children && this.props.treeItem.children.length > 0 && (this.props.toggle(this.props.treeItem.id), event.preventDefault(), event.stopPropagation()) }, onEditChanged: function(e) { this.props.setInlineEditText(e.target.value) }, onEditFocus: function(e) { e.target.select() }, onEditBlur: function(e) { this.props.onInlineEditBlur() }, render: function() { var e = this.props.selected, t = this.props.dragOverObj.id === this.props.treeItem.id, n = this.props.dragOverObj.position, r = { node: this.props.treeItem, isSelected: e, inlineEditText: this.props.inlineEditText, onChange: this.onEditChanged, onFocus: this.onEditFocus, onBlur: this.onEditBlur }; return a.createElement("div", { "data-id": this.props.treeItem.id, className: "tree-item", "data-selected": e ? "" : null, "data-lead": this.props.lead ? "" : null, "data-cut": this.props.isCut ? "" : null, "data-expanded": this.props.isExpanded ? "" : null, onDragEnter: this.props.enableDragAndDrop ? this.onDragEnter : null, onDragOver: this.props.enableDragAndDrop ? this.onDragOver : null, onDragLeave: this.props.enableDragAndDrop ? this.onDragLeave : null, onDrop: this.props.enableDragAndDrop ? this.onDrop : null, onContextMenu: this.onContextMenu, __source: { fileName: i, lineNumber: 149 } }, a.createElement("div", { className: s({ folder: this.isFolder(), "tree-row": !0, dragging: this.props.dragging, dragover: t && "on" === n, dragoverAbove: t && "above" === n, dragoverBelow: t && "below" === n, "speeddial-folder": this.isFolder() && this.props.treeItem.speeddial }), "data-selected": e ? "" : null, "data-nofocus": e && !this.props.hasFocus ? "" : null, onClick: this.onClick, onDoubleClick: this.onDoubleClick, onMouseDown: this.onMouseDown, onMouseUp: this.onMouseUp, draggable: this.props.isDraggable, onDragStart: this.props.enableDragAndDrop ? this.onDragStart : null, onDragEnd: this.props.enableDragAndDrop ? this.onDragEnd : null, __source: { fileName: i, lineNumber: 161 } }, this.props.renderItemContent(r))) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_578 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/common/menu/MenuItem.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(11), d = i(A), h = n(175), m = i(h), p = n(37), f = i(p), g = n(5), _ = i(g), v = n(26), b = i(v), N = n(137), E = i(N), S = function(e) { function t() { var e, i, s, l; a(this, t); for (var c = arguments.length, A = Array(c), d = 0; d < c; d++) A[d] = arguments[d]; return i = s = r(this, (e = t.__proto__ || Object.getPrototypeOf(t)).call.apply(e, [this].concat(A))), s.onItemSelected = function(e) { 2 === e.button ? e.stopPropagation() : s.props.onItemSelected(s.props.menuItem, e) }, s.killEvent = function(e) { e.preventDefault(), e.stopPropagation() }, s.handleMouseOver = function() { s.props.setSelected(s.props.nr) }, s.handleMenuClosed = function() { s.props.platformPopups === !0 && s.props.menuDidClose() }, s.handleMouseDown = function(e) { s.props.platformPopups === !0 && (0, b.default)(s.props.menuItem.items, null, "bottom", s.refs.button, s.handleMenuClosed)(e) }, s.handleMenuShortcut = function(e) { s.props.platformPopups === !0 && (s.props.setSelected(s.props.nr), s.props.menuWillOpen(), (0, b.default)(s.props.menuItem.items, null, "bottom", s.refs.button, s.handleMenuClosed)(e)) }, s.getDisplayName = function() { var e = m.default.getMenuBarString(s.props.menuItem, s.props.shortcutItem); if (s.props.showAccelerator && e.offset !== -1) { var t = e.offset; return u.default.createElement("span", { __source: { fileName: o, lineNumber: 105 } }, t > 0 ? e.name.substring(0, t) : "", u.default.createElement("span", { className: "underlined", __source: { fileName: o, lineNumber: 107 } }, e.name.substring(t, t + 1)), e.name.substring(t + 1)) } return u.default.createElement("span", { __source: { fileName: o, lineNumber: 101 } }, e.name) }, s.getDisplayShortcut = function() { if (s.props.menuItem.shortcut) { var e = s.props.menuItem.noPrettifying ? s.props.menuItem.shortcut : (0, E.default)(s.props.menuItem.shortcut); return u.default.createElement("span", { className: "shortcut", __source: { fileName: o, lineNumber: 121 } }, e) } return null }, s.getIcon = function() { var e = void 0; return s.props.menuItem.iconSVG ? s.props.menuItem.iconSVG : (e = s.props.menuItem.icon ? s.props.menuItem.icon : s.props.menuItem.url ? "chrome://favicon/origin/" + s.props.menuItem.url : "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", "") }, s.onDeleted = function(e, t) { t.preventDefault(), t.stopPropagation(), "function" == typeof s.props.onDeleted && s.props.onDeleted(e) }, s.renderItem = function() { var e = s.props.menuItem.type || "normal"; return u.default.createElement("li", { className: (0, _.default)({ selectedItem: s.props.isSelected }), onMouseOver: s.handleMouseOver, onMouseDown: s.killEvent, onMouseUp: s.onItemSelected, title: s.props.menuItem.url, __source: { fileName: o, lineNumber: 161 } }, "normal" === e && u.default.createElement("a", { tabIndex: "0", __source: { fileName: o, lineNumber: 169 } }, u.default.createElement("label", { className: "menu-icon", dangerouslySetInnerHTML: { __html: s.getIcon() }, __source: { fileName: o, lineNumber: 170 } }), u.default.createElement("label", { className: "menu-label", __source: { fileName: o, lineNumber: 172 } }, s.getDisplayName(), s.getDisplayShortcut()), s.props.onDeleted && u.default.createElement("label", { className: "menu-delete", onMouseUp: s.onDeleted.bind(s, s.props.menuItem), dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: o, lineNumber: 177 } })), "checkbox" === e && u.default.createElement("a", { tabIndx: "0", __source: { fileName: o, lineNumber: 187 } }, u.default.createElement("label", { __source: { fileName: o, lineNumber: 188 } }, u.default.createElement("span", { className: "menu-icon", __source: { fileName: o, lineNumber: 189 } }, u.default.createElement("input", { type: "checkbox", checked: s.props.menuItem.checked, readOnly: !0, __source: { fileName: o, lineNumber: 190 } })), u.default.createElement("span", { className: "menu-label", __source: { fileName: o, lineNumber: 193 } }, s.getDisplayName()))), "radio" === e && u.default.createElement("a", { tabIndex: "0", __source: { fileName: o, lineNumber: 199 } }, u.default.createElement("label", { __source: { fileName: o, lineNumber: 200 } }, u.default.createElement("span", { className: "menu-icon", __source: { fileName: o, lineNumber: 201 } }, u.default.createElement("input", { className: "menu-icon", type: "radio", name: "radiomenu", checked: s.props.menuItem.checked, readOnly: !0, __source: { fileName: o, lineNumber: 202 } })), u.default.createElement("span", { className: "menu-label", __source: { fileName: o, lineNumber: 205 } }, s.getDisplayName())))) }, s.renderDivider = function() { return u.default.createElement("li", { className: "divider", __source: { fileName: o, lineNumber: 214 } }) }, s.renderSubmenuItem = function() { var e = n(236); return u.default.createElement("li", { className: (0, _.default)({ selectedItem: s.props.isSelected, hasSubMenu: !0 }), ref: "menuItem", onMouseOver: s.handleMouseOver, onMouseUp: s.killEvent, onMouseDown: s.handleMouseDown, onDoubleClick: s.killEvent, __source: { fileName: o, lineNumber: 221 } }, u.default.createElement("a", { tabIndex: "0", ref: "button", __source: { fileName: o, lineNumber: 230 } }, u.default.createElement("img", { src: s.getIcon(), __source: { fileName: o, lineNumber: 231 } }), s.getDisplayName()), s.props.platformPopups !== !0 && s.props.isSelected && u.default.createElement(e, { items: s.props.menuItem.items, open: !0, subMenu: !0, onItemSelected: s.props.onItemSelected, onClosed: s.props.onClosed, giveFocusToParentMenu: s.props.giveFocusToParentMenu, __source: { fileName: o, lineNumber: 234 } })) }, l = i, r(s, l) } return s(t, e), l(t, [{ key: "componentWillMount", value: function() { var e = this.props.shortcutItem.shortcut; e && e.length > 0 && f.default.bind(e, this.handleMenuShortcut) } }, { key: "componentWillReceiveProps", value: function(e) { if (e.isSelected && !this.props.isSelected && d.default.findDOMNode(this).scrollIntoViewIfNeeded(!1), e.shortcutItem !== this.props.shortcutItem) { f.default.unbind(this.props.shortcutItem.shortcut, this.handleMenuShortcut); var t = e.shortcutItem.shortcut; t.length > 0 && f.default.bind(t, this.handleMenuShortcut) } } }, { key: "componentWillUnmount", value: function() { var e = this.props.shortcutItem.shortcut; e && e.length > 0 && f.default.unbind(e, this.handleMenuShortcut) } }, { key: "render", value: function() { return this.props.menuItem.items ? this.renderSubmenuItem() : "---" === this.props.menuItem.name || "separator" === this.props.menuItem.type ? this.renderDivider() : this.renderItem() } }]), t }(u.default.PureComponent); S.propTypes = { isSelected: u.default.PropTypes.bool.isRequired, setSelected: u.default.PropTypes.func.isRequired, nr: u.default.PropTypes.number.isRequired, menuItem: u.default.PropTypes.object.isRequired, shortcutItem: u.default.PropTypes.object.isRequired, showAccelerator: u.default.PropTypes.bool.isRequired, onItemSelected: u.default.PropTypes.func.isRequired, onClosed: u.default.PropTypes.func.isRequired, giveFocusToParentMenu: u.default.PropTypes.func.isRequired, menuWillOpen: u.default.PropTypes.func.isRequired, menuDidClose: u.default.PropTypes.func.isRequired, onDeleted: u.default.PropTypes.func, platformPopups: u.default.PropTypes.bool }, e.exports = S }, function(e, t, n) { // ========================= // Function_579 // ========================= "use strict"; var i = n(181), a = new i("Contact"); a.version(1).stores({ contacts: "id,address" }), a.version(2).stores({ contacts: "id,address", trustedAddresses: "address" }), a.open(), e.exports = a }, function(e, t, n) { // ========================= // Function_580 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/contacts/ContactPhotoPicker.jsx", a = n(1), r = n(110), s = n(39), o = n(9), l = n(2), c = n(546), u = n(5), A = 256, d = .9, h = "https://secure.gravatar.com/avatar/", m = ["../resources/contact-w1.png", "../resources/contact-m1.png", "../resources/contact-w2.png", "../resources/contact-m2.png"], p = a.createClass({ displayName: "ContactPhotoPicker", mixins: [s, o], getInitialState: function() { return { drawerOpen: !1, isDropTarget: !1, initialPhoto: "", id: "" } }, componentWillReceiveProps: function(e) { var t = e.id; t && t !== this.state.id && this.setState({ initialPhoto: e.photo, id: t }) }, componentDidUpdate: function(e, t) { t.drawerOpen === !0 && this.state.drawerOpen === !1 ? this.disableOnClickOutside() : t.drawerOpen === !1 && this.state.drawerOpen === !0 && this.enableOnClickOutside() }, onToggleOverlay: function() { this.setState({ drawerOpen: !this.state.drawerOpen }) }, handleClickOutside: function() { this.setState({ drawerOpen: !1 }) }, photoChange: function(e) { this.refs.photoPicker.click() }, setContactPhoto: function(e) { var t = this; if (e.target.files && e.target.files.length > 0) { var n = e.target.files[0], i = new FileReader; i.onloadend = function() { t.setState({ drawerOpen: !1, isDropTarget: !1 }), t.props.attributeChange("photo", i.result) }, i.readAsDataURL(n) } }, photoDragOver: function(e) { e.preventDefault() }, photoDragEnter: function(e) { this.setState({ isDropTarget: !0 }) }, photoDragLeave: function(e) { this.setState({ isDropTarget: !1 }) }, photoDrop: function(e) { var t = this, n = e.dataTransfer.files[0]; this.setState({ isDropTarget: !1 }), n && n.type.match("image.*") && ! function() { var e = new FileReader; e.onloadend = function() { t.setPhoto(e.result) }, e.readAsDataURL(n) }() }, getGravatar: function() { var e = this, t = c(this.props.address); fetch("" + h + t + "?s=" + 2 * A + "&d=404").then(function(t) { t.ok && t.blob().then(function(t) { var n = new FileReader; n.addEventListener("loadend", function() { e.setPhoto(n.result), e.setState({ drawerOpen: !1, isDropTarget: !1 }) }), n.readAsDataURL(t) }) }) }, setPhoto: function(e) { var t = this; if (!e) return this.props.attributeChange("photo", ""), void this.setState({ drawerOpen: !1, isDropTarget: !1 }); var n = document.createElement("canvas"), i = n.getContext("2d"), a = document.createElement("img"), r = 0, s = 0; n.width = A, n.height = A, a.onload = function() { a.height > a.width ? (a.height *= A / a.width, a.width = A, s = .5 * -(a.height - A)) : (a.width *= A / a.height, a.height = A, r = .5 * -(a.width - A)), i.drawImage(a, r, s, a.width, a.height), t.props.attributeChange("photo", n.toDataURL("image/jpeg", d)), t.setState({ drawerOpen: !1 }) }, a.src = e }, render: function() { var e = this, t = this.props.photo, n = u({ "contact-photo-is-droptarget": this.state.isDropTarget, "contact-photo": !0 }); return a.createElement("div", { className: "contact-photo-picker", __source: { fileName: i, lineNumber: 195 } }, t ? a.createElement("button", { className: n, ref: "photo", onDrop: this.photoDrop, onDragEnter: this.photoDragEnter, onDragLeave: this.photoDragLeave, onDragOver: this.photoDragOver, style: { backgroundImage: "url(" + t + ")" }, onClick: this.onToggleOverlay, __source: { fileName: i, lineNumber: 197 } }) : a.createElement("button", { className: n, ref: "photo", onDrop: this.photoDrop, onDragEnter: this.photoDragEnter, onDragLeave: this.photoDragLeave, onDragOver: this.photoDragOver, onClick: this.onToggleOverlay, dangerouslySetInnerHTML: { __html: r.prototype.defaultPhoto }, __source: { fileName: i, lineNumber: 207 } }), a.createElement("input", { type: "file", tabIndex: "-1", accept: "image/*", ref: "photoPicker", onChange: this.setContactPhoto, style: { position: "absolute", visibility: "hidden" }, __source: { fileName: i, lineNumber: 219 } }), this.state.drawerOpen && a.createElement("div", { className: "contact-photo-picker-overlay", __source: { fileName: i, lineNumber: 227 } }, a.createElement("div", { className: "photo-picker-suggestions", __source: { fileName: i, lineNumber: 228 } }, this.state.initialPhoto ? a.createElement("button", { className: "photo-picker-suggestion", onClick: this.setPhoto.bind(this, this.state.initialPhoto), style: { backgroundImage: "url(" + this.state.initialPhoto + ")" }, __source: { fileName: i, lineNumber: 231 } }) : a.createElement("button", { className: "photo-picker-suggestion", onClick: this.setPhoto.bind(this, this.state.initialPhoto), dangerouslySetInnerHTML: { __html: r.prototype.defaultPhoto }, __source: { fileName: i, lineNumber: 237 } }), a.createElement("button", { className: "photo-picker-suggestion", onClick: this.setPhoto.bind(this, ""), dangerouslySetInnerHTML: { __html: r.prototype.defaultPhoto }, __source: { fileName: i, lineNumber: 246 } }), m.map(function(t, n) { return a.createElement("button", { className: "photo-picker-suggestion", key: "photo-picker-suggestion-" + n, onClick: e.setPhoto.bind(e, m[n]), style: { backgroundImage: "url(" + t + ")" }, __source: { fileName: i, lineNumber: 255 } }) })), a.createElement("input", { type: "button", onClick: this.getGravatar, value: l("Get Gravatar"), __source: { fileName: i, lineNumber: 264 } }), a.createElement("input", { type: "button", className: "primary", onClick: this.photoChange, value: l("Browse..."), __source: { fileName: i, lineNumber: 269 } }))) } }); e.exports = p }, function(e, t, n) { // ========================= // Function_581 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/contacts/ContactTree.jsx", a = n(1), r = n(110), s = n(244), o = n(49), l = n(47), c = n(13), u = n(109), A = n(30), d = n(21), h = a.createClass({ displayName: "ContactTree", mixins: [c], vivaldiSettingsKeys: ["SHOW_VIVALDI_FOOTER"], shouldComponentUpdate: function(e, t) { return d(this, e, t) }, getSelectedIds: function() { var e = this.refs.treeList.getAllSelectedItems(!0).map(function(e) { return e.id }); return e }, getSelectedItems: function() { var e = this.getSelectedIds().map(function(e) { return s.getNodeById(e) }).filter(function(e) { return void 0 !== e }); return e }, getSelectedItem: function() { return this.refs.treeList.getSelectedItem() }, getNodeName: function(e) { return e.name || e.address }, isFolder: function(e) { return !1 }, isTrash: function(e) { return !1 }, hasChildren: function(e) { return !!e.children && e.children.length > 0 }, unSelectAll: function() { this.refs.treeList.unSelectAll() }, deleteSelected: function() { this.refs.treeList.onDelete() }, deleteByIds: function(e) { this.refs.treeList.onDelete(e) }, validateForEdit: function(e) { return !0 }, isValidAddTarget: function() { return !0 }, getTitle: function(e) { var t = s.getNodeById(e); return void 0 !== t ? this.getNodeName(t) : "" }, saveTitle: function(e, t) { var n = s.getNodeById(e); void 0 !== n && (n.name = t), o.saveContact(n) }, onAdd: function(e) { this.refs.treeList.onAdd(e) }, getContextMenuItems: function() { return [Object.assign({ handler: this.props.onCompose }, A("Compose"))] }, getRootContextMenuItems: function() { return [Object.assign({ name: this.getContextMenuNewItemString(), handler: this.onAdd.bind(this, !1) }, this.getContextMenuNewItemString())] }, getContextMenuItemProps: function(e) { return { showEdit: !0, showRename: !0, showNewItem: !0, showNewFolder: !1, showCutCopyPaste: !1, showCut: !1, showCopy: !1, showPaste: !1, showDelete: !0, showExpandCollapse: !1 } }, getContextMenuNewItemString: function() { return A("New Contact") }, handleMouseEnterItem: function(e) { l.setStatus(e) }, handleMouseLeaveItem: function() { l.clearStatus() }, renderItemContent: function(e) { var t = e.node, n = t.photo ? "" : r.prototype.defaultPhoto, s = a.createElement("label", { key: "0", tabIndex: "-1", onMouseEnter: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseEnterItem.bind(this, t.address), onMouseLeave: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseLeaveItem, __source: { fileName: i, lineNumber: 147 } }, a.createElement("span", { className: "tree-row-image", dangerouslySetInnerHTML: { __html: n }, __source: { fileName: i, lineNumber: 154 } }), void 0 !== e.inlineEditText && a.createElement("input", { ref: "input", type: "text", value: e.inlineEditText, onChange: e.onChange, onFocus: e.onFocus, onBlur: e.onBlur, autoFocus: !0, __source: { fileName: i, lineNumber: 158 } }), void 0 === e.inlineEditText && a.createElement("span", { className: "title", __source: { fileName: i, lineNumber: 168 } }, this.getNodeName(t))); return [s] }, render: function() { return a.createElement(u, { ref: "treeList", settings: "CONTACT_TREE", nodes: this.props.items, onSelect: this.props.onSelect, getContextMenuItems: this.getContextMenuItems, getContextMenuItemProps: this.getContextMenuItemProps, getContextMenuNewItemString: this.getContextMenuNewItemString, onCreate: this.props.onCreate, onEdit: this.props.onEdit, onItemsActivated: this.props.onCompose, onItemDoubleClick: this.props.onCompose, delete: o.deleteContactsByIds, enableDragAndDrop: !1, isTrash: this.isTrash, isFolder: this.isFolder, hasChildren: this.hasChildren, nodeSelected: this.props.contactSelected, nodeDisplayName: this.getNodeName, getNodeIcon: this.getContactPhoto, renderItemContent: this.renderItemContent, supportsInlineEdit: !0, isValidToEdit: this.validateForEdit, getTitle: this.getTitle, saveTitle: this.saveTitle, isValidAddTarget: this.isValidAddTarget, __source: { fileName: i, lineNumber: 179 } }) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_582 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/contacts/ContactView.jsx", a = n(1), r = n(11), s = n(110), o = n(580), l = n(244), c = n(49), u = n(37), A = n(2), d = n(113), h = a.createClass({ displayName: "ContactView", saveTimer: void 0, isNew: !1, isModified: !1, getInitialState: function() { return { item: l.getEmptyContact() } }, componentWillMount: function() { u.bind("esc", this._onEscPressed) }, componentWillUnmount: function() { u.unbind("esc", this._onEscPressed), this.saveItem(!0) }, getItemId: function() { return this.state.item.id }, setItem: function(e, t) { var n = this; if (this.state.item.id !== e.id) { this.state.item.id && this.saveItem(!0); var i = Object.assign({ __proto__: s.prototype }, e); this.setState({ item: i }, function() { n.isNew = t, n.isModified = !1 }) } }, updateItem: function(e) { var t = this; if (this.state.item.id === e.id) { var n = Object.assign({ __proto__: s.prototype }, e); this.setState({ item: n }, function() { t.isModified = !1 }) } }, _onEscPressed: function() { this.isModified = !1, this.props.onClose(this.isNew ? this.state.item : void 0) }, handleKeyDown: function(e) { e.stopPropagation(), "Enter" === e.key && (this.saveItem(!0), this.props.onClose()) }, attributeChange: function(e, t) { var n = this; this.isModified = !0; var i = this.state.item; i[e] = t, this.setState({ item: i }, function() { return n.saveItem(!0) }) }, nameChange: function(e) { this.attributeChange("name", e.target.value) }, addressChange: function(e) { this.attributeChange("address", e.target.value) }, phoneChange: function(e) { this.attributeChange("phone", e.target.value) }, postalChange: function(e) { this.attributeChange("postal", e.target.value) }, handleBlur: function() { this.resetSaveTimer(), this.saveTimer = setTimeout(this.saveItem.bind(this, !1), 1) }, resetSaveTimer: function() { this.saveTimer && (window.clearTimeout(this.saveTimer), this.saveTimer = void 0) }, saveItem: function(e) { this.resetSaveTimer(); var t = e || !d(r.findDOMNode(this)); this.isModified && t && (c.saveContact(this.state.item), this.isModified = !1) }, render: function() { var e = this.state.item.name || "", t = this.state.item.address || "", n = this.state.item.phone || "", r = this.state.item.postal || ""; return a.createElement("div", { className: "contact-view cardview", __source: { fileName: i, lineNumber: 135 } }, a.createElement("div", { className: "contact-header", __source: { fileName: i, lineNumber: 136 } }, a.createElement(o, { ref: "photoPicker", attributeChange: this.attributeChange, id: this.state.item.id, photo: this.state.item.photo, address: this.state.item.address, __source: { fileName: i, lineNumber: 137 } }), a.createElement("input", { className: "contact-name", ref: "name", type: "text", value: e, placeholder: A("Name"), onChange: this.nameChange, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, __source: { fileName: i, lineNumber: 145 } })), a.createElement("input", { ref: "email", className: "contact-email", type: "text", value: t, placeholder: A("Email"), onChange: this.addressChange, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, __source: { fileName: i, lineNumber: 156 } }), a.createElement("input", { className: "contact-phone", ref: "phone", type: "text", value: n, placeholder: A("Phone"), onChange: this.phoneChange, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, __source: { fileName: i, lineNumber: 166 } }), a.createElement("input", { className: "contact-postal", ref: "postal", type: "text", value: r, placeholder: A("Address"), onChange: this.postalChange, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, __source: { fileName: i, lineNumber: 176 } })) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_583 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/contacts/ContactsPanel.jsx", a = n(1), r = n(11), s = n(581), o = n(582), l = n(244), c = n(49), u = n(15), A = n(58), d = n(2), h = n(5), m = n(113), p = n(26), f = n(21), g = n(20).urls, _ = a.createClass({ displayName: "ContactsPanel", getInitialState: function() { return { items: l.getAsTree(""), filter: "" } }, shouldComponentUpdate: function(e, t) { return f(this, e, t) }, componentWillMount: function() { A.addChangeListener(this.onPanelStoreChange), l.addChangeListener(this.onContactStoreChange) }, componentWillUnmount: function() { A.removeChangeListener(this.onPanelStoreChange), l.removeChangeListener(this.onContactStoreChange) }, componentDidUpdate: function(e, t) { !e.open && this.props.open && r.findDOMNode(this.refs.tree).focus() }, onPanelStoreChange: function(e) { this.props.open && "setFocus" === e && !m(r.findDOMNode(this)) && r.findDOMNode(this.refs.tree).focus() }, onContactStoreChange: function() { var e = this; this.setState({ items: l.getAsTree(this.state.filter) }, function() { if (e.state.editor) { var t = l.getNodeById(e.refs.editor.getItemId()); e.refs.editor.updateItem(t) } }) }, newItem: function(e) { this.refs.tree.onAdd(e) }, onCreate: function(e) { var t = this; return c.newEmptyContact().then(function(e) { return e && e.length > 0 && t.setState({ editor: !0 }, function() { t.refs.editor.setItem(e[0], !0) }), e }) }, onEdit: function() { var e = this, t = this.refs.tree.getSelectedItem(); t && this.setState({ editor: !this.state.editor }, function() { e.state.editor && e.refs.editor.setItem(t, !1) }) }, onCloseEditor: function(e) { e && this.refs.tree.deleteByIds([e.id]), this.setState({ editor: !1 }), r.findDOMNode(this.refs.tree).focus() }, deleteSelected: function() { this.refs.tree.deleteSelected() }, filterChange: function(e) { var t = e.target.value; this.setState({ filter: t, items: l.getAsTree(t) }) }, onCompose: function() { var e = this.refs.tree.getSelectedItems(); e && e.length > 0 && u.openURL(g.internalUrl("mailpage", "composer/new", d("Mail - New"), e)) }, onSelect: function(e) { this.state.editor && this.refs.editor.setItem(e, !1), c.selectContact(e), c.setSearchOptions({ fromContact: !0 }), u.openURL(g.internals.mailpage, { singleton: !0 }), r.findDOMNode(this.refs.tree).focus() }, onContextMenu: function(e) { this.refs.tree.unSelectAll(), p(this.refs.tree.getRootContextMenuItems)(e) }, renderTree: function() { return a.createElement(s, { ref: "tree", items: this.state.items, onCreate: this.onCreate, onEdit: this.onEdit, onCompose: this.onCompose, onSelect: this.onSelect, contactSelected: this.contactSelected, contactMenuItems: this.getContactContextMenuItems, __source: { fileName: i, lineNumber: 144 } }) }, renderEditor: function() { return a.createElement(o, { ref: "editor", onClose: this.onCloseEditor, __source: { fileName: i, lineNumber: 158 } }) }, render: function() { if (!this.props.open) return null; var e = h({ "button-toolbar": !0, edit: !0, active: this.state.editor }); return a.createElement("div", { className: "panel", id: "contacts", __source: { fileName: i, lineNumber: 176 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 178 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 179 } }, d("Contacts")), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 181 } }, a.createElement("input", { type: "search", placeholder: d("Search..."), onChange: this.filterChange, __source: { fileName: i, lineNumber: 182 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 185 } }, a.createElement("button", { className: "button-toolbar newcontact", ref: "newButton", title: d("New Contact"), tabIndex: this.props.keyAccess, onClick: this.newItem.bind(this, !1), dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 186 } }), a.createElement("button", { className: "button-toolbar delete", title: d("other", "Delete"), tabIndex: this.props.keyAccess, onClick: this.deleteSelected, dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 192 } }), a.createElement("button", { className: e, title: d("verb", "Edit"), tabIndex: this.props.keyAccess, onClick: this.onEdit, dangerouslySetInnerHTML: { __html: n(217) }, __source: { fileName: i, lineNumber: 197 } }), a.createElement("button", { className: "button-toolbar compose", ref: "compose", title: d("Compose mail to contact"), tabIndex: this.props.keyAccess, onClick: this.onCompose, dangerouslySetInnerHTML: { __html: n(471) }, __source: { fileName: i, lineNumber: 202 } })))), a.createElement("section", { onContextMenu: this.onContextMenu, __source: { fileName: i, lineNumber: 213 } }, this.renderTree()), this.state.editor && this.renderEditor()) } }); e.exports = _ }, function(e, t) { // ========================= // Function_584 // ========================= "use strict"; function n() { for (var e = "", t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = 0; n < 30; n++) e += t.charAt(Math.floor(Math.random() * t.length)); return e } e.exports = n }, function(e, t, n) { // ========================= // Function_585 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/createbookmark/createbookmark.jsx", a = n(1), r = n(9), s = n(40), o = n(393), l = n(350), c = n(45), u = n(39), A = n(2), d = n(4), h = n(5), m = n(404), p = n(10), f = a.createClass({ displayName: "CreateBookmark", mixins: [u, r], getInitialState: function() { return { url: m(this.props.url), title: this.props.title, thumbnail: this.props.thumbnail, nickname: "", description: "", id: "", parentId: "1", treeParentId: "1", animated: !1, generalErrorKey: null } }, componentWillReceiveProps: function(e) { e.open && this.onShowDialog(e) }, onShowDialog: function(e) { var t = this; this.findUnTrashedBookmark(e.url).then(function(n) { n ? t.setState({ id: n.id, url: n.url, thumbnail: n.thumbnail, nickname: n.nickname, description: n.description, title: n.title, parentId: n.parentId, treeParentId: n.parentId, generalErrorKey: null, isBookmarked: !0 }) : t.setState({ id: "", url: e.url, thumbnail: e.thumbnail, nickname: "", description: "", title: e.title, parentId: null, generalErrorKey: null, isBookmarked: !1 }) }) }, findUnTrashedBookmark: function(e) { if (!e) return Promise.resolve(); var t = function e(t) { return t ? t.trash ? Promise.resolve(!0) : t.parentId ? new Promise(function(n) { s.getBookmark(t.parentId, function(t) { n(e(t)) }) }) : Promise.resolve(!1) : Promise.resolve(!1) }; return new Promise(function(n) { d.bookmarks.search({ url: e }, function(e) { return e && 0 !== e.length ? void n(Promise.all(e.map(function(e) { return t(e) })).then(function(t) { for (var n = 0; n < t.length; n++) { var i = t[n]; if (!i) return e[n] } })) : n() }) }) }, onSaveBookmark: function() { return "" === this.state.url.trim() ? void this.setState({ generalErrorKey: A("URL cannot be empty.") }) : void(this.state.isBookmarked ? (this.state.parentId !== this.state.treeParentId && d.bookmarks.move(this.state.id, { parentId: this.state.treeParentId }), this.updateBookmark()) : this.createBookmark()) }, createBookmark: function() { var e = this, t = this.state.url.trim(); p.utilities.isUrlValid(this.state.url, function(n) { n.urlValid && n.schemeValid || (t = "http://" + t), d.bookmarks.create({ title: e.state.title, url: t, thumbnail: e.state.thumbnail, nickname: e.state.nickname, description: e.state.description, parentId: e.state.treeParentId, speeddial: !1 }, function(t) { d.runtime.lastError ? e.setState({ generalErrorKey: o(d.runtime.lastError.message) + "\n " + A("Changes not saved.") }) : (e.setState({ id: t.id, animated: !0, generalErrorKey: null }), setTimeout(function() { e.setState({ animated: !1 }) }, 1e3), e.onClose()) }) }) }, updateBookmark: function() { var e = this, t = this.state.url.trim(); p.utilities.isUrlValid(this.state.url, function(n) { n.urlValid && n.schemeValid || (t = "http://" + t), d.bookmarks.update(e.state.id, { title: e.state.title, url: t, thumbnail: e.state.thumbnail, nickname: e.state.nickname, description: e.state.description }, function(t) { d.runtime.lastError ? e.setState({ generalErrorKey: o(d.runtime.lastError.message) + "\n " + A("Changes not saved.") }) : (e.setState({ generalErrorKey: null }), e.onClose()) }) }) }, onDeleteBookmark: function() { var e = this; d.bookmarks.remove(this.state.id, function() { e.setState(e.getInitialState()), e.onClose() }) }, handleClickOutside: function(e) { this.onClose() }, onClose: function() { this.setState({ id: "" }), this.props.onClose() }, keyDown: function(e) { e.keyCode === c.KEY_ESCAPE && this.onClose() }, onFolderChange: function(e) { var t = e.target.value; this.setState({ treeParentId: t }) }, changeValue: function(e, t) { var n = {}; n[e] = t.target.value, n.generalErrorKey = null, this.setState(n) }, render: function() { return a.createElement("div", { className: "add-bookmark-container addressfield-popup-container", __source: { fileName: i, lineNumber: 240 } }, a.createElement("button", { ref: "addBookmark", tabIndex: this.props.keyAccess, disabled: !this.props.isBookmarkable, dangerouslySetInnerHTML: { __html: n(948) }, className: h({ "button-addressfield": !0, bookmark: !0, bookmarked: this.props.isBookmarked, inactive: !this.props.isBookmarkable, docked: !this.props.isSearchOn, animated: this.state.animated }), onMouseDown: this.props.open ? this.onClose : this.props.onOpen, title: A(this.props.isBookmarked ? "Edit bookmark" : "Add Bookmark"), __source: { fileName: i, lineNumber: 241 } }), this.props.open && a.createElement("div", { className: "dialog-add-bookmark", onKeyDown: this.keyDown, style: { maxHeight: window.innerHeight - 125 + "px" }, __source: { fileName: i, lineNumber: 262 } }, a.createElement("div", { className: "addbookmark-cardwrapper", __source: { fileName: i, lineNumber: 265 } }, a.createElement("div", { className: "cb-image", style: { backgroundImage: "url(" + (this.state.thumbnail ? this.state.thumbnail : "/resources/bookmark_item.png") + ")" }, __source: { fileName: i, lineNumber: 266 } }), a.createElement("div", { className: "dialog-content cardview", __source: { fileName: i, lineNumber: 271 } }, a.createElement("div", { className: "cb-form-row", __source: { fileName: i, lineNumber: 272 } }, a.createElement("input", { className: "cardview title", type: "text", value: this.state.title, onChange: this.changeValue.bind(this, "title"), title: A("Bookmark Name"), placeholder: A("Bookmark Name"), onKeyDown: this.keyDown, autoFocus: !0, __source: { fileName: i, lineNumber: 273 } })), a.createElement("div", { className: "cb-form-row", __source: { fileName: i, lineNumber: 283 } }, a.createElement("input", { className: "cardview address", type: "text", value: this.state.url, onChange: this.changeValue.bind(this, "url"), title: A("Address"), placeholder: A("Address"), onKeyDown: this.keyDown, __source: { fileName: i, lineNumber: 284 } })), a.createElement("div", { className: "cb-form-row cardview", __source: { fileName: i, lineNumber: 293 } }, a.createElement(l, { onChange: this.onFolderChange, selectedItemID: this.state.treeParentId, title: A("Bookmark Folder"), __source: { fileName: i, lineNumber: 294 } })), a.createElement("div", { className: "cb-form-row", __source: { fileName: i, lineNumber: 300 } }, a.createElement("textarea", { className: "cardview description", type: "text", value: this.state.description, onChange: this.changeValue.bind(this, "description"), title: A("Description"), placeholder: A("Description"), onKeyDown: this.keyDown, __source: { fileName: i, lineNumber: 301 } })), a.createElement("div", { className: "cb-form-row", __source: { fileName: i, lineNumber: 310 } }, a.createElement("input", { className: "cardview nickname", type: "text", value: this.state.nickname, onChange: this.changeValue.bind(this, "nickname"), title: A("Nickname"), placeholder: A("Nickname"), onKeyDown: this.keyDown, __source: { fileName: i, lineNumber: 311 } })))), this.state.generalErrorKey && a.createElement("p", { className: "warning", __source: { fileName: i, lineNumber: 322 } }, this.state.generalErrorKey), a.createElement("footer", { className: "dialog-footer cardview", __source: { fileName: i, lineNumber: 324 } }, a.createElement("input", { type: "button", autoFocus: !0, className: "primary", value: A("Save"), onClick: this.onSaveBookmark, __source: { fileName: i, lineNumber: 325 } }), a.createElement("input", { type: "button", value: A("other", "Delete"), disabled: !this.state.isBookmarked, onClick: this.onDeleteBookmark, __source: { fileName: i, lineNumber: 330 } }), a.createElement("input", { type: "button", value: A("Cancel"), onClick: this.onClose, __source: { fileName: i, lineNumber: 334 } })))) } }); e.exports = f }, function(e, t, n) { // ========================= // Function_586 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/ClearBrowsingHistoryDialog.jsx", a = n(1), r = n(34), s = n(606), o = a.createClass({ displayName: "ClearBrowsingHistoryDialog", _onNo: function() { this.props.onClose() }, _onYes: function() { this.props.onClose() }, render: function() { return a.createElement(r, { onRequestClose: this._onNo, __source: { fileName: i, lineNumber: 17 } }, a.createElement(s, { onNo: this._onNo, onYes: this._onYes, __source: { fileName: i, lineNumber: 18 } })) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_587 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/VisualTabSwitcher.jsx", a = n(1), r = n(9), s = n(45), o = n(17), l = n(5), c = n(3), u = n(20), A = u.urls, d = 212, h = 24, m = a.createClass({ displayName: "VisualTabSwitcher", mixins: [r], getInitialState: function() { return { selected: o.getActivePage(), pages: o.getPages(), workingPageSet: [] } }, componentWillMount: function() { this.createPageList() }, componentDidMount: function() { this.refs.visualTabSwitcher.focus(), o.addChangeListener(this.onPageStoreChange) }, componentWillUnmount: function() { o.removeChangeListener(this.onPageStoreChange) }, onPageStoreChange: function() { this.createPageList() }, getMaxAllowedWidth: function() { return window.innerWidth - d }, getNumberOfPreviews: function() { if (this.state.pages.size * d < this.getMaxAllowedWidth()) return this.state.pages.size; for (var e = 1; (e + 1) * d + h < this.getMaxAllowedWidth() && e < this.state.pages.size;) e++; return e }, getPagesInOrder: function() { var e = this.state.pages, t = this.state.selected, n = o.getPageHistory(), i = c.getSync("TAB_CYCLING_ORDER"); if ("recently used" === i) return n.map(function(t) { return e.find(function(e) { return e.get("id") === t }) }).reverse(); var a = e.slice(e.indexOf(t), e.size); return a.concat(e.slice(0, e.indexOf(t))) }, createPageList: function() { var e = this.getPagesInOrder(), t = this.getNumberOfPreviews(), n = 1, i = []; e.size < t && (n = Math.ceil(t / e.size)); for (var a = 0; a < n + 3; a++) e.map(function(e, t) { i.push({ uid: Math.random(), page: e }) }); var r = e.indexOf(this.state.selected) + e.size + 1, s = e.size + r - Math.ceil(t / 2); i.splice(t + s, i.length), i.splice(0, s), this.setState({ workingPageSet: i, pages: e }) }, updateWorkingSetWithOffset: function(e) { var t = this.state.pages, n = this.state.workingPageSet.slice(), i = void 0; switch (e) { case 1: i = "forward"; break; case -1: i = "back"; break; default: return } if ("forward" === i) { var a = n[n.length - 1], r = t.indexOf(a.page) + 1; r = (r % t.size + t.size) % t.size, n.splice(0, 1), n.push({ page: t.get(r), uid: Math.random() }) } else if ("back" === i) { var s = t.indexOf(n[0].page) - 1; s = (s % t.size + t.size) % t.size, n.splice(n.length - 1, 1), n.unshift({ page: t.get(s), uid: Math.random() }) } this.setState({ workingPageSet: n }) }, getSelectedPageWithOffset: function(e) { var t = this.state.pages, n = t.indexOf(this.state.selected) + e; return n = (n % t.size + t.size) % t.size, t.get(n) }, onKeyUp: function(e) { e.keyCode === s.KEY_CTRL && (this.props.onClose(), e.stopPropagation(), e.preventDefault()) }, navigateWithOffset: function(e) { this.state.pages.size * d > this.getMaxAllowedWidth() && this.updateWorkingSetWithOffset(e), this.setState({ selected: this.getSelectedPageWithOffset(e) }) }, selectBack: function() { this.navigateWithOffset(-1) }, selectForward: function() { this.navigateWithOffset(1) }, selectByUid: function(e) { for (var t in this.state.workingPageSet) { var n = this.state.workingPageSet[t]; if (n.uid === e) { this.setState({ selected: n.page }); break } } }, render: function() { var e = this; return a.createElement("div", { className: "tabswitcher", tabIndex: "1", ref: "visualTabSwitcher", style: { width: this.getNumberOfPreviews() * d + h + "px" }, onKeyUp: this.onKeyUp, __source: { fileName: i, lineNumber: 219 } }, a.createElement("div", { className: "visual-tabs visual-tabs-" + this.state.direction, __source: { fileName: i, lineNumber: 226 } }, this.state.workingPageSet.map(function(t) { return a.createElement("div", { key: "visual-tab-" + t.uid, onMouseDown: e.selectByUid.bind(e, t.uid), style: { backgroundImage: "url(" + t.page.getIn(["extData", "thumbnail"]) + ")" }, title: A.getDisplayTitle(t.page), className: l({ "visual-tab": !0, selected: t.page.get("id") === e.state.selected.get("id") }), __source: { fileName: i, lineNumber: 228 } }, a.createElement("div", { className: "visual-tab-favicon-container", __source: { fileName: i, lineNumber: 237 } }, a.createElement("img", { className: "visual-tab-favicon", src: t.page.get("favIcon"), __source: { fileName: i, lineNumber: 238 } }))) })), a.createElement("div", { className: "visual-tab-switcher-title", __source: { fileName: i, lineNumber: 244 } }, A.getDisplayTitle(this.state.selected))) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_588 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/confirmOpenBookmarksDialog.jsx", r = n(1), s = n(40), o = n(34), l = n(3), c = n(2), u = r.createClass({ displayName: "ConfirmOpenBookmarksDialog", getInitialState: function() { return { doNotShowAgain: !1 } }, _onNo: function() { this.props.onClose() }, _onYes: function() { l.set({ BOOKMARKS_CONFIRM_BEFORE_OPEN: !this.state.doNotShowAgain }), s.open(this.props.options), this.props.onClose() }, _toggleDoNotShowAgain: function() { this.setState({ doNotShowAgain: !this.state.doNotShowAgain }) }, render: function() { var e; return r.createElement(o, { onRequestClose: this._onNo, __source: { fileName: a, lineNumber: 32 } }, r.createElement("header", { className: "dialog-header", __source: { fileName: a, lineNumber: 33 } }, r.createElement("h1", { className: "dialog-title", __source: { fileName: a, lineNumber: 34 } }, c("Open Bookmarks"))), r.createElement("form", { onSubmit: this._onYes, __source: { fileName: a, lineNumber: 37 } }, r.createElement("div", { className: "dialog-content", __source: { fileName: a, lineNumber: 38 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 39 } }, c("Do you want to open $1 bookmark?", "Do you want to open $1 bookmarks?", [this.props.options.bookmarks.length])), r.createElement("label", { className: "dialog-checkbox", __source: { fileName: a, lineNumber: 44 } }, r.createElement("input", { type: "checkbox", checked: this.state.doNotShowAgain, onChange: this._toggleDoNotShowAgain, __source: { fileName: a, lineNumber: 45 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 48 } }, c("Do not ask again")))), r.createElement("footer", { className: "dialog-footer", __source: { fileName: a, lineNumber: 52 } }, r.createElement("input", (e = { type: "submit", autoFocus: !0, onClick: this._onYes, value: c("Yes") }, i(e, "autoFocus", !0), i(e, "__source", { fileName: a, lineNumber: 53 }), e)), r.createElement("input", { type: "button", onClick: this._onNo, value: c("No"), __source: { fileName: a, lineNumber: 58 } })))) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_589 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/dialogRenderWrapper.jsx", a = n(1), r = n(590), s = n(591), o = n(355), l = n(672), c = n(615), u = a.createClass({ displayName: "DialogRenderWrapper", getInitialState: function() { return { dialogParentElement: null, customData: null, closeDialog: null } }, render: function() { return "download" === this.props.customData.dialogtype ? a.createElement(r, { dialogParentElement: this.props.dialogParentElement, customData: this.props.customData, onClose: this.props.closeDialog, __source: { fileName: i, lineNumber: 19 } }) : "importbookmarks" === this.props.customData.dialogtype ? a.createElement(o, { dialogParentElement: this.props.dialogParentElement, onClose: this.props.closeDialog, __source: { fileName: i, lineNumber: 24 } }) : "createSearch" === this.props.customData.dialogtype ? a.createElement(l, { dialogParentElement: this.props.dialogParentElement, onClose: this.props.closeDialog, name: this.props.customData.Name, url: this.props.customData.Url, __source: { fileName: i, lineNumber: 28 } }) : "javascript" === this.props.customData.dialogtype ? a.createElement(s, { dialogParentElement: this.props.dialogParentElement, customData: this.props.customData, onClose: this.props.closeDialog, __source: { fileName: i, lineNumber: 34 } }) : "fullscreen" === this.props.customData.dialogtype ? a.createElement(c, { ref: "fullscreenbubble", dialogParentElement: this.props.dialogParentElement, customData: this.props.customData, onClose: this.props.closeDialog, __source: { fileName: i, lineNumber: 39 } }) : (console.error("DialogRenderWrapper.render: unknown dialogtype:" + this.props.customData.dialogtype), null) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_590 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/downloadDialog.jsx", a = n(1), r = n(36), s = n(183), o = n(34), l = n(3), c = n(13), u = n(2), A = n(94), d = a.createClass({ displayName: "DownloadDialog", mixins: [c], vivaldiSettingsKeys: ["SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS"], getInitialState: function() { return { shown: !0, modalShown: !1, openSavedFiles: !1, askNextTime: !1 } }, componentWillMount: function() { l.get("OPEN_SAFE_FILES", function(e) { this.setState({ openSavedFiles: e }) }.bind(this)) }, componentDidMount: function() { this.refs.defaultAction.focus() }, componentWillReceiveProps: function() { this.setState({ shown: !0 }) }, onOpen: function() { this.props.customData.request.allow("open"), this.setState({ shown: !this.state.shown }), !document.querySelector("#panels-container .downloads.active") && this.state.SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS && A.executeActions("COMMAND_SHOW_DOWNLOADS_PANEL"), this.close() }, onSave: function() { this.props.customData.request.allow(), this.setState({ shown: !this.state.shown }), !document.querySelector("#panels-container .downloads.active") && this.state.SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS && A.executeActions("COMMAND_SHOW_DOWNLOADS_PANEL"), this.close() }, onSaveAs: function() { this.props.customData.request.allow("saveas"), this.setState({ shown: !this.state.shown }), !document.querySelector("#panels-container .downloads.active") && this.state.SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS && A.executeActions("COMMAND_SHOW_DOWNLOADS_PANEL"), this.close() }, onCancel: function() { this.props.customData.request.deny(), this.setState({ shown: !this.state.shown }), this.close() }, close: function() { l.set({ AUTOMATICALLY_DOWNLOAD_FILES: this.state.askNextTime }), this.props.onClose() }, onSetOpeningFiles: function() { this.setState({ openSavedFiles: !this.state.openSavedFiles }), l.set({ OPEN_SAFE_FILES: !this.state.openSavedFiles }), this.refs.defaultAction.focus() }, onAskDownloadChanged: function(e) { this.setState({ askNextTime: e.target.value }) }, render: function() { var e = this.props.customData.suggestedFilename ? this.props.customData.suggestedFilename : r.parse(this.props.customData.url).pathname.split("/").pop(), t = r.parse(this.props.customData.url).hostname, n = this.props.customData.fileSize === -1 ? u("Unknown") : s.filesize(this.props.customData.fileSize); return a.createElement(o, { __source: { fileName: i, lineNumber: 108 } }, a.createElement("div", { className: "dialog-download", __source: { fileName: i, lineNumber: 109 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 110 } }, a.createElement("h1", { className: "dialog-title", title: e, __source: { fileName: i, lineNumber: 112 } }, u("Download “$1”?", [e]))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 117 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 118 } }, a.createElement("span", { className: "label", title: e, __source: { fileName: i, lineNumber: 119 } }, u("File Name:")), e), a.createElement("p", { __source: { fileName: i, lineNumber: 122 } }, a.createElement("span", { className: "label", __source: { fileName: i, lineNumber: 122 } }, u("File Size:")), n), a.createElement("p", { __source: { fileName: i, lineNumber: 123 } }, a.createElement("span", { className: "label", __source: { fileName: i, lineNumber: 123 } }, u("Host:")), t), a.createElement("label", { className: "autosave", __source: { fileName: i, lineNumber: 124 } }, a.createElement("input", { type: "checkbox", onChange: this.onAskDownloadChanged, __source: { fileName: i, lineNumber: 125 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 128 } }, u("Always Save Files to Default Download Location")))), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 131 } }, a.createElement("input", { type: "button", className: "primary", onClick: this.onSave, ref: "defaultAction", value: u("Save"), __source: { fileName: i, lineNumber: 132 } }), a.createElement("input", { type: "button", onClick: this.onSaveAs, value: u("Save As..."), __source: { fileName: i, lineNumber: 138 } }), a.createElement("input", { type: "button", onClick: this.onOpen, value: u("Open"), __source: { fileName: i, lineNumber: 142 } }), a.createElement("input", { type: "button", onClick: this.onCancel, value: u("Cancel"), __source: { fileName: i, lineNumber: 146 } })))) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_591 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/javascriptDialog.jsx", a = n(1), r = n(4), s = n(34), o = n(2), l = n(36), c = l.parse, u = n(7), A = u.delay, d = a.createClass({ displayName: "JavascriptDialog", getInitialState: function() { return { shown: !0, modalShown: !1, customData: this.props.customData, onClose: null, promptValue: this.props.customData.defaultPromptText, stopScripts: !1 } }, handleLoadStart: function(e) { e.isTopLevel && this.onCancel() }, componentWillMount: function() { this.props.customData.webview.addEventListener("loadstart", this.handleLoadStart), this._lastFocused = document.activeElement }, componentDidMount: function() { var e = this; "prompt" !== this.props.customData.messageType ? A(function() { return e.refs.okButton.focus() }, 80) : A(function() { return e.refs.promptInput.focus() }, 80) }, componentWillUnmount: function() { this.props.customData.webview.removeEventListener("loadstart", this.handleLoadStart) }, componentWillReceiveProps: function() { this.setState({ shown: !0 }) }, onOk: function() { this.setState({ shown: !this.state.shown }), this.state.stopScripts ? r.contentSettings.javascript.set({ primaryPattern: this.props.customData.url + "*", setting: "block" }, function() { this.props.customData.webview.stop(), this.onCancel() }.bind(this)) : (this.props.customData.dialog.ok(this.state.promptValue), this.props.onClose()), this.returnFocus() }, onCancel: function() { this.props.customData.dialog.cancel(), this.setState({ shown: !this.state.shown }), this.props.onClose(), this.returnFocus() }, returnFocus: function() { this._lastFocused && this._lastFocused.focus() }, handlePrompt: function(e) { this.setState({ promptValue: e.target.value }) }, handleStopScripts: function(e) { this.setState({ stopScripts: e.target.checked }) }, render: function() { var e = c(this.props.customData.url).hostname, t = this.props.customData.messageType, n = e ? o("JavaScript from “$1”", [e]) : o("JavaScript from localhost"), r = null; return a.createElement(s, { dialogWidth: 400, onRequestClose: this.onCancel, __source: { fileName: i, lineNumber: 107 } }, a.createElement("div", { className: "dialog-javascript", __source: { fileName: i, lineNumber: 108 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 110 } }, a.createElement("h1", { className: "dialog-title", title: n, __source: { fileName: i, lineNumber: 111 } }, n)), a.createElement("form", { onSubmit: this.onOK, __source: { fileName: i, lineNumber: 113 } }, a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 114 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 115 } }, this.props.customData.messageText), "prompt" === t && a.createElement("input", { type: "text", ref: "promptInput", value: this.state.promptValue, onChange: this.handlePrompt, __source: { fileName: i, lineNumber: 119 } })), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 126 } }, a.createElement("input", { ref: "okButton", type: "submit", value: o("OK"), onClick: this.onOk, __source: { fileName: i, lineNumber: 127 } }), "alert" !== t && a.createElement("input", { type: "button", onClick: this.onCancel, value: o("Cancel"), __source: { fileName: i, lineNumber: 133 } }), r)))) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_592 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/openSessionDialog.jsx", a = n(1), r = n(69), s = n(10), o = n(34), l = n(2), c = n(650), u = n(169), A = n(98), d = [{ text: l("Name"), value: "name", fullScreenTitle: l("Sort by Name") }, { text: l("Creation Date"), value: "createDateJS", fullScreenTitle: l("Sort by Creation Date") }], h = a.createClass({ displayName: "OpenSessionDialog", getInitialState: function() { return { sessions: [], disabled: !0, openInNewWindow: !0, sessionSorting: { sortOrder: A.NO_SORTING, sortField: "manually", comparator: this.sortComparator } } }, componentDidMount: function() { this.refreshSessionList(), this.updateSelectedSessions() }, sortComparator: function(e, t) { var n = this.state.sessionSorting, i = n.sortOrder, a = n.sortField, r = A.getDefaultComparator(i, a); return r(e, t) }, refreshSessionList: function() { var e = this; s.sessionsPrivate.getAll(function(t) { Array.isArray(t) && ! function() { var n = 1; t.forEach(function(e) { e.id = n++ }), e.setState({ sessions: t }) }() }) }, updateSelectedSessions: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0; if (this.refs.sessionTree) { var t = !1, n = this.refs.sessionTree.getSelectedSessions(); n.length >= 1 && (t = !0), this.setState({ disabled: void 0 !== e ? !e : !t }) } }, onDelete: function() { for (var e = this, t = this.refs.sessionTree.getSelectedSessions(), n = 0; n < t.length; n++) s.sessionsPrivate.delete(t[n].name, function(t) { t && console.warn("Error deleting session '" + e.state.sessions[n].name + "', error: " + t) }); this.refreshSessionList() }, onOpenSessions: function(e) { for (var t = { openInNewWindow: this.state.openInNewWindow }, n = this.refs.sessionTree.getSelectedSessions(), i = 0; i < n.length; i++) s.sessionsPrivate.open(n[i].name, t, function(e) { e && console.warn("Error opening session '" + n[i].value + "', error: " + e) }); this.props.onClose() }, onSortChange: function(e, t) { var n = r(this.state, { sessionSorting: { sortOrder: { $set: e }, sortField: { $set: t } } }); this.setState(n) }, _toggleOpenInNewWindow: function(e) { this.setState({ openInNewWindow: !this.state.openInNewWindow }) }, render: function() { return a.createElement(o, { onRequestClose: this.props.onClose, dialogWidth: 600, __source: { fileName: i, lineNumber: 111 } }, a.createElement("div", { className: "open-session", __source: { fileName: i, lineNumber: 112 } }, a.createElement("form", { className: "dialog-session", onSubmit: this.onOpenSessions, __source: { fileName: i, lineNumber: 113 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 114 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 115 } }, l("Open Session"))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 117 } }, a.createElement("div", { className: "session-list", __source: { fileName: i, lineNumber: 118 } }, a.createElement(u, { fields: d, onSortChange: this.onSortChange, fullsize: !0, sortField: this.state.sessionSorting.sortField, sortOrder: this.state.sessionSorting.sortOrder, __source: { fileName: i, lineNumber: 119 } }), a.createElement("div", { className: "vivaldi-tree-container", __source: { fileName: i, lineNumber: 125 } }, a.createElement(c, { ref: "sessionTree", sessionSorting: this.state.sessionSorting, onOpenSessions: this.onOpenSessions, onUpdateSelection: this.updateSelectedSessions, onClose: this.props.onClose, nodes: this.state.sessions, __source: { fileName: i, lineNumber: 126 } }))), a.createElement("label", { className: "dialog-checkbox", __source: { fileName: i, lineNumber: 135 } }, a.createElement("input", { type: "checkbox", checked: this.state.openInNewWindow, onChange: this._toggleOpenInNewWindow, __source: { fileName: i, lineNumber: 136 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 139 } }, l("Open Session in a New Window")))), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 142 } }, a.createElement("input", { type: "submit", disabled: this.state.disabled, value: l("session", "Open"), __source: { fileName: i, lineNumber: 143 } }), a.createElement("input", { type: "button", onClick: this.onDelete, className: "danger", disabled: this.state.disabled, value: l("session", "Delete"), __source: { fileName: i, lineNumber: 147 } }), a.createElement("input", { type: "button", onClick: this.props.onClose, value: l("session", "Cancel"), __source: { fileName: i, lineNumber: 153 } }))))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_593 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/saveSessionDialog.jsx", a = n(4), r = n(1), s = n(10), o = n(34), l = n(2), c = r.createClass({ displayName: "SaveSessionDialog", getInitialState: function() { return { shown: !0, name: "", invalidInput: !1, errorSaving: !1, saveOnlyCurrentWindow: !1 } }, componentDidMount: function() { this.refs.inputName.focus() }, handleClick: function() { this.state.shown && this.props.onClose(), this.setState({ shown: !this.state.shown }) }, onSaveSession: function() { var e = this; a.windows.getCurrent({ windowTypes: ["normal"] }, function(t) { var n = { saveOnlyWindowId: 0 }; e.state.saveOnlyCurrentWindow === !0 && (n.saveOnlyWindowId = t.id), s.sessionsPrivate.saveOpenTabs(e.state.name, n, function(t) { 0 === t ? e.props.onClose() : e.setState({ errorSaving: !0 }) }) }) }, isValidName: function(e) { var t = /^[^\\/:\*\?"<>\|]+$/, n = /^\./, i = /^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i; return t.test(e) && !n.test(e) && !i.test(e) }, nameChange: function(e) { "" === e.target.value || this.isValidName(e.target.value) ? this.setState({ name: e.target.value, invalidInput: !1 }) : this.setState({ invalidInput: !0 }) }, _toggleSaveOnlyCurrentWindow: function() { this.setState({ saveOnlyCurrentWindow: !this.state.saveOnlyCurrentWindow }) }, render: function() { var e = ""; return this.state.invalidInput === !0 ? e = l("Invalid character in the session name.") : this.state.errorSaving && (e = l("Error saving the session.")), r.createElement(o, { onRequestClose: this.handleClick, __source: { fileName: i, lineNumber: 78 } }, r.createElement("div", { className: "save-session", __source: { fileName: i, lineNumber: 79 } }, r.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 80 } }, r.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 81 } }, l("Save Open Tabs as Session"))), r.createElement("form", { onSubmit: this.onSaveSession, __source: { fileName: i, lineNumber: 83 } }, r.createElement("div", { className: "dialog-content session-dialog", __source: { fileName: i, lineNumber: 84 } }, r.createElement("input", { type: "text", ref: "inputName", placeholder: l("Session Name"), onChange: this.nameChange, spellCheck: "false", __source: { fileName: i, lineNumber: 85 } }), r.createElement("label", { className: "dialog-checkbox", __source: { fileName: i, lineNumber: 90 } }, r.createElement("input", { type: "checkbox", checked: this.state.saveOnlyCurrentWindow, onChange: this._toggleSaveOnlyCurrentWindow, __source: { fileName: i, lineNumber: 91 } }), r.createElement("span", { __source: { fileName: i, lineNumber: 94 } }, l("Save Only Tabs In Current Window")))), "" !== e && r.createElement("div", { className: "error-validation", __source: { fileName: i, lineNumber: 98 } }, r.createElement("input", { type: "text", value: e, readOnly: "true", __source: { fileName: i, lineNumber: 99 } })), r.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 104 } }, r.createElement("input", { type: "button", className: "primary", onClick: this.onSaveSession, value: l("Save"), disabled: this.state.invalidInput === !0, __source: { fileName: i, lineNumber: 105 } }), r.createElement("input", { type: "button", onClick: this.handleClick, value: l("Cancel"), __source: { fileName: i, lineNumber: 110 } }))))) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_594 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/dialogs/showKeyboardShortcuts.jsx", a = n(1), r = n(368), s = n(13), o = n(2), l = a.createClass({ displayName: "ShowKeyboardShortcuts", mixins: [s], vivaldiSettingsKeys: ["DISABLE_SINGLE_KEY_SHORTCUTS"], getInitialState: function() { return { filter: "" } }, componentDidMount: function() { this.refs.comboFilter.focus() }, onSettingsFilter: function(e) { var t = e.target.value.toLowerCase(), n = t.replace(/⌘/g, "meta").replace(/⌥/g, "alt").replace(/⇧/g, "shift").replace(/⌃/g, "ctrl"); this.setState({ filter: n }) }, onKeyDown: function(e) { "Escape" === e.nativeEvent.code && (this.props.onClose(), e.stopPropagation(), e.preventDefault()) }, render: function() { return a.createElement("div", { className: "keyboardShortcutsWrapper", tabIndex: "0", ref: "keyboardList", onKeyDown: this.onKeyDown, __source: { fileName: i, lineNumber: 46 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 50 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 51 } }, o("Keyboard Cheat Sheet")), a.createElement("input", { className: "search", ref: "comboFilter", type: "search", placeholder: o("Filter Commands"), onChange: this.onSettingsFilter, __source: { fileName: i, lineNumber: 52 } }), a.createElement("button", { className: "close", onClick: this.props.onClose, dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: i, lineNumber: 57 } })), a.createElement("div", { className: this.state.DISABLE_SINGLE_KEY_SHORTCUTS ? "keystrokes singlekeydisabled" : "keystrokes", __source: { fileName: i, lineNumber: 63 } }, a.createElement(r, { filter: this.state.filter, view: "read-only", __source: { fileName: i, lineNumber: 65 } }))) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_595 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/downloads/DownloadItem.jsx", r = n(1), s = i(r), o = n(648), l = i(o), c = n(47), u = i(c), A = n(2), d = i(A), h = n(4), m = i(h), p = n(183), f = i(p), g = n(21), _ = i(g), v = s.default.createClass({ displayName: "DownloadItem", getInitialState: function() { return {} }, shouldComponentUpdate: function(e, t) { return (0, _.default)(this, e, t) }, onShow: function() { m.default.downloads.show(this.props.item.id) }, onPause: function() { m.default.downloads.pause(this.props.item.id) }, onResume: function() { m.default.downloads.resume(this.props.item.id) }, handleMouseEnter: function(e) { u.default.setStatus(e) }, handleMouseLeave: function() { u.default.clearStatus() }, render: function() { var e = this.props.item.filename.split("\\").pop().split("/").pop(), t = this.props.item.bytesReceived, n = f.default.filesize(t), i = new Date(this.props.item.estimatedEndTime).getTime(), r = (new Date).getTime() + 2e3, o = "in_progress" === this.props.item.state, c = !1; o && i > r ? c = f.default.relativeTime(i / 1e3) : o && i <= r && (c = (0, d.default)("about a second")); var u = f.default.filesize(this.props.item.totalBytes ? this.props.item.totalBytes : this.props.item.bytesReceived); return s.default.createElement("li", { tabIndex: "-1", className: ("complete" === this.props.item.state ? "loaded" : "") + (this.props.isSelected ? " selected" : ""), onMouseEnter: "off" === this.props.showFooter ? null : this.handleMouseEnter.bind(this, this.props.item.url), onMouseLeave: "off" === this.props.showFooter ? null : this.handleMouseLeave, title: e, __source: { fileName: a, lineNumber: 60 } }, s.default.createElement("div", { className: "icon", __source: { fileName: a, lineNumber: 70 } }, s.default.createElement("img", { src: this.props.item.icon, __source: { fileName: a, lineNumber: 71 } })), s.default.createElement("div", { className: "file", __source: { fileName: a, lineNumber: 73 } }, s.default.createElement("div", { className: "filename", __source: { fileName: a, lineNumber: 74 } }, e), "in_progress" === this.props.item.state && s.default.createElement(l.default, { type: "bar", overridePercent: "complete" === this.props.item.state ? 100 : -1, totalSize: this.props.item.totalBytes, currentSize: t, __source: { fileName: a, lineNumber: 78 } }), s.default.createElement("div", { className: "size", __source: { fileName: a, lineNumber: 83 } }, "complete" === this.props.item.state ? u : this.props.item.paused ? (0, d.default)("$1 of $2 — stopped", [n, u]) : (0, d.default)("$1 of $2", [n, u]), c && " " + (0, d.default)("($1)", [c])))) } }); e.exports = v }, function(e, t, n) { // ========================= // Function_596 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/downloads/DownloadPanel.jsx", a = n(1), r = n(11), s = n(597), o = n(27), l = n(15), c = n(58), u = n(2), A = n(4), d = n(113), h = n(30), m = n(21), p = n(177), f = p.showNotification, g = 500, _ = a.createClass({ displayName: "DownloadPanel", blockApi: !1, restartingIds: o.List(), getInitialState: function() { return { downloadItems: o.List(), iconItems: o.Map(), pollTimer: -1, hasActiveTransfersSelected: !1, hasPausedTransfersSelected: !1, hasCompletedTransfersSelected: !1, hasCompletedTransfers: !1, activeItemId: void 0, filter: "", isIncognitoWindow: !1, topMost: 0 } }, getDownloadItems: function() { return this.state.downloadItems }, componentWillMount: function() { var e = this; A.downloads && A.downloads.setShelfEnabled(!1), window.vivaldiWindowId && A.windows.get(window.vivaldiWindowId, function(t) { t && e.setState({ isIncognitoWindow: t.incognito }) }) }, componentDidMount: function() { var e = this; A.downloads.onCreated.addListener(this.onTransferCreated), A.downloads.onChanged.addListener(this.onTransferChanged), A.downloads.onErased.addListener(this.onTransferErased), A.downloads.onDeterminingFilename.addListener(this.onDetermineFileName), A.downloads.search({}, function(t) { e.onTransfersInstalled(t) }), c.addChangeListener(this.onPanelStoreChange) }, componentDidUpdate: function(e, t) { if (!e.open && this.props.open && (r.findDOMNode(this.refs.downloadTree).focus(), 0 === this.refs.downloadTree.getSelectedNodes().length)) { var n = this.getDownloadItems(); n.size > 0 && this.refs.downloadTree.selectById(n.get(0).id) } }, componentWillUnmount: function() { A.downloads.onCreated.removeListener(this.onTransferCreated), A.downloads.onChanged.removeListener(this.onTransferChanged), A.downloads.onErased.removeListener(this.onTransferErased), A.downloads.onDeterminingFilename.removeListener(this.onDetermineFileName), c.removeChangeListener(this.onPanelStoreChange) }, shouldComponentUpdate: function(e, t) { return m(this, e, t) }, onPanelStoreChange: function(e) { this.props.open && "setFocus" === e && !d(r.findDOMNode(this)) && r.findDOMNode(this.refs.downloadTree).focus() }, onTransfersInstalled: function(e) { var t = this, n = e.sort(function(e, t) { return Date.parse(e.startTime) - Date.parse(t.startTime) }).filter(function(e) { return !(e.incognito === !0 && t.state.isIncognitoWindow === !1) }), i = this.state.iconItems; return Promise.all(n.map(function(e) { return new Promise(function(t) { A.downloads.getFileIcon(e.id, { size: 32 }, function(n) { A.runtime.lastError || (e.icon = n, i = i.set(e.id, n)), t(e) }) }) })).then(function(e) { var n = o.List(); e.forEach(function(e) { n = n.unshift(e) }), t.setState({ downloadItems: n, iconItems: i }) }) }, onTransferCreated: function(e) { var t = this; A.windows.getLastFocused(function(e) { t.setState({ topMost: e.id }) }); var n = !0; if (this.state.isIncognitoWindow === !1 && e.incognito === !0 && (n = !1), n && !this.blockApi) { this.updateIcon(e.id); var i = this.getDownloadItems().unshift(e); this.setState({ downloadItems: i }), this.startPolling() } }, onTransferChanged: function(e) { var t = this, n = this.restartingIds.filter(function(t) { return t === e.id }); if (!(n.size > 0)) { var i = !1, a = this.getDownloadItems(), r = []; a = a.map(function(n) { return n.id === e.id ? (e.state && e.state.current !== e.state.previous && (n.state = e.state.current, "in_progress" === n.state && n.paused === !1 ? i = !0 : "interrupted" === n.state && "" === n.filename ? r.push(n.id) : "complete" === n.state && "in_progress" === e.state.previous && t.onTransferFinished(n)), e.paused && e.paused.current !== e.paused.previous && (n.paused = e.paused.current), e.canResume && e.canResume.current !== e.canResume.previous && (n.canResume = e.canResume.current), e.bytesReceived && (n.bytesReceived = e.bytesReceived.current), e.estimatedEndTime && (n.estimatedEndTime = e.estimatedEndTime.current), e.totalBytes && (n.totalBytes = e.totalBytes.current), e.filename && e.filename.current !== e.filename.previous ? (n.filename = e.filename.current, t.updateIcon(n.id)) : n.filename && !n.icon && t.updateIcon(n.id), e.danger && e.danger.current !== e.danger.previous && (n.danger = e.danger.current, A.downloads.acceptDanger(n.id, function() { A.runtime.lastError })), Object.assign({}, n)) : n }), this.setState({ downloadItems: a }), r.length > 0 && this.onErase(r), i && this.startPolling() } }, onTransferFinished: function(e) { this.props.notifications && this.state.topMost === window.vivaldiWindowId && f({ title: u("Download Complete"), body: e.filename.split("\\").pop().split("/").pop(), icon: e.icon, callback: function() { return A.downloads.show(e.id) } }) }, onTransferErased: function(e) { if (!this.blockApi) { var t = this.getDownloadItems().filter(function(t) { return t.id !== e }); this.setState({ downloadItems: t }) } this.setState({ iconItems: this.state.iconItems.delete(e) }) }, onDetermineFileName: function(e, t) { function n(e, n) { t({ filename: e, conflictAction: n }) } n(e.filename, "uniquify") }, getOpenInMenu: function() { return [Object.assign({ handler: this.openSelected }, h("the file", "External Viewer")), { name: "---" }, Object.assign({ handler: this.openSelectedInTab.bind(this, !0, !1) }, h("Current Tab")), Object.assign({ handler: this.openSelectedInTab.bind(this, !1, !1) }, h("open in", "New Tab")), Object.assign({ handler: this.openSelectedInTab.bind(this, !1, !0) }, h("Background Tab")), { name: "---" }, Object.assign({ handler: this.openSelectedInWindow.bind(this, !1, !1) }, h("open in", "New Window")), Object.assign({ handler: this.openSelectedInWindow.bind(this, !0, !1) }, h("Background Window")), Object.assign({ handler: this.openSelectedInWindow.bind(this, !1, !0) }, h("Private Window"))] }, getContextMenuItems: function() { var e = this.updateActiveProgressState(), t = this.hasSelectedImages(); return [Object.assign({ handler: this.openSelected, visible: e.hasCompletedTransfersSelected && !t }, h("the file", "Open File")), Object.assign({ items: this.getOpenInMenu(), visible: t, ellipsis: !0 }, h("Open in")), Object.assign({ handler: this.showSelectedInFilemanager }, h("MacIntel" === navigator.platform ? "Show in Finder" : "Show in File Manager")), Object.assign({ handler: this.copySelectedAddress }, h("Copy Download Address")), Object.assign({ handler: this.copySelectedPath, visible: e.hasCompletedTransfersSelected }, h("Copy Local Path")), { name: "---", visible: e.hasActiveTransfersSelected }, Object.assign({ handler: this.stopSelected, visible: e.hasActiveTransfersSelected }, h("Stop")), Object.assign({ handler: this.resumeSelected, visible: e.hasPausedTransfersSelected }, h("Resume")), { name: "---" }, Object.assign({ handler: this.removeSelected }, h("Remove")), Object.assign({ handler: this.removeAllFinished, visible: e.hasCompletedTransfers }, h("Clear Finished Downloads"))] }, getSelectedItems: function() { var e = this.refs.downloadTree ? this.refs.downloadTree.getSelectedNodes().map(function(e) { return e.id }) : [], t = this.state.downloadItems.filter(function(t) { return e.findIndex(function(e) { return e === t.id }) !== -1 }); return t }, getImageItems: function(e) { var t = (e ? this.getSelectedItems() : this.getDownloadItems()).filter(function(e) { return "complete" === e.state && e.mime.startsWith("image/") }); return t }, hasSelectedImages: function() { return this.getImageItems(!0).size > 0 }, updateActiveProgressState: function() { for (var e = !1, t = !1, n = !1, i = !1, a = this.getSelectedItems().toArray(), r = 0; r < a.length; r++) { var s = a[r]; if ("in_progress" === s.state ? s.paused ? t = !0 : e = !0 : "complete" === s.state && (n = i = !0), e && t && n) break } if (!i) { a = this.state.downloadItems.toArray(); for (var o = 0; o < a.length; o++) { var l = a[o]; if ("complete" === l.state) { i = !0; break } } } var c = { hasActiveTransfersSelected: e, hasPausedTransfersSelected: t, hasCompletedTransfersSelected: n, hasCompletedTransfers: i }; return this.setState(c), c }, updateIcon: function(e) { var t = this; A.downloads.getFileIcon(e, { size: 32 }, function(n) { if (!A.runtime.lastError) { var i = t.state.iconItems; i = i.set(e, n), t.setState({ iconItems: i }); var a = t.state.downloadItems.map(function(t) { return t.id === e ? (t.icon = n, Object.assign({}, t)) : t }); t.setState({ downloadItems: a }) } }) }, stopSelected: function() { this.getSelectedItems().filter(function(e) { return !e.paused }).forEach(function(e) { A.downloads.pause(e.id) }) }, resumeSelected: function() { var e = this; this.getSelectedItems().filter(function(e) { return e.canResume }).forEach(function(t) { A.downloads.resume(t.id, function() { e.startPolling() }) }) }, restartSelected: function() { var e = this, t = this.getSelectedItems(); t.size > 0 && ! function() { var n = [], i = e.getDownloadItems(); e.blockApi = !0, e.restartingIds = t.map(function(e) { return e.id }), Promise.all(t.map(function(e) { return new Promise(function(t) { A.downloads.erase({ id: e.id }, function() { A.downloads.download({ url: e.url }, function(a) { n.push(a), i = i.map(function(t) { return t.id === e.id && (t.id = a), t }), t() }) }) }) })).then(function() { e.blockApi = !1, e.setState({ downloadItems: i }, function() { e.refs.downloadTree.selectByIds(n), e.restartingIds = e.restartingIds.clear() }) }) }() }, showSelectedInFilemanager: function() { this.getSelectedItems().forEach(function(e) { A.downloads.show(e.id) }) }, openSelected: function() { this.getSelectedItems().forEach(function(e) { "complete" === e.state && A.downloads.open(e.id) }) }, openSelectedInTab: function(e, t) { var n = this.getSelectedItems().filter(function(e) { return "complete" === e.state && e.mime.startsWith("image/") }).map(function(e) { return "file://" + e.filename }); n.size > 0 && ! function() { var i = n.get(n.size - 1); n.forEach(function(n) { var a = { inCurrent: e, inBackground: t }; t === !1 && (a.inBackground = n !== i), l.openURL(n, a), e = !1 }) }() }, openSelectedInWindow: function(e, t) { var n = this.getSelectedItems().filter(function(e) { return "complete" === e.state && e.mime.startsWith("image/") }).map(function(e) { return "file://" + e.filename }), i = { inNewWindow: !0, inBackground: e, incognito: t }; n.forEach(function(e) { l.openURL(e, i) }) }, onSelected: function(e) { this.setState({ activeItemId: e }) }, onErase: function(e) { var t = this; return this.blockApi = !0, Promise.all(e.map(function(e) { return new Promise(function(t) { A.downloads.erase({ id: e }, t) }) })).then(function() { var n = t.getDownloadItems(); n = n.filter(function(t) { return e.findIndex(function(e) { return e === t.id }) === -1 }), t.setState({ downloadItems: n }), t.pollProgress(), t.blockApi = !1 }) }, verifyErase: function(e) { var t = this.state.downloadItems.filter(function(t) { return e.findIndex(function(e) { return e === t.id }) !== -1 }); return t = t.filter(function(e) { return "in_progress" !== e.state || "in_progress" === e.state && e.paused }), t.map(function(e) { return e.id }).toArray() }, removeAllFinished: function() { var e = this.state.downloadItems.filter(function(e) { return "complete" === e.state }).map(function(e) { return e.id }).toArray(); this.refs.downloadTree.erase(e) }, removeSelected: function() { var e = this.getSelectedItems().map(function(e) { return e.id }); this.refs.downloadTree.erase(this.verifyErase(e)) }, copySelectedAddress: function() { var e = this.getSelectedItems().map(function(e) { return e.url }); if (e.size > 0) { var t = function(t) { t.clipboardData.setData("text/plain", e.join("\n")), t.preventDefault() }; document.addEventListener("copy", t), document.execCommand("copy"), document.removeEventListener("copy", t) } }, copySelectedPath: function() { var e = this.getSelectedItems().filter(function(e) { return "complete" === e.state }).map(function(e) { return e.filename }); if (e.size > 0) { var t = function(t) { t.clipboardData.setData("text/plain", e.join("\n")), t.preventDefault() }; document.addEventListener("copy", t), document.execCommand("copy"), document.removeEventListener("copy", t) } }, startPolling: function() { this.pollTimer !== -1 && clearTimeout(this.pollTimer), this.pollTimer = setTimeout(this.pollProgress, g) }, pollProgress: function() { var e = this, t = 0, n = 0, i = 0; A.downloads.search({ state: "in_progress" }, function(a) { t = a.length, a.map(function(t) { n += t.totalBytes, i += t.bytesReceived; var a = { state: { current: "" }, paused: { current: "" }, canResume: { current: "" }, totalBytes: { current: 0 }, bytesReceived: { current: 0 }, estimatedEndTime: { current: 0 } }; a.id = t.id, a.state.current = t.state, a.paused.current = t.paused, a.canResume.current = t.canResume, a.totalBytes.current = t.totalBytes, a.bytesReceived.current = t.bytesReceived, a.estimatedEndTime.current = t.estimatedEndTime, e.onTransferChanged(a) }), e.props.onTransfersUpdated(t, Math.floor(i / n * 100)) }), this.updateActiveProgressState() }, handleFilterChange: function(e) { var t = this, n = e.target.value; this.setState({ filter: n }), A.downloads.search({ query: n.split(" ") }, function(e) { var n = o.List(); e.map(function(e) { e.icon = t.state.iconItems.get(e.id), n = n.unshift(e) }), t.setState({ downloadItems: n }) }) }, render: function() { return this.props.open ? a.createElement("div", { className: "panel", id: "downloads", __source: { fileName: i, lineNumber: 697 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 698 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 699 } }, u("Downloads")), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 700 } }, a.createElement("input", { type: "search", placeholder: u("Search..."), value: this.state.filter, onChange: this.handleFilterChange, __source: { fileName: i, lineNumber: 701 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 705 } }, this.state.hasPausedTransfersSelected ? a.createElement("button", { className: "button-toolbar dlresume", title: u("Resume"), tabIndex: this.props.keyAccess, onClick: this.resumeSelected, dangerouslySetInnerHTML: { __html: n(1017) }, __source: { fileName: i, lineNumber: 707 } }) : a.createElement("button", { className: "button-toolbar dlstop", title: u("Stop"), tabIndex: this.props.keyAccess, disabled: !this.state.hasActiveTransfersSelected, onClick: this.stopSelected, dangerouslySetInnerHTML: { __html: n(1018) }, __source: { fileName: i, lineNumber: 716 } }), a.createElement("button", { className: "button-toolbar dlrestart", title: u("Restart"), tabIndex: this.props.keyAccess, disabled: !this.state.activeItemId, onClick: this.restartSelected, dangerouslySetInnerHTML: { __html: n(1016) }, __source: { fileName: i, lineNumber: 726 } }), a.createElement("button", { className: "button-toolbar note-delete", title: u("Remove"), tabIndex: this.props.keyAccess, disabled: !this.state.activeItemId, onClick: this.removeSelected, dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 735 } }), a.createElement("button", { className: "button-toolbar dlclear", title: u("Clear finished downloads"), tabIndex: this.props.keyAccess, disabled: !this.state.hasCompletedTransfers, onClick: this.removeAllFinished, dangerouslySetInnerHTML: { __html: n(473) }, __source: { fileName: i, lineNumber: 744 } })))), a.createElement("section", { __source: { fileName: i, lineNumber: 757 } }, a.createElement(s, { ref: "downloadTree", tabIndex: "0", menuItems: this.getContextMenuItems, items: this.state.downloadItems.toArray(), verifyErase: this.verifyErase, onErase: this.onErase, onSelected: this.onSelected, __source: { fileName: i, lineNumber: 758 } }))) : null } }); e.exports = _ }, function(e, t, n) { // ========================= // Function_597 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/downloads/downloadTree.jsx", a = n(1), r = n(595), s = n(13), o = n(109), l = n(4), c = n(21), u = a.createClass({ displayName: "DownloadTree", mixins: [s], vivaldiSettingsKeys: ["SHOW_VIVALDI_FOOTER"], shouldComponentUpdate: function(e, t) { return c(this, e, t) }, isFolder: function(e) { return !1 }, hasChildren: function(e) { return !1 }, eraseSelected: function() { this.refs.treeList.onDelete() }, erase: function(e) { this.refs.treeList.onDeleteItems(e) }, selectByIds: function(e) { var t = this; e.forEach(function(e) { t.refs.treeList.selectById(e, { ctrlKey: !0, metaKey: !0 }) }) }, selectById: function(e) { this.refs.treeList.selectById(e) }, isSelected: function(e) { return this.refs.treeList.isItemSelected(e) }, getSelectedNodes: function() { return this.refs.treeList.getAllSelectedItems(!1) }, onNodeSelected: function(e) { this.props.onSelected(e.id < 0 ? void 0 : e.id) }, onNodeDoubleClick: function(e, t) { l.downloads.open(t.id) }, onNodesActivated: function(e, t) { t.forEach(function(e) { l.downloads.open(e.id) }) }, renderItemContent: function(e) { var t = a.createElement(r, { key: e.node.id, showFooter: this.state.SHOW_VIVALDI_FOOTER, item: e.node, __source: { fileName: i, lineNumber: 76 } }); return [t] }, render: function() { return a.createElement(o, { ref: "treeList", nodes: this.props.items, getContextMenuItems: this.props.menuItems, isFolder: this.isFolder, hasChildren: this.hasChildren, delete: this.props.onErase, onSelect: this.onNodeSelected, enableDragAndDrop: !1, onItemDoubleClick: this.onNodeDoubleClick, onItemsActivated: this.onNodesActivated, renderItemContent: this.renderItemContent, validateForDeletion: this.props.verifyErase, __source: { fileName: i, lineNumber: 85 } }) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_598 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/draggable/draggable.jsx", r = n(1), s = n(11), o = n(770), l = n(5), c = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", u = 150, A = { isInternalDragging: void 0, anchor: void 0, positions: void 0, elements: void 0, elementsInitialOrder: void 0, sourceElement: void 0, dragFrom: void 0, dragTo: void 0, dragOver: void 0, dragLeftOf: void 0 }, d = r.createClass({ displayName: "Draggable", getInitialState: function() { return { dragging: !1, dragOver: !1, dragBefore: !1, dragAfter: !1 } }, getDefaultProps: function() { return { dragId: "", dragType: "text/x-vivaldi-drag" } }, shouldComponentUpdate: function(e, t) { return this.state.dragging === !1 }, setDragging: function(e) { this.props.setDragging && this.props.setDragging(e) }, onDragStart: function(e) { this.setDragging(!0), A.isInternalDragging = !0, e.dataTransfer.effectAllowed = "move", e.dataTransfer.setData(this.props.dragType, this.props.dragId), s.findDOMNode(this).style.zIndex = "100"; var t = new Image; t.src = c, e.dataTransfer.setDragImage(t, 0, 0); var n = new window.WebKitCSSMatrix(s.findDOMNode(this).style.transform); A.anchor = { x: e.clientX - n.m41, y: e.clientY - n.m42 }, A.dragFrom = this.props.dragId, setTimeout(function() { this.isMounted() && (s.findDOMNode(this).style.pointerEvents = "none") }.bind(this), 0), s.findDOMNode(this).parentNode.classList.add("dragging"), A.elements = [].slice.call(s.findDOMNode(this).parentNode.querySelectorAll("*[draggable]")), A.elementsInitialOrder = [].slice.call(A.elements), A.positions = A.elements.map(function(e) { return { left: e.getBoundingClientRect().left, top: e.getBoundingClientRect().top } }), A.boundBox = A.elements.map(function(e) { return e.getBoundingClientRect() }).reduce(function(e, t) { return e.minX = Math.min(t.left, e.minX), e.maxX = Math.max(t.left + t.width, e.maxX), e.minY = Math.min(t.top, e.minY), e.maxY = Math.max(t.top + t.width, e.maxY), e }, { minX: Number.POSITIVE_INFINITY, maxX: Number.NEGATIVE_INFINITY, minY: Number.POSITIVE_INFINITY, maxY: Number.NEGATIVE_INFINITY }), A.sourceElement = s.findDOMNode(this) }, _isPointOutside: function(e, t) { var n = window !== t.nativeEvent.view, i = t.clientY, a = e.getBoundingClientRect(); return n || i < a.top || i > a.top + a.height }, onDrag: function(e) { var t = s.findDOMNode(this); if (0 !== e.clientX || 0 !== e.clientY) { var n = { deltaX: "x" in t.dataset ? parseInt(t.dataset.x) : 0, deltaY: "y" in t.dataset ? parseInt(t.dataset.y) : 0 }, i = { deltaX: e.clientX - A.anchor.x, deltaY: e.clientY - A.anchor.y }; if (this.props.lockToBounds) { var a = t.getBoundingClientRect(); if (a.left + (i.deltaX - n.deltaX) < A.boundBox.minX) return; if (a.left + a.width + (i.deltaX - n.deltaX) > A.boundBox.maxX) return } t.dataset.x = i.deltaX, t.dataset.y = i.deltaY; var r = this._animationKeyframes(n, i); t.animate(r, { duration: 0, fill: "forwards" }) } }, _animationKeyframes: function(e, t) { var n, i; return "x" === this.props.axis ? (n = "translateX(" + e.deltaX + "px)", i = "translateX(" + t.deltaX + "px)") : "y" === this.props.axis ? (n = "translateY(" + e.deltaY + "px)", i = "translateY(" + t.deltaY + "px)") : (n = "translate(" + e.deltaX + "px, " + e.deltaY + "px)", i = "translate(" + t.deltaX + "px, " + t.deltaY + "px)"), [{ transform: n }, { transform: i }] }, onDragOver: function(e) { e.dataTransfer.types.indexOf(this.props.dragType) !== -1 && (e.preventDefault(), e.stopPropagation()), A.isInternalDragging && this._handleInternalDragging(e) }, onDrop: function(e) { e.dataTransfer.types.indexOf(this.props.dragType) !== -1 && (e.preventDefault(), e.stopPropagation(), !A.isInternalDragging && this.props.onDraggableMove && this.props.onDraggableMove(e.dataTransfer.getData(this.props.dragType), this.props.dragId, { isOver: Boolean(this.state.dragOver), isLeftOf: Boolean(this.state.dragBefore) })), this.setState({ dragBefore: !1, dragOver: !1, dragAfter: !1 }) }, _handleExternalDragging: function(e) { var t = s.findDOMNode(this).getBoundingClientRect(), n = e.clientX - t.left; n < .2 * t.width ? this.setState({ dragBefore: !0, dragOver: !1, dragAfter: !1 }) : n > .8 * t.width ? this.setState({ dragBefore: !1, dragOver: !1, dragAfter: !0 }) : n > .2 * t.width && n < .8 * t.width && this.setState({ dragBefore: !1, dragOver: !0, dragAfter: !1 }) }, _handleInternalDragging: function(e) { var t = s.findDOMNode(this).getBoundingClientRect(), n = e.clientX - t.left; A.dragTo = this.props.dragId, n < .2 * t.width || n > .8 * t.width ? this._setDragOver(!0) : n > .2 * t.width && n < .8 * t.width ? (this._setDragOver(!1), this.switchElements(A.sourceElement, s.findDOMNode(this))) : this._setDragOver(!1) }, switchElements: function(e, t, n) { var i = A.elements.indexOf(e), a = A.elements.indexOf(t); A.elements.splice(a, 0, A.elements.splice(i, 1)[0]), A.dragLeftOf = a < i, this.animateElementsToOrder(A.sourceElement) }, animateElementsToOrder: function(e, t) { t = void 0 === t ? u : t, A.elements.forEach(function(n, i) { if (!e || n !== e) { var a = { deltaX: "x" in n.dataset ? parseInt(n.dataset.x) : 0, deltaY: "y" in n.dataset ? parseInt(n.dataset.y) : 0 }, r = n.getBoundingClientRect(), s = "left" in n.dataset ? parseInt(n.dataset.left) : r.left, o = "top" in n.dataset ? parseInt(n.dataset.top) : r.top; "startTop" in n.dataset && "startLeft" in n.dataset || (n.dataset.startTop = r.top, n.dataset.startLeft = r.left); var l = { deltaX: A.positions[i].left - s + a.deltaX, deltaY: A.positions[i].top - o + a.deltaY }; if (n.dataset.x = l.deltaX, n.dataset.y = l.deltaY, a.deltaX !== l.deltaX || a.deltaY !== l.deltaY) { n.style.pointerEvents = "none", n.dataset.left = s + l.deltaX, n.dataset.top = o + l.deltaY; var c = this._animationKeyframes(a, l), u = n.animate(c, { duration: t, fill: "forwards" }); u.onfinish = function(e) { n.style.pointerEvents = "auto", delete n.dataset.left, delete n.dataset.top } } } }, this) }, onDragEnter: function(e) { e.preventDefault(), e.stopPropagation() }, onDragLeave: function(e) { e.preventDefault(), e.stopPropagation(), this._setDragOver(!1), this.setState({ dragBefore: !1, dragOver: !1, dragAfter: !1 }) }, _setDragOver: function(e) { A.dragOver = e, this.setState({ dragOver: e }) }, onDragEnd: function(e) { A.isInternalDragging = !1, this.props.revertOnFinish ? (A.elements = A.elementsInitialOrder, this.animateElementsToOrder(null, 1)) : this.animateElementsToOrder(null, 50), s.findDOMNode(this).style.zIndex = "0", s.findDOMNode(this).parentNode.classList.remove("dragging"), [].forEach.call(s.findDOMNode(this).parentNode.querySelectorAll("*[draggable]"), function(e) { e.style.pointerEvents = "auto", e.style.zIndex = "0" }), "function" == typeof this.props.onDraggableMove && "dragId" in this.props && void 0 !== A.dragFrom && void 0 !== A.dragTo && this.props.onDraggableMove(A.dragFrom, A.dragTo, { isOver: Boolean(A.dragOver), isLeftOf: Boolean(A.dragLeftOf) }), this.setState({ dragBefore: !1, dragOver: !1, dragAfter: !1 }), this.setDragging(!1), A = {} }, render: function() { var e = o(this.props, "className", "dragId", "onDraggableMove", "dragImageSrc", "dragType"), t = l(this.props.className, { dragover: this.state.dragOver, "drag-before": this.state.dragBefore && !A.isInternalDragging, "drag-end": this.state.dragAfter && !A.isInternalDragging }); return r.createElement("div", i({}, e, { className: t, draggable: "true", onDragStart: this.onDragStart, onDragEnter: this.onDragEnter, onDrag: this.onDrag, onDragOver: this.onDragOver, onDragLeave: this.onDragLeave, onDrop: this.onDrop, onDragEnd: this.onDragEnd, __source: { fileName: a, lineNumber: 473 } }), this.props.children) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_599 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/experiments/ExperimentItem.jsx", a = n(1), r = n(74), s = a.createClass({ displayName: "ExperimentItem", getInitialState: function() { return { enabled: !1 } }, componentWillMount: function() { this.setState({ enabled: "true" === this.props.value }) }, toggleExperiment: function(e) { this.setState({ enabled: e.target.checked }), r.enableFeature(this.props.name, e.target.checked) }, render: function() { return a.createElement("span", { __source: { fileName: i, lineNumber: 22 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 23 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 24 } }, a.createElement("input", { type: "checkbox", checked: this.state.enabled, disabled: this.props.locked, onChange: this.toggleExperiment, __source: { fileName: i, lineNumber: 25 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 29 } }, this.props.fullName)), a.createElement("p", { className: "info", __source: { fileName: i, lineNumber: 31 } }, this.props.description))) } }); e.exports = s }, function(e, t, n) { // ========================= // Function_600 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/experiments/experiments.jsx", a = n(1), r = n(2), s = n(74), o = n(599), l = a.createClass({ displayName: "Experiments", render: function() { var e = s.getFlags(), t = e.map(function(e) { return a.createElement(o, { key: e.name, fullName: e.friendlyName, name: e.name, description: e.description, locked: e.locked, value: e.value, __source: { fileName: i, lineNumber: 11 } }) }); return a.createElement("div", { className: "experiments vivaldi-settings", tabIndex: "0", __source: { fileName: i, lineNumber: 22 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 23 } }, r("Experimental features")), a.createElement("div", { className: "caution", __source: { fileName: i, lineNumber: 24 } }, r("These experimental features may change, break, disappear, not work as intended or at all."), a.createElement("br", { __source: { fileName: i, lineNumber: 26 } }), r("Please proceed with caution.")), a.createElement("div", { className: "setting-subgroup", __source: { fileName: i, lineNumber: 29 } }, t)) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_601 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/extensions/ExtensionActionItem.jsx", a = n(1), r = n(15), s = n(9), o = n(2), l = n(4), c = n(5), u = n(26), A = n(50), d = n(13), h = "https://chrome.google.com/webstore/detail/", m = a.createClass({ displayName: "ExtensionActionItem", mixins: [s, d], vivaldiSettingsKeys: ["KEY_ACCESS"], getMenuItems: function() { var e = [{ name: this.props.name, handler: this.openHomePage }, { name: "---" }, { name: o("Options"), handler: this.openOptionsPage, visible: void 0 !== this.props.optionspage && "" !== this.props.optionspage }, { name: o("Remove extension..."), handler: this.removeExtension, visible: "componentAction" !== this.props.extensionType }, { name: o("Hide button"), handler: this.toggleExtensionAction }, { name: "---" }, { name: o("Manage Extensions"), handler: A.showExtensions }]; return e }, toggleExtensionAction: function() { l.extensionActionUtils.toggleBrowserActionVisibility(this.props.id) }, executeExtensionAction: function(e) { this.props.onClicked(this.props.id, e.currentTarget) }, removeExtension: function() { l.extensionActionUtils.removeExtension(this.props.id, this.props.windowId) }, openHomePage: function() { var e = this.props.homepage ? this.props.homepage : h + this.props.id; r.openURL(e) }, openOptionsPage: function() { var e = "chrome-extension://" + this.props.id + "/" + this.props.optionspage; r.openURL(e) }, render: function() { var e = { backgroundColor: this.props.badgeBackgroundColor }, t = c({ "addressfield-popup-container": "page" === this.props.actionType }), n = c({ "button-addressfield": "page" === this.props.actionType, "button-toolbar browserAction-button": "browser" === this.props.actionType, "actionVisibility-hidden": this.props.visible === !1 || this.props.actionIsHidden === !0, "ignore-react-onclickoutside": this.props.popupVisible === !0, "popup-visible": this.props.popupVisible === !0 }); return a.createElement("span", { className: t, __source: { fileName: i, lineNumber: 97 } }, "page" === this.props.actionType ? a.createElement("button", { key: this.props.id, className: n, onClick: this.executeExtensionAction, title: this.props.badgeTooltip, tabIndex: this.state.KEY_ACCESS, onContextMenu: u(this.getMenuItems), style: { backgroundImage: "url(" + this.props.badgeIcon + ")" }, __source: { fileName: i, lineNumber: 99 } }, "" !== this.props.badgeText && a.createElement("span", { className: "button-badge", style: e, __source: { fileName: i, lineNumber: 106 } }, this.props.badgeText)) : a.createElement("button", { key: this.props.id, className: n, onClick: this.executeExtensionAction, title: this.props.badgeTooltip, tabIndex: this.state.KEY_ACCESS, onContextMenu: u(this.getMenuItems), __source: { fileName: i, lineNumber: 112 } }, a.createElement("img", { src: this.props.badgeIcon, __source: { fileName: i, lineNumber: 117 } }), "" !== this.props.badgeText && a.createElement("span", { className: "button-badge", style: e, __source: { fileName: i, lineNumber: 119 } }, this.props.badgeText))) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_602 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/extensions/ExtensionActionPopup.jsx", a = n(5), r = n(39), s = n(1), o = n(11), l = n(13), c = 25, u = 25, A = 800, d = 600, h = s.createClass({ displayName: "ExtensionActionPopup", mixins: [l, r], vivaldiSettingsKeys: ["ADDRESS_BAR_POSITION"], getInitialState: function() { return { width: c, height: u, hasLoadedOnce: !1 } }, componentDidMount: function() { this.webviewelm = null }, componentWillUnmount: function() { this.detachListeners() }, attachListeners: function() { this.webviewelm && (this.webviewelm.addEventListener("sizechanged", this.onSizeChanged), this.webviewelm.addEventListener("close", this.onClose), this.webviewelm.addEventListener("newwindow", this.onNewWindow), this.webviewelm.addEventListener("loadstop", this.onLoadStop)) }, detachListeners: function() { this.webviewelm && (this.webviewelm.removeEventListener("sizechanged", this.onSizeChanged), this.webviewelm.removeEventListener("close", this.onClose), this.webviewelm.removeEventListener("newwindow", this.onNewWindow), this.webviewelm.removeEventListener("loadstop", this.onLoadStop)) }, componentWillReceiveProps: function(e) { this.props.popupVisible === !0 && e.popupVisible === !1 && this.setState({ hasLoadedOnce: !1 }) }, componentWillUpdate: function(e, t) { e.popupVisible === !0 ? this.enableOnClickOutside() : e.popupVisible === !1 && this.disableOnClickOutside() }, handleClickOutside: function(e) { this.props.popupWantsToClose() }, recreateWebView: function() { this.detachListeners(), this.webviewelm && this.webviewelm.parentNode.removeChild(this.webviewelm); var e = document.createElement("webview"); e.setAttribute("autosize", "on"), e.setAttribute("minwidth", c), e.setAttribute("minheight", u), e.setAttribute("maxwidth", A), e.setAttribute("maxheight", d), e.setAttribute("extensionhost", this.props.extensionId), e.setAttribute("partition", "persist:" + this.props.extensionId), e.setAttribute("src", this.props.popupPage), e.setAttribute("class", "ignore-react-onclickoutside"), o.findDOMNode(this.refs.popupcontainer).appendChild(e), this.webviewelm = e, this.attachListeners() }, onSizeChanged: function(e) { this.state.hasLoadedOnce && this.setState({ width: e.newWidth, height: e.newHeight }) }, onLoadStop: function(e) { var t = this; this.setState({ hasLoadedOnce: !0 }), setTimeout(function(e) { t.webviewelm.focus() }, 50) }, onNewWindow: function(e) { e.window.accept(window.vivaldiWindowId + ";1") }, onClose: function() { this.setState({ hasLoadedOnce: !1 }), this.props.popupWantsToClose() }, render: function() { if (!this.props.extensionId) return null; var e = 0, t = 0, n = 10; if (this.props.popupAnchor) { var r = this.props.popupAnchor.getBoundingClientRect(); e = "bottom" === this.state.ADDRESS_BAR_POSITION ? r.top - parseInt(this.state.height, 10) - n : r.bottom + n, t = r.left - this.state.width + r.width / 2 + 10 } var o = this.state.hasLoadedOnce && this.props.popupVisible, l = { position: "fixed", height: this.state.height, width: this.state.width, left: t, top: e, visibility: o ? "visible" : "hidden" }, c = a("popup", { hidden: !o, bottom: "bottom" === this.state.ADDRESS_BAR_POSITION, top: "top" === this.state.ADDRESS_BAR_POSITION }); return s.createElement("span", { style: l, className: "extensionaction", __source: { fileName: i, lineNumber: 167 } }, s.createElement("div", { className: c, ref: "popupcontainer", key: this.props.extensionId, __source: { fileName: i, lineNumber: 168 } })) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_603 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/extensions/ExtensionActionToolbar.jsx", a = n(1), r = n(4), s = n(9), o = n(601), l = n(602), c = -2, u = a.createClass({ displayName: "ExtensionActionToolbar", mixins: [s], getInitialState: function() { return { extensionActions: [], extensionId: "", popupAnchor: null, popupPage: "", popupVisible: !1, tabId: -1, windowId: c } }, componentWillMount: function() { r.extensionActionUtils && r.extensionActionUtils.getToolbarExtensions && r.extensionActionUtils.getToolbarExtensions(function(e) { var t = e.filter(function(e) { return !(!this.props.showPageActions || "page" !== e.actionType) || !(!this.props.showBrowserActions || "browser" !== e.actionType) }, this); this.setState({ extensionActions: t }) }.bind(this)), this.setState({ windowId: window.vivaldiWindowId }) }, componentDidMount: function() { r.extensionActionUtils && (r.extensionActionUtils.onAdded.addListener(this.onActionAdded), r.extensionActionUtils.onRemoved.addListener(this.onActionRemoved), r.extensionActionUtils.onUpdated.addListener(this.onActionChanged), r.extensionActionUtils.onIconLoaded.addListener(this.onIconLoaded)) }, componentWillUnmount: function() { r.extensionActionUtils.onAdded.removeListener(this.onActionAdded), r.extensionActionUtils.onRemoved.removeListener(this.onActionRemoved), r.extensionActionUtils.onUpdated.removeListener(this.onActionChanged), r.extensionActionUtils.onIconLoaded.removeListener(this.onIconLoaded) }, getExtensionInfoIndex: function(e) { for (var t = 0; t < this.state.extensionActions.length; t++) if (this.state.extensionActions[t].id === e) return t; return -1 }, onIconLoaded: function(e) { var t = this.getExtensionInfoIndex(e.id); t !== -1 && (this.state.extensionActions[t].badgeIcon = e.badgeIcon, this.setState({ extensionActions: this.state.extensionActions.slice() })) }, onActionChanged: function(e, t, n) { var i = this.getExtensionInfoIndex(e.id); i === -1 || t !== c && t !== this.state.windowId || (this.state.extensionActions[i] = e, this.setState({ extensionActions: this.state.extensionActions.slice(), tabId: n })) }, onActionAdded: function(e) { ("page" === e.actionType && this.props.showPageActions || "browser" === e.actionType && this.props.showBrowserActions) && (this.state.extensionActions.push(e), this.setState({ extensionActions: this.state.extensionActions.slice() })) }, onActionRemoved: function(e) { var t = this.getExtensionInfoIndex(e.id); t !== -1 && (this.state.extensionActions.splice(t, 1), this.setState({ extensionActions: this.state.extensionActions.slice() })) }, onExtensionActionClicked: function(e, t) { var n = t, i = function(t) { t && !t.popupUrl || (this.setState({ popupVisible: !this.state.popupVisible, popupPage: t ? t.popupUrl : null, popupAnchor: n, extensionId: e }), this.state.popupVisible && this.refs.extensionactionpopup.recreateWebView()) }.bind(this); r.extensionActionUtils.executeExtensionAction(e, this.state.windowId, i) }, popupWantsToClose: function() { this.setState({ popupVisible: !1 }) }, render: function() { if (0 === this.state.extensionActions.length) return null; var e = -1, t = this.props.incognito, n = this.state.extensionActions.map(function(n) { if (e += 1, t !== !0 || n.allowInIncognito !== !1) return a.createElement(o, { key: e, id: n.id, name: n.name, homepage: n.homepage, optionspage: n.optionspage, badgeTooltip: n.badgeTooltip, badgeIcon: n.badgeIcon, badgeText: n.badgeText, badgeTextColor: n.badgeTextColor, badgeBackgroundColor: n.badgeBackgroundColor, extensionType: n.extensionType, visible: n.visible, actionIsHidden: n.actionIsHidden, actionType: n.actionType, tabId: this.state.tabId, onClicked: this.onExtensionActionClicked, popupVisible: this.state.popupVisible && this.state.extensionId === n.id, windowId: this.state.windowId, __source: { fileName: i, lineNumber: 167 } }) }.bind(this)); return a.createElement("span", { ref: "extensionactiontoolbar", className: "extensions-wrapper", __source: { fileName: i, lineNumber: 192 } }, n, a.createElement(l, { ref: "extensionactionpopup", popupVisible: this.state.popupVisible, popupPage: this.state.popupPage, popupAnchor: this.state.popupAnchor, extensionId: this.state.extensionId, popupWantsToClose: this.popupWantsToClose, __source: { fileName: i, lineNumber: 196 } })) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_604 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/find-in-page/find-in-page.jsx", a = n(1), r = n(37), s = n(6), o = n(55), l = n(87), c = n(2), u = n(5), A = n(20), d = A.urls, h = a.createClass({ displayName: "FindInPage", getInitialState: function() { return this._getStateFromStores() }, componentDidMount: function() { l.addChangeListener(this.onWebpageviewStoreChanged) }, componentWillUnmount: function() { l.removeChangeListener(this.onWebpageviewStoreChanged) }, onWebpageviewStoreChanged: function(e) { if (!e.page || e.page.get("id") === this.props.page.get("id") && !d.isInternalPage(e.page)) switch (e.type) { case s.FIND_IN_PAGE_RESULT_ACTION: this.setState(this._getStateFromStores()); break; case s.WEBPAGEVIEW_ACTIONS: "findInPage" === e.action ? this.setState(this._getStateFromStores(), this.focusFindInPageInput) : "findNextInPage" === e.action ? this.onNextClicked() : "findPreviousInPage" === e.action && this.onPreviousClicked(); break; case s.CLOSE_FIND_IN_PAGE_ACTION: this.setState(this._getStateFromStores()); break; case s.FIND_IN_PAGE_FOCUS: this.focusFindInPageInput() } }, onKeyDown: function(e) { e.nativeEvent.ctrlKey || e.nativeEvent.altKey || e.nativeEvent.metaKey || "Enter" === e.nativeEvent.key && (e.nativeEvent.shiftKey ? this.onPreviousClicked() : this.onNextClicked()) }, onFocus: function() { r.bind("esc", this.closeFindInPage, "keydown") }, onBlur: function() { r.unbind("esc", this.closeFindInPage) }, closeFindInPage: function() { this.onCloseClicked() }, focusFindInPageInput: function() { var e = this.refs.inputText; e && (e.focus(), e.value && e.select()) }, _hasFindInPageText: function() { return this._getFindInPageText().length > 0 }, _getFindInPageText: function() { var e = this.refs.inputText; return e ? e.value : "" }, onMatchCaseClicked: function() { this.props.onFindInPage(this._getFindInPageText(), !this.state.matchCase), this.setState({ matchCase: !this.state.matchCase }) }, onPreviousClicked: function() { var e = !0; this.props.onFindNextInPage(this._getFindInPageText(), e, this.state.matchCase) }, onNextClicked: function() { var e = !1; this.props.onFindNextInPage(this._getFindInPageText(), e, this.state.matchCase) }, onCloseClicked: function() { o.closeFindInPageToolbar(this.props.page) }, onFindInPageTextChanged: function() { var e = this._getFindInPageText(); this.state.findInPageText !== e && (this.props.onStopFind(), this.setState({ findInPageText: e }), "function" == typeof this.props.onFindInPage && this.props.onFindInPage(e, this.state.matchCase)) }, _getStateFromStores: function() { var e = l.getFindResultsForPage(this.props.page), t = { activeMatchOrdinal: e.activeMatchOrdinal, findInPageText: e.searchText, isFindInPageToolbarOpen: e.isFindInPageToolbarOpen, matchCase: e.matchCase, numberOfMatches: e.numberOfMatches }; return t }, render: function() { var e = { "find-in-page": !0, "fip-nomatches": 0 === this.state.numberOfMatches && this.state.findInPageText.length > 0 }; return this.state.isFindInPageToolbarOpen !== !0 ? null : a.createElement("div", { className: u(e), key: "fipanimate-group", onFocus: this.onFocus, onBlur: this.onBlur, tabIndex: "-1", __source: { fileName: i, lineNumber: 183 } }, a.createElement("div", { className: "fip-input", __source: { fileName: i, lineNumber: 188 } }, a.createElement("label", { htmlFor: "fip-input-text", __source: { fileName: i, lineNumber: 189 } }, c("Find in Page:")), a.createElement("input", { ref: "inputText", id: "fip-input-text", type: "search", onKeyDown: this.onKeyDown, onChange: this.onFindInPageTextChanged, defaultValue: this.state.findInPageText, __source: { fileName: i, lineNumber: 191 } }), a.createElement("span", { className: "fip-results", style: { display: this.state.findInPageText.length > 0 ? "inline" : "none" }, __source: { fileName: i, lineNumber: 197 } }, c("$1 of $2", [this.state.activeMatchOrdinal, this.state.numberOfMatches]))), a.createElement("div", { className: "toolbar icons fip-controls", __source: { fileName: i, lineNumber: 208 } }, a.createElement("button", { className: "fip-previous", value: "previous", onClick: this.onPreviousClicked, dangerouslySetInnerHTML: { __html: n(959) }, __source: { fileName: i, lineNumber: 209 } }), a.createElement("button", { className: "fip-next", value: "next", onClick: this.onNextClicked, dangerouslySetInnerHTML: { __html: n(958) }, __source: { fileName: i, lineNumber: 215 } }), a.createElement("button", { className: "fip-close", value: "close", onClick: this.onCloseClicked, dangerouslySetInnerHTML: { __html: n(957) }, __source: { fileName: i, lineNumber: 220 } }), a.createElement("input", { type: "checkbox", id: "fip-matchcase", checked: this.state.matchCase, onChange: this.onMatchCaseClicked, __source: { fileName: i, lineNumber: 225 } }), a.createElement("label", { htmlFor: "fip-matchcase", __source: { fileName: i, lineNumber: 230 } }, c("Match Case")))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_605 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/history/history.jsx", a = n(1), r = n(11), s = n(15), o = n(4), l = "chrome://history-frame", c = a.createClass({ displayName: "History", getInitialState: function() { return { mouseDownWasMiddle: !1, shiftWasDown: !1 } }, handlePostMessage: function(e) { if (e.origin === l && e.data) { var t = e.data, n = this.state.shiftWasDown || this.state.mouseDownWasMiddle, i = { inCurrent: !n, inBackground: n }; s.openURL(t, i) } }, onWebviewLoadstop: function(e) { e.target.contentWindow.postMessage("message", "*") }, onPageBlocked: function(e) { e.preventDefault(), "new_foreground_tab" === e.windowOpenDisposition ? o.tabs.create({ url: e.targetUrl }) : "new_background_tab" === e.windowOpenDisposition ? e.window.accept(window.vivaldiWindowId + ";0") : "new_window" === e.windowOpenDisposition && o.windows.create({ url: e.targetUrl }) }, onWebviewMouseUp: function(e) { this.setState({ mouseDownWasMiddle: 1 === e.button, shiftWasDown: e.shiftKey }) }, onWebviewKeyUp: function(e) { this.setState({ shiftWasDown: e.shiftKey }) }, componentDidMount: function() { window.addEventListener("message", this.handlePostMessage, !1); var e = r.findDOMNode(this).querySelector("webview"); e.addEventListener("loadstop", this.onWebviewLoadstop), e.addEventListener("newwindow", this.onPageBlocked, !0), e.addEventListener("mouseup", this.onWebviewMouseUp), e.addEventListener("keyup", this.onWebviewKeyUp) }, componentWillUnmount: function() { window.removeEventListener("message", this.handlePostMessage); var e = r.findDOMNode(this).querySelector("webview"); e && (e.removeEventListener("loadstop", this.onWebviewLoadstop), e.removeEventListener("newwindow", this.onPageBlocked, !0), e.removeEventListener("mouseup", this.onWebviewMouseUp), e.removeEventListener("keyup", this.onWebviewKeyUp), e.parentNode.removeChild(e)) }, render: function() { return a.createElement("div", { ref: "history", className: "history", __source: { fileName: i, lineNumber: 76 } }, a.createElement("webview", { src: l, __source: { fileName: i, lineNumber: 77 } })) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_606 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/ClearBrowsingHistory.jsx", r = n(1), s = n(4), o = n(2), l = n(12), c = n(44), u = n(69), A = n(551), d = n(764), h = 1e6, m = [{ text: o("Past Hour"), value: "pastHour", format: "h", difference: -1 }, { text: o("Past Day"), value: "pastDay", format: "d", difference: -1 }, { text: o("Past Week"), value: "pastWeek", format: "d", difference: -7 }, { text: o("Past 4 Weeks"), value: "past4Weeks", format: "d", difference: -28 }, { text: o("Everything"), value: "everything", format: "", difference: 0 }], p = [{ value: "appcache", text: o("App Cache") }, { value: "cache", text: o("Cache") }, { value: "cookies", text: o("Cookies") }, { value: "downloads", text: o("Downloads") }, { value: "fileSystems", text: o("File Systems") }, { value: "formData", text: o("Form Data") }, { value: "history", text: o("Browsing History") }, { value: "indexedDB", text: o("Indexed DB") }, { value: "localStorage", text: o("Local Storage") }, { value: "serverBoundCertificates", text: o("Server Bound Certificates") }, { value: "pluginData", text: o("Plugin Data") }, { value: "passwords", text: o("Passwords") }, { value: "webSQL", text: o("Web SQL") }, { value: "typedHistory", text: o("Typed History") }], f = r.createClass({ displayName: "ClearBrowsingHistory", getInitialState: function() { return { inProgress: !1, deleteHistoryFrom: "pastHour", dataToRemove: p.reduce(function(e, t) { return e[t.value] = !1, e }, {}), dataToRemoveCounters: p.reduce(function(e, t) { return e[t.value] = 0, e }, {}) } }, componentWillMount: function() { d.addChangeListener(this._onBrowsingDataStoreChange) }, componentWillUnmount: function() { d.removeChangeListener(this._onBrowsingDataStoreChange) }, _onBrowsingDataStoreChange: function(e, t) { this.props.onYes && this.props.onYes() }, selectChanged: function(e) { this.updateClearDownloadsCounters({ deleteHistoryFrom: e.target.value }), this.updateClearBrowsingHistoryCounters({ deleteHistoryFrom: e.target.value }), this.setState({ deleteHistoryFrom: e.target.value }) }, getCookieUrl: function(e) { return "http" + (e.secure ? "s" : "") + "://" + e.domain + e.path }, _onYes: function(e) { var t = this; this.setState({ inProgress: !0 }), e = Object.assign({ deleteHistoryFrom: this.state.deleteHistoryFrom }, e); var n = m.find(function(e) { return t.state.deleteHistoryFrom === e.value }), i = "everything" === this.state.deleteHistoryFrom ? 0 : (new c).add(n.format, n.difference).valueOf(); A.clearBrowsingData(Object.assign({}, this.state.dataToRemove), i) }, _onNo: function() { this.props.onNo && this.props.onNo() }, updateClearDownloadsCounters: function(e) { var t = this; if (e = Object.assign({ deleteHistoryFrom: this.state.deleteHistoryFrom, downloads: this.state.dataToRemove.downloads }, e), !e.downloads) { var n = u(this.state, { dataToRemoveCounters: { $merge: { downloads: 0 } } }); return void this.setState(n) } "everything" === e.deleteHistoryFrom ? s.downloads.search({}, function(e) { var n = u(t.state, { dataToRemoveCounters: { $merge: { downloads: e.length } } }); t.setState(n) }) : ! function() { var n = t.getSelectedStartTime(e.deleteHistoryFrom); s.downloads.search({}, function(e) { var i = e.filter(function(e) { return new c(e.startTime).valueOf() > n }), a = u(t.state, { dataToRemoveCounters: { $merge: { downloads: i.length } } }); t.setState(a) }) }() }, getSelectedStartTime: function(e) { var t = m.find(function(t) { return e === t.value }), n = (new c).add(t.difference, t.format).valueOf(); return n }, updateClearBrowsingHistoryCounters: function(e) { var t = this; if (e = Object.assign({ deleteHistoryFrom: this.state.deleteHistoryFrom, history: this.state.dataToRemove.history }, e), !e.history) { var n = u(this.state.dataToRemoveCounters, { $merge: { history: 0 } }); return void this.setState({ dataToRemoveCounters: n }) } if ("everything" === e.deleteHistoryFrom) s.history.search({ text: "", startTime: 0, maxResults: h }, function(e) { var n = u(t.state.dataToRemoveCounters, { $merge: { history: e.length } }); t.setState({ dataToRemoveCounters: n }) }); else { var i = this.getSelectedStartTime(e.deleteHistoryFrom); s.history.search({ text: "", maxResults: h, startTime: i }, function(e) { var n = u(t.state.dataToRemoveCounters, { $merge: { history: e.length } }); t.setState({ dataToRemoveCounters: n }) }) } }, clearDataChange: function(e, t) { "history" === e && this.updateClearBrowsingHistoryCounters({ history: t.target.checked }), "downloads" === e && this.updateClearDownloadsCounters({ downloads: t.target.checked }); var n = u(this.state.dataToRemove, { $merge: i({}, e, t.target.checked) }); this.setState({ dataToRemove: n }) }, render: function() { var e = this, t = m.map(function(e) { return r.createElement("option", { key: e.value, value: e.value, __source: { fileName: a, lineNumber: 203 } }, e.text) }), n = p.map(function(t) { return r.createElement("li", { key: t.value, __source: { fileName: a, lineNumber: 207 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 208 } }, r.createElement("input", { type: "checkbox", checked: e.state.dataToRemove[t.value], onChange: e.clearDataChange.bind(e, t.value), __source: { fileName: a, lineNumber: 209 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 212 } }, t.text), e.state.dataToRemoveCounters[t.value] > 0 && r.createElement("span", { className: "folder-item-count", __source: { fileName: a, lineNumber: 214 } }, e.state.dataToRemoveCounters[t.value]))) }), i = r.createElement("form", { className: "dialog-clear-data", onSubmit: this._onYes, __source: { fileName: a, lineNumber: 224 } }, r.createElement("header", { className: "dialog-header", __source: { fileName: a, lineNumber: 225 } }, r.createElement("h1", { __source: { fileName: a, lineNumber: 226 } }, o("Clear Private Data"))), r.createElement("div", { className: "dialog-content", __source: { fileName: a, lineNumber: 229 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 230 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 231 } }, r.createElement("span", { __source: { fileName: a, lineNumber: 232 } }, o("Delete Data for:")), r.createElement("select", { onChange: this.selectChanged, value: this.state.deleteHistoryFrom, autoFocus: !0, __source: { fileName: a, lineNumber: 233 } }, t))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 241 } }, r.createElement("ul", { __source: { fileName: a, lineNumber: 242 } }, n))), r.createElement("footer", { className: "dialog-footer", __source: { fileName: a, lineNumber: 248 } }, this.state.inProgress && r.createElement("p", { className: "in-progress", __source: { fileName: a, lineNumber: 250 } }), r.createElement("input", { type: "submit", disabled: this.state.inProgress, value: o("Clear Browsing Data"), __source: { fileName: a, lineNumber: 252 } }), r.createElement("input", { type: "button", onClick: this._onNo, disabled: this.state.inProgress, value: o("Cancel"), __source: { fileName: a, lineNumber: 255 } }))); return l(i, this.props.filter) } }); e.exports = f }, function(e, t, n) { // ========================= // Function_607 // ========================= "use strict"; var i = n(44), a = n(2), r = function(e, t) { for (var n = i(t.start), a = i(t.end), r = a.diff(n, "d", !1), s = n, o = 0; o <= r; o++) e.some(function(e) { return e.id === s.format("YYYY-MM-DD") }) || e.splice(o, 0, { id: s.format("YYYY-MM-DD"), count: 0, children: [], key: s.format("dddd, MMMM Do, YYYY"), visitTime: s.valueOf() }), s = s.add(1, "d"); return e.sort(function(e, t) { return e.visitTime - t.visitTime }), e }, s = function(e, t, n) { if (!e || 0 === e.length) return { combinedTopPages: [], visitsTime: [], linkTypes: [], linkTypeColors: [], linkTypeTotal: 0, pageCount: 0, pageViewsCount: 0, siteCount: 0 }; e = r(e.slice(), n); var s = {}, o = {}, l = [{ type: "auto_toplevel", count: 0, color: "#fc0", print: a("linktype", "Direct") }, { type: "typed", count: 0, color: "#fe8600", print: a("linktype", "Typed") }, { type: "link", count: 0, color: "#ccee00", print: a("linktype", "Link") }, { type: "reload", count: 0, color: "#d081c3", print: a("linktype", "Reload") }, { type: "form_submit", count: 0, color: "#147cd6", print: a("linktype", "Form") }, { type: "other", count: 0, color: "#00cb9d", print: a("linktype", "Other") }], c = [], u = []; e.forEach(function(e) { u = u.concat(t[e.id] ? t[e.id].timeArr : []), c = c.concat(t[e.id] ? t[e.id].mostVisited : []), l = e.children.map(function(e) { return e.transition_type }).reduce(function(e, t) { var n = e.find(function(e) { return e.type === t }); if (n) n.count = n.count + 1; else { var i = e.find(function(e) { return "other" === e.type }); i.count = i.count + 1 } return e }, l) }); var A = l.map(function(e) { return e.color }), d = l.reduce(function(e, t) { return e + t.count }, 0); e.forEach(function(e) { e.children.forEach(function(e) { s[e.address] = s[e.address] ? e.visitCount + s[e.address] || 0 : e.visitCount, o[e.url] = o[e.url] ? e.visitCount + o[e.url] || 0 : e.visitCount }) }); var h = Object.keys(o).length, m = Object.keys(s).length, p = Object.values(o).reduce(function(e, t) { return e + t }), f = Object.keys(s).map(function(e) { return { url: e, visitCount: s[e] } }).sort(function(e, t) { return t.visitCount - e.visitCount }); if (e.length > 1) { var g = e.map(function(e, t) { var n = e.children.reduce(function(e, t) { return e + t.visitCount }, 0), a = e.children.length; return { hour: t, visits: n, pages: a, id: e.id, unixDate: i(e.id).format("x") } }); return { visitsTime: g, linkTypeColors: A, linkTypeTotal: d, linkTypes: l, combinedTopPages: f, siteCount: m, pageCount: h, pageViewsCount: p } } return 0 === u.length && (u = Array.apply(0, Array(24)).map(function(e, t) { return { hour: t, visits: 0, pages: 0, id: e.id, unixDate: i(e.id).format("x") } })), { visitsTime: u, linkTypeColors: A, linkTypeTotal: d, combinedTopPages: f, linkTypes: l, pageCount: h, pageViewsCount: p, siteCount: m } }; e.exports = s }, function(e, t, n) { // ========================= // Function_608 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryFolder.jsx", a = n(1), r = n(9), s = n(2), o = window.navigator.language, l = a.createClass({ displayName: "HistoryFolder", mixins: [r], handleClick: function(e) { e.preventDefault(), e.altKey ? this.props.historyItem.isExpanded ? this.props.collapseAll() : this.props.expandAll() : this.props.toggle() }, render: function() { var e = this.props.historyItem, t = void 0; if ("date" === this.props.grouping) { var r = { weekday: "long", year: "numeric", month: "long", day: "numeric" }; t = new Date(e.visitTime).toLocaleDateString(o, r) } else if ("week" === this.props.grouping) { var l = e.key.split(","); t = s("Week $1, $2", [l[0].trim(), l[1].trim()]) } else if ("month" === this.props.grouping) { var c = { month: "long", year: "numeric" }; t = new Date(e.key).toLocaleDateString(o, c) } else t = e.key; return a.createElement("label", { "data-parent": e.id, onClick: this.props.fullView ? this.handleClick : null, __source: { fileName: i, lineNumber: 50 } }, !this.props.fullView && a.createElement("span", { className: "expand-icon", onClick: this.handleClick, dangerouslySetInnerHTML: { __html: n(311) }, __source: { fileName: i, lineNumber: 53 } }), a.createElement("span", { className: "url", __source: { fileName: i, lineNumber: 58 } }, t), a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 61 } }, e.count)) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_609 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryItem.jsx", a = n(1), r = n(9), s = n(47), o = n(44), l = a.createClass({ displayName: "HistoryItem", mixins: [r], onDragStart: function(e) { var t = this.props.historyItem, n = document.createElement("img"); n.src = "chrome://favicon/" + t.url, e.dataTransfer.setDragImage(n, n.width - n.width / 3, n.height - n.height / 3), e.dataTransfer.setData("text/uri-list", t.url), e.dataTransfer.setData("text/plain", t.url), e.dataTransfer.setData("vivaldi/x-title", t.title) }, handleMouseEnter: function(e) { s.setStatus(e) }, handleMouseLeave: function() { s.clearStatus() }, render: function() { var e = this.props.historyItem, t = "YYYY/M/D, HH:mm:ss"; "date" === this.props.grouping ? t = this.props.fullView ? "HH:mm:ss" : "HH:mm" : "month" === this.props.grouping ? t = "dddd Do, HH:mm:ss" : "year" !== this.props.grouping && "week" !== this.props.grouping || (t = "MMMM Do, HH:mm:ss"); var n = o(e.visitTime).format(t), r = e.url || "localhost"; return this.props.fullView ? a.createElement("div", { draggable: "true", onDragStart: this.onDragStart, __source: { fileName: i, lineNumber: 47 } }, a.createElement("label", { className: "date", title: n, __source: { fileName: i, lineNumber: 50 } }, n), a.createElement("label", { className: "title", __source: { fileName: i, lineNumber: 53 } }, a.createElement("img", { src: "chrome://favicon/" + e.url, width: "16", height: "16", alt: "", __source: { fileName: i, lineNumber: 54 } }), e.title ? e.title : r), a.createElement("label", { className: "url", __source: { fileName: i, lineNumber: 58 } }, e.isBookmarked && a.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", className: "bookmarked", xmlns: "http://www.w3.org/2000/svg", __source: { fileName: i, lineNumber: 60 } }, a.createElement("path", { d: "M4 14v-12h7v12l-3.5-2.8-3.5 2.8z", __source: { fileName: i, lineNumber: 63 } })), "https" === e.protocol && a.createElement("svg", { height: "16", width: "16", viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", __source: { fileName: i, lineNumber: 67 } }, a.createElement("path", { d: "M12.2 6.7C12.2 4 10.5 2 8 2 5.8 2 3.8 4 3.8 6.7V7H3v7h10V7h-.8v-.3zM10.7 8H5.3V6.7c0-1.7 1.4-3 2.8-3 1.7 0 2.8 1.3 2.8 3V8z", __source: { fileName: i, lineNumber: 69 } })), e.url), a.createElement("label", { className: "visits", __source: { fileName: i, lineNumber: 74 } }, e.visitCount > 1 && a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 76 } }, e.visitCount))) : a.createElement("label", { title: n + "\n" + e.url, onMouseEnter: "off" === this.props.showFooter ? null : this.handleMouseEnter.bind(this, e.url), onMouseLeave: "off" === this.props.showFooter ? null : this.handleMouseLeave, draggable: "true", onDragStart: this.onDragStart, __source: { fileName: i, lineNumber: 85 } }, a.createElement("img", { src: "chrome://favicon/" + e.url, width: "16", height: "16", alt: "", __source: { fileName: i, lineNumber: 92 } }), a.createElement("span", { className: "title", __source: { fileName: i, lineNumber: 94 } }, n, " ", e.title ? e.title : e.url), e.visitCount > 1 && a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 100 } }, e.visitCount)) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_610 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function r(e) { for (var t = new Date, n = new Date(t.setDate(t.getDate() - t.getDay())), i = [], a = 0; a < 7;) i.push(n.toLocaleString(R, { weekday: e })), n.setDate(n.getDate() + 1), a++; return { _loc: i } } function s() { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "long", t = [], n = 0; n < 12;) { var i = new Date(2e3, n, 1); t.push(i.toLocaleString(R, { month: e })), n++ } return { _loc: t } } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryManager.jsx", l = n(1113), c = i(l), u = n(1), A = n(2), d = n(130), h = n(357), m = n(611), p = n(358), f = n(359), g = n(50), _ = n(178), v = n(169), b = n(98), N = n(69), E = n(5), S = n(26), T = n(212), y = n(44), C = n(21), I = "MacIntel" === navigator.platform, O = n(545), w = O.VictoryStack, D = O.VictoryArea, k = "YYYY-MM-DD", M = [{ text: A("Date"), value: "visitTime", fullScreenTitle: A("Sort by Date") }, { text: A("Title"), value: "title", fullScreenTitle: A("Sort by Title") }, { text: A("Address"), value: "address", fullScreenTitle: A("Sort by Address") }, { text: A("Views"), value: "visitCount", fullScreenTitle: A("Sort by Page Views") }], L = 1, P = "sqrt", R = window.navigator.language, x = r("long"), B = r("short"), U = s("long"), F = s("short"), H = { name: R, months: U._loc, monthsShort: F._loc, weekdays: x._loc, weekdaysShort: B._loc, week: { dow: L } }; y.locale("_loc", H); var V = u.createClass({ displayName: "HistoryManager", getInitialState: function() { return { historySorting: { sortOrder: b.NO_SORTING, sortField: "manually", comparator: this.sortComparator }, dailyVisits: null, topLinks: null, range: y.range(y(this.props.historyFilter.startTime), y(this.props.historyFilter.endTime)), selecting: !1, searchOptionsVisible: !1, height: null } }, shouldComponentUpdate: function(e, t) { return C(this, e, t) }, onResize: function(e) { var t = e[0].contentRect; this.isMounted() && this.setState({ height: t.height, width: t.width }) }, sortComparator: function(e, t) { var n = this.state.historySorting, i = n.sortOrder, a = n.sortField, r = b.getDefaultComparator(i, a); return r(e, t) }, onSortChange: function(e, t) { var n = N(this.state, { historySorting: { sortOrder: { $set: e }, sortField: { $set: t } } }); this.setState(n) }, onSearchChange: function(e) { this.setState({ range: y.range(y(e.startTime), y(e.endTime)) }), this.onSearch(e) }, _setRange: function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null; if (!y.isMoment(e) || !y.isMoment(t)) return void console.warn("Date range times expected in moment() format."); var i = this.props.historyFilter, a = i.merge({ startTime: e.startOf("day").toDate(), endTime: t.endOf("day").toDate(), displayMode: n ? n : i.displayMode }); this.setState({ range: y.range(e.startOf("day"), t.endOf("day")) }), this.onSearch(a) }, _setView: function(e) { var t = e.target.value, n = this.props.historyFilter, i = n.merge(a({}, t, !n[t])); this.onSearch(i) }, onSelectAll: function() { var e = y(), t = this.props.oldestHistoryDate, n = this.props.historyFilter.merge({ startTime: t.toDate(), endTime: e.endOf("day").toDate() }); this.onSearch(n) }, onIncludeUrlChange: function() { var e = !this.props.historyFilter.searchURL, t = this.props.historyFilter, n = t.merge({ searchURL: e }); this.onSearch(n) }, onClearBrowsingData: function() { g.showClearBrowsingHistoryDialog({}) }, onCalendarSelect: function(e, t) { this._setRange(y(e), y(e)) }, expandRange: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : this.state.range, n = y.range(e, e); return t.contains(n) ? t : e.format("x") > t.start.format("x") ? y.range(t.start, n.end) : y.range(n.start, t.end) }, handleMouseDown: function(e, t) { if (!I || !e.ctrlKey) { var n = void 0; if (e.shiftKey) { var i = this.props.historyFilter, a = i.startTime, r = i.endTime, s = y.range(y(a), y(r)); n = this.expandRange(t, s) } else n = y.range(t, t); this.setState({ selecting: !0, range: n }) } }, handleMouseUp: function(e, t) { if (this.state.selecting && this.state.range) { var n = this.state.range; this.setState({ selecting: !1 }), this._setRange(n.start, n.end) } }, handleMouseEnter: function(e, t) { this.state.selecting && this.state.range && this.setState({ range: this.expandRange(t) }) }, onSearch: function(e) { this.setState({ searchOptionsVisible: e.text.length > 0 }); var t = this.props.historyFilter.merge(e); d.searchHistory(this.props.page.id, t) }, handleDisplayModeChange: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "day"; e && e.target.value && (t = e.target.value); var n = y(this.props.historyFilter.endTime).isAfter(y()) ? y() : this.props.historyFilter.endTime; this._setRange(y(n).startOf(t), y(n).endOf(t), t) }, restoreSelection: function() { var e = this.props.historyFilter.displayMode; this.handleDisplayModeChange(null, e) }, switchToDayWithPicker: function() { var e = this.props.historyFilter, t = e.merge({ displayMode: "day", dayPickerVisible: !0 }); this.onSearch(t) }, viewCurrent: function() { var e = this.props.historyFilter.displayMode; this._setRange(y().startOf(e), y().endOf(e)) }, viewPrevious: function(e) { var t = this.props.historyFilter, n = t.startTime, i = t.displayMode, a = y(n).subtract(1, i).startOf(i); a < e && (a = e); var r = y(a).endOf(i); this._setRange(a, r) }, viewNext: function() { var e = this.props.historyFilter, t = e.startTime, n = e.displayMode; if (!(y(t).add(1, n).format("x") > y().endOf("day").format("x"))) { var i = y(t).add(1, n).startOf(n), a = y(i).endOf(n); this._setRange(i, a) } }, getNumWeeksForMonth: function(e, t) { var n = new Date(e, t - 1, 1), i = n.getDay() - L; i < 0 && (i += 7); var a = new Date(e, t, 0).getDate(); return Math.ceil((a + i) / 7) }, onContextMenu: function(e) { S(this.refs.tree.getRootContextMenuItems())(e) }, renderMonthDay: T(1e3)(function(e, t, n, i, r, s, l) { var c = e[l.format(k)]; if (!c) return u.createElement("div", { className: l.within(i) ? "selected" : null, __source: { fileName: o, lineNumber: 349 } }); var d = !1, h = 0, m = "min"; h = e[l.format(k)].visits || 0, h >= t - t / 10 ? m = "max" : h >= n && h < t - t / 10 ? m = "high" : h >= n / 2 && h < n ? m = "mid" : h > 0 && h < n / 2 && (m = "low"); var p = 5; r < 114 ? p = 2 : r < 128 ? p = 3 : r < 144 && (p = 4); var f = c.mostVisited.map(function(e, t) { if (t < p) { var n = e.url; return "" === n ? n = "localhost" : 0 === n.indexOf("www.") && (n = n.split("www.")[1]), u.createElement("li", { title: n + " (" + e.visitCount + ")", key: l.format("x") + "_" + t, __source: { fileName: o, lineNumber: 384 } }, n) } }), g = { x: [0, 24], y: [0, t / 2] }, _ = { x: "linear", y: P }; return u.createElement("div", { className: l.within(i) ? "selected" : null, __source: { fileName: o, lineNumber: 397 } }, d && u.createElement("div", { className: "overview-chart", __source: { fileName: o, lineNumber: 399 } }, u.createElement(w, { categories: ["pages", "visits"], colorScale: ["#fc0", "#ce0"], padding: 0, height: 130, width: s, domain: g, scale: _, responsive: !1, __source: { fileName: o, lineNumber: 400 } }, u.createElement(D, { standalone: !1, data: c.timeArr, x: "hour", y: "pages", __source: { fileName: o, lineNumber: 409 } }), u.createElement(D, { standalone: !1, data: c.timeArr, x: "hour", y: "visits", __source: { fileName: o, lineNumber: 414 } }))), u.createElement("h4", { className: E(a({ heat: !0 }, m, !0)), __source: { fileName: o, lineNumber: 422 } }, u.createElement("span", { className: "visits", __source: { fileName: o, lineNumber: 426 } }, u.createElement("strong", { __source: { fileName: o, lineNumber: 427 } }, c.visits), A("view", "views", [c.visits])), u.createElement("span", { className: "pages", __source: { fileName: o, lineNumber: 430 } }, u.createElement("strong", { __source: { fileName: o, lineNumber: 431 } }, c.pages), A("page", "pages", [c.pages]))), u.createElement("ul", { className: "top-links", __source: { fileName: o, lineNumber: 436 } }, f)) }), renderCalDay: T(1e3)(function(e, t, n, i, r) { var s = e[r.format(k)], l = void 0, c = "min"; return s ? (l = e[r.format(k)].visits || 0, l >= t - t / 10 ? c = "max" : l >= n && l < t - t / 10 ? c = "high" : l >= n / 2 && l < n ? c = "mid" : l > 0 && l < n / 2 && (c = "low")) : l = 0, u.createElement("span", { title: A("$1 visit", "$1 visits", [l]), className: E(a({ heat: !0, selected: r.within(i) }, c, !0)), key: r.format("x") + "_" + r, __source: { fileName: o, lineNumber: 465 } }) }), render: function() { var e = this.props, t = e.historyData, i = e.historyFilter, a = e.historyStatistics; if (!t) return null; var r = { weekday: "long", year: "numeric", month: "long", day: "numeric" }, s = t.length > 0 ? new Date(t[0].visitTime).toLocaleDateString(R, r) : new Date(this.props.historyFilter.startTime).toLocaleString(R, r); t.length > 1 && (t.sort(function(e, t) { return e.visitTime - t.visitTime }), s = new Date(t[0].visitTime).toLocaleDateString(R) + " — " + new Date(t[t.length - 1].visitTime).toLocaleDateString(R)); var l = void 0; switch (i.displayMode) { case "month": l = A("This Month"); break; case "week": l = A("This Week"); break; default: l = A("Today") } var d = y(i.startTime), p = this.getNumWeeksForMonth(d.format("YYYY"), d.format("M")), g = y(Object.keys(a).sort()[0]).startOf("month"), b = y(), N = Object.keys(a).map(function(e) { return a[e].visits }), S = Math.max(Math.max.apply(Math, N), 50); N.sort(function(e, t) { return e - t }); var T = (N[Math.floor((N.length - 1) / 2)] + N[Math.ceil((N.length - 1) / 2)]) / 2, C = this.state.height - 22, I = C / p; return u.createElement("div", { className: "history manager", ref: "historyManager", __source: { fileName: o, lineNumber: 536 } }, u.createElement("div", { className: "navigation", __source: { fileName: o, lineNumber: 537 } }, u.createElement("div", { className: "toolbar icons", __source: { fileName: o, lineNumber: 538 } }, u.createElement("button", { className: "button-toolbar toggle-daypicker", onClick: this._setView, value: "dayPickerVisible", title: A("Day Picker Calendar"), dangerouslySetInnerHTML: { __html: n(1013) }, __source: { fileName: o, lineNumber: 539 } })), u.createElement(h, { search: this.onSearchChange, historyFilter: i, minDate: this.props.oldestHistoryDate, __source: { fileName: o, lineNumber: 547 } }), u.createElement("div", { className: "toolbar icons history-date", __source: { fileName: o, lineNumber: 551 } }, u.createElement("button", { className: "button-toolbar previous", onClick: this.viewPrevious.bind(this, g), title: A("Previous"), dangerouslySetInnerHTML: { __html: n(214) }, __source: { fileName: o, lineNumber: 552 } }), u.createElement("button", { className: "button-toolbar next", onClick: this.viewNext, title: A("Next"), dangerouslySetInnerHTML: { __html: n(215) }, __source: { fileName: o, lineNumber: 558 } })), u.createElement("h1", { onClick: this.restoreSelection, __source: { fileName: o, lineNumber: 565 } }, "month" === i.displayMode ? d.format("MMMM, YYYY").toLocaleString(R) : s), u.createElement("div", { className: "toolbar text today", __source: { fileName: o, lineNumber: 571 } }, u.createElement("button", { className: "button-toolbar today", onClick: this.viewCurrent, __source: { fileName: o, lineNumber: 572 } }, l), u.createElement("button", { className: "button-toolbar today", onClick: this.switchToDayWithPicker, __source: { fileName: o, lineNumber: 577 } }, A("Range"))), u.createElement("div", { className: "toolbar text modes", __source: { fileName: o, lineNumber: 584 } }, u.createElement("button", { className: E({ "button-toolbar": !0, active: "day" === i.displayMode }), value: "day", onClick: this.handleDisplayModeChange, __source: { fileName: o, lineNumber: 585 } }, A("Day")), u.createElement("button", { className: E({ "button-toolbar": !0, active: "week" === i.displayMode }), value: "week", onClick: this.handleDisplayModeChange, __source: { fileName: o, lineNumber: 594 } }, A("Week")), u.createElement("button", { className: E({ "button-toolbar": !0, active: "month" === i.displayMode }), value: "month", onClick: this.handleDisplayModeChange, __source: { fileName: o, lineNumber: 603 } }, A("Month"))), u.createElement("div", { className: "toolbar icons delete", __source: { fileName: o, lineNumber: 614 } }, u.createElement("button", { className: "button-toolbar clear", onClick: this.onClearBrowsingData, title: A("Clear Browsing Data"), dangerouslySetInnerHTML: { __html: n(473) }, __source: { fileName: o, lineNumber: 615 } })), u.createElement("div", { className: "toolbar icons getinfo", __source: { fileName: o, lineNumber: 622 } }, u.createElement("button", { className: "button-toolbar toggle-info", onClick: this._setView, value: "moreInfoVisible", title: A("More Info"), dangerouslySetInnerHTML: { __html: n(1015) }, __source: { fileName: o, lineNumber: 623 } }))), this.state.searchOptionsVisible && u.createElement("div", { className: "toolbar search-options", __source: { fileName: o, lineNumber: 634 } }, u.createElement("input", { type: "button", value: A("Search All History"), onClick: this.onSelectAll, __source: { fileName: o, lineNumber: 635 } }), u.createElement("input", { type: "checkbox", checked: i.searchURL, onChange: this.onIncludeUrlChange, __source: { fileName: o, lineNumber: 638 } }), A("Include Address in Search Results")), u.createElement("div", { className: "history-view", __source: { fileName: o, lineNumber: 645 } }, i.dayPickerVisible && u.createElement("div", { className: "manager-editor", __source: { fileName: o, lineNumber: 647 } }, u.createElement("div", { className: "timeline", __source: { fileName: o, lineNumber: 648 } }, u.createElement(c.default, { width: "100%", height: C, rowHeight: 50, selectedDate: this.state.range.start, keyboardSupport: !0, onDayMouseDown: this.handleMouseDown, onDayMouseUp: this.handleMouseUp, onDayMouseEnter: this.handleMouseEnter, min: g.format(k), max: b.format(k), maxDate: b, showHeader: !1, showTodayHelper: !1, showOverlay: !1, overscanMonthCount: 3, locale: H, renderMonthDay: this.renderCalDay.bind(this, a, S, T, this.state.range), __source: { fileName: o, lineNumber: 649 } }))), u.createElement(_, { className: "manager-content history-calendar-container", onResize: this.onResize, __source: { fileName: o, lineNumber: 673 } }, ("day" === i.displayMode || "week" === i.displayMode) && u.createElement("div", { className: "view day", onContextMenu: this.onContextMenu, __source: { fileName: o, lineNumber: 678 } }, u.createElement(v, { fields: M, onSortChange: this.onSortChange, keyAccess: this.props.keyAccess, sortField: this.state.historySorting.sortField, sortOrder: this.state.historySorting.sortOrder, fullsize: !0, __source: { fileName: o, lineNumber: 680 } }), t.length > 0 ? u.createElement("div", { className: "history-tree", __source: { fileName: o, lineNumber: 689 } }, u.createElement(f, { ref: "tree", fullView: !0, inManager: !0, tab_id: this.props.page.id, nodes: t, grouping: i.grouping, sorting: this.state.historySorting, __source: { fileName: o, lineNumber: 690 } })) : u.createElement("p", { __source: { fileName: o, lineNumber: 699 } }, A("No browsing history data for selected period."))), "month" === i.displayMode && u.createElement("div", { className: "view month", ref: "month", __source: { fileName: o, lineNumber: 705 } }, u.createElement("div", { className: "month-calendar", __source: { fileName: o, lineNumber: 706 } }, u.createElement(c.default, { width: "100%", height: C, rowHeight: I > 100 ? I : 100, selectedDate: this.state.range.start, keyboardSupport: !0, onSelect: this.onCalendarSelect, onDayMouseDown: this.handleMouseDown, onDayMouseUp: this.handleMouseUp, onDayMouseEnter: this.handleMouseEnter, longWeekdays: !0, min: d.startOf("month").format(k), max: d.endOf("month").format(k), maxDate: b, showHeader: !1, showTodayHelper: !1, showOverlay: !1, overscanMonthCount: 1, locale: H, renderMonthDay: this.renderMonthDay.bind(this, a, S, T, this.state.range, I, Math.floor(this.state.width / 7)), __source: { fileName: o, lineNumber: 707 } })), i.monthEntriesVisible && u.createElement("div", { className: "month-links", __source: { fileName: o, lineNumber: 733 } }, u.createElement("ul", { className: "Cal__Weekdays__root", "aria-hidden": "true", __source: { fileName: o, lineNumber: 734 } }, u.createElement("li", { className: "Cal__Weekdays__day", __source: { fileName: o, lineNumber: 736 } }, A("Entries"))), u.createElement(f, { ref: "tree", fullView: !1, inManager: !0, tab_id: this.props.page.id, nodes: t, grouping: this.props.historyFilter.grouping, __source: { fileName: o, lineNumber: 740 } })), u.createElement("button", { className: "toggle-month-entries", title: A(i.monthEntriesVisible ? "Hide entries" : "Show entries"), onClick: this._setView, value: "monthEntriesVisible", tabIndex: this.props.keyAccess, __source: { fileName: o, lineNumber: 750 } }, i.monthEntriesVisible ? ">" : "<"))), i.moreInfoVisible && u.createElement(m, { title: s, data: t, stats: a, max: S, scaleY: P, range: this.state.range, __source: { fileName: o, lineNumber: 765 } }))) } }); e.exports = p(V) }, function(e, t, n) { // ========================= // Function_611 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryMoreInfo.jsx", a = n(1), r = n(9), s = n(607), o = n(545), l = o.VictoryChart, c = o.VictoryAxis, u = o.VictoryStack, A = o.VictoryArea, d = o.VictoryPie, h = n(7), m = h.round, p = n(44), f = n(2), g = a.createClass({ displayName: "HistoryMoreInfo", mixins: [r], formatTick: function(e) { var t = this.props.data.length, n = void 0; return t < 6 ? (n = "H:00", 0 === p(e).hour() && (n = "ddd D")) : t < 20 ? (n = "H:00", 0 === p(e).hour() && (n = "ddd D"), 1 === p(e).date() && (n = "MMMM", 0 === p(e).month() && (n = "MMM YYYY"))) : t < 80 ? (n = "ddd D", 1 === p(e).date() && (n = "MMM D", 0 === p(e).month() && (n = "MMM YYYY"))) : (n = "MMMM", 0 === p(e).month() && (n = "YYYY")), p(e).format(n) }, formatPieTick: function(e, t) { if (Number.isInteger(e.count)) { var n = m(e.count / t * 100, 0); if (n > 0) return n + (n > 3 ? "%" : "") } }, render: function() { var e = this, t = this.props, n = t.title, r = t.data, o = t.stats, h = t.max, m = t.scaleY, g = s(r, o, this.props.range), _ = g.visitsTime, v = g.linkTypeColors, b = g.linkTypeTotal, N = g.linkTypes, E = g.combinedTopPages, S = g.pageCount, T = g.pageViewsCount, y = g.siteCount, C = r.length < 2, I = { y: C ? [0, h / 2] : [0, h] }, O = { x: "time", y: m }, w = { duration: 200, onLoad: { duration: 100 }, onEnter: { duration: 100, before: function() { return { y: 0 } } } }; return a.createElement("div", { className: "manager-editor", __source: { fileName: i, lineNumber: 85 } }, a.createElement("div", { className: "more-info", __source: { fileName: i, lineNumber: 86 } }, a.createElement("div", { className: "header", __source: { fileName: i, lineNumber: 87 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 88 } }, n)), a.createElement("div", { className: "moreinfo-stats", __source: { fileName: i, lineNumber: 91 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 92 } }, f("Browsing Activity")), a.createElement("div", { className: "moreinfo-activity", __source: { fileName: i, lineNumber: 93 } }, a.createElement(l, { width: 245, height: 200, padding: { top: 6, right: 12, bottom: 40, left: 30 }, domain: I, scale: O, __source: { fileName: i, lineNumber: 94 } }, a.createElement(u, { standalone: !1, responsive: !0, colorScale: ["#fc0", "#ce0"], __source: { fileName: i, lineNumber: 100 } }, a.createElement(A, { animate: w, standalone: !1, data: _, x: function(e) { return p(parseInt(e.unixDate)).toDate() }, y: "pages", __source: { fileName: i, lineNumber: 104 } }), a.createElement(A, { animate: w, standalone: !1, data: _, x: function(e) { return p(parseInt(e.unixDate)).toDate() }, y: "visits", __source: { fileName: i, lineNumber: 110 } })), a.createElement(c, { tickCount: C ? 13 : void 0, tickFormat: function(t) { return e.formatTick(t) }, standalone: !1, style: { axis: { stroke: "#756f6a" }, axisLabel: { fontSize: 12, padding: 20 }, grid: { stroke: function(e) { return p(e).format("H") % 6 === 0 && C ? "rgba(0, 0, 0, 0.15)" : "rgba(0, 0, 0, 0.05)" } }, ticks: { stroke: "rgba(0, 0, 0, 0.05)" }, tickLabels: { angle: -45, textAnchor: "end", fontSize: 11, padding: 5, fontWeight: 600, fontFamily: "inherit" } }, __source: { fileName: i, lineNumber: 117 } }), a.createElement(c, { dependentAxis: !0, standalone: !1, style: { axis: { stroke: "#756f6a" }, axisLabel: { fontSize: 12, padding: 20 }, grid: { stroke: function(e) { return e % 100 === 0 ? "rgba(0, 0, 0, 0.15)" : "rgba(0, 0, 0, 0.05)" } }, ticks: { stroke: "rgba(0, 0, 0, 0.05)" }, tickLabels: { fontSize: 11, padding: 5, fontFamily: "inherit" } }, __source: { fileName: i, lineNumber: 134 } }))), a.createElement("ul", { className: "moreinfo-activity-labels", __source: { fileName: i, lineNumber: 151 } }, a.createElement("li", { className: "visits", __source: { fileName: i, lineNumber: 152 } }, f("Page Views: $1", [T])), a.createElement("li", { className: "pages", __source: { fileName: i, lineNumber: 155 } }, f("Pages: $1", [S]))), a.createElement("h2", { __source: { fileName: i, lineNumber: 160 } }, f("Link Transition Type")), a.createElement("div", { className: "moreinfo-link-types", __source: { fileName: i, lineNumber: 161 } }, a.createElement(d, { data: N, x: "type", y: "count", width: 160, height: 160, innerRadius: 30, padding: 20, labels: function(t) { return e.formatPieTick(t, b) }, colorScale: v, animate: { duration: 400, onLoad: { duration: 200 } }, style: { labels: { fontSize: 10, padding: 6, fontFamily: "inherit" } }, __source: { fileName: i, lineNumber: 162 } }), a.createElement("ul", { className: "moreinfo-link-labels", __source: { fileName: i, lineNumber: 179 } }, N.map(function(e) { return a.createElement("li", { key: e.type, __source: { fileName: i, lineNumber: 182 } }, a.createElement("span", { style: { backgroundColor: e.color }, __source: { fileName: i, lineNumber: 183 } }), e.print) }))), a.createElement("h2", { __source: { fileName: i, lineNumber: 191 } }, f("Top Domains of $1 Total", [y])), E.length > 0 && a.createElement("ul", { className: "moreinfo-top-domains", __source: { fileName: i, lineNumber: 193 } }, E.map(function(e, t) { if (t < 5) return a.createElement("li", { key: "top_domain_" + t, __source: { fileName: i, lineNumber: 197 } }, a.createElement("img", { src: "chrome://favicon/origin/" + e.url, width: "16", height: "16", alt: "", __source: { fileName: i, lineNumber: 198 } }), a.createElement("span", { className: "title", __source: { fileName: i, lineNumber: 200 } }, e.url ? e.url : "localhost"), a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 203 } }, e.visitCount)) }))))) } }); e.exports = g }, function(e, t, n) { // ========================= // Function_612 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/historynew/HistoryPanel.jsx", a = n(1), r = n(11), s = n(130), o = n(357), l = n(358), c = n(359), u = n(2), A = n(26), d = n(21), h = a.createClass({ displayName: "HistoryPanel", getDefaultProps: function() { return { open: !0 } }, shouldComponentUpdate: function(e, t) { return d(this, e, t) }, componentDidUpdate: function(e, t) { !e.open && this.props.open && r.findDOMNode(this.refs.tree).focus() }, onSearch: function(e) { s.saveStateFromSearchQuery(this.props.page.id, e), s.searchHistory(this.props.page.id, e) }, onContextMenu: function(e) { A(this.refs.tree.getRootContextMenuItems())(e) }, render: function() { if (!this.props.open) return null; var e = this.props.historyData, t = this.props.historyFilter; return a.createElement("div", { className: "panel", id: "history-panel", ref: "historyPanelElement", __source: { fileName: i, lineNumber: 47 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 48 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 49 } }, u("History")), a.createElement(o, { search: this.onSearch, historyFilter: t, minDate: this.props.oldestHistoryDate, __source: { fileName: i, lineNumber: 50 } })), a.createElement("section", { onContextMenu: e.length > 0 ? this.onContextMenu : null, __source: { fileName: i, lineNumber: 55 } }, e.length > 0 ? a.createElement(c, { ref: "tree", fullView: !1, inManager: !1, nodes: e, grouping: t.grouping, __source: { fileName: i, lineNumber: 58 } }) : a.createElement("p", { __source: { fileName: i, lineNumber: 64 } }, u("No browsing history data for this selected period.")))) } }); e.exports = l(h) }, function(e, t) { // ========================= // Function_613 // ========================= "use strict"; var n = function(e, t, n, i, a) { return a || (n = t, t = ""), e.map(function(e) { var a = e.set("children", e.get("children").filter(function(e) { return i ? e.get("url").indexOf(i) !== -1 : n ? e.get("title").toLowerCase().indexOf(n) !== -1 : e.get("url").indexOf(t) !== -1 || e.get("title").toLowerCase().indexOf(t) !== -1 })); if (a.get("children").count()) return a }).filter(function(e) { return e && e.count() }) }; e.exports = n }, function(e, t, n) { // ========================= // Function_614 // ========================= "use strict"; var i = n(356), a = i.ParsedFilter, r = function(e) { if ("" === e || void 0 === e) return new a; for (var t = ["title", "url"], n = {}, i = e.match(/(\S+:\s*'.*')|(\S+:\s*".*")|(\S+:\s*\S+)|(\S+)/g), r = "", s = 0; s < i.length; s++) { var o = i[s].trim(); if (o.length > 0) { for (var l = !1, c = 0; c < t.length; c++) { var u = o.toLowerCase().indexOf(t[c] + ":"), A = t[c].length + 1; u > -1 && (l = !0, void 0 === n[t[c]] ? (r = t[c], n[t[c]] = o.slice(u + A).trim()) : n[t[c]] += " " + o.slice(u + A).trim()) } l || (r ? n[r] = n[r] + " " + o : void 0 === n.query ? n.query = o : n.query += " " + o) } } var d = new a({ title: n.title || "", url: n.url || "", query: n.query || "" }); return d }; e.exports = r }, function(e, t, n) { // ========================= // Function_615 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/infobubble/fullscreeninfobubble.jsx", a = n(1), r = n(3), s = n(13), o = n(26), l = n(2), c = n(5), u = 4e3, A = a.createClass({ displayName: "FullscreenInfoBubble", mixins: [s], vivaldiSettingsKeys: ["COMMAND_FULLSCREEN", "SHOW_FULLSCREEN_BUBBLE"], getInitialState: function() { return { hover: !1, contextOpen: !1, show: !0, hideTimeoutID: -1 } }, componentDidMount: function(e, t) { this.hideSelf() }, startHover: function(e) { this.setState({ hover: !0 }) }, endHover: function(e) { this.setState({ hover: !1 }) }, showSelf: function() { this.timeoutID !== -1 && clearTimeout(this.timeoutID), this.setState({ show: !0 }) }, hideSelf: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u; this.timeoutID !== -1 && clearTimeout(this.timeoutID), this.timeoutID = setTimeout(this.setState.bind(this, { show: !1, hover: !1, contextOpen: !1 }), e) }, alwaysHide: function() { r.set({ SHOW_FULLSCREEN_BUBBLE: !1 }), this.hideSelf(0) }, onContextMenu: function(e) { var t = this; this.timeoutID !== -1 && clearTimeout(this.timeoutID); var n = [{ name: l("Hide Fullscreen Reminder"), handler: this.hideSelf.bind(this, 0) }, { name: l("Never Show Fullscreen Reminder"), handler: this.alwaysHide }]; o(n, function() { return t.setState({ contextOpen: !0 }) }, "pointer", function() { return t.setState({ contextOpen: !1, hover: !1 }) })(e) }, render: function() { var e = c({ fullscreeninfobubble: !0, show: (this.state.hover || this.state.contextOpen || this.state.show) && this.state.SHOW_FULLSCREEN_BUBBLE }); return a.createElement("div", { onMouseEnter: this.startHover, onMouseLeave: this.endHover, __source: { fileName: i, lineNumber: 90 } }, a.createElement("div", { className: e, onContextMenu: this.onContextMenu, onClick: this.hideSelf.bind(this, 0), __source: { fileName: i, lineNumber: 93 } }, l("Press Escape key to exit full screen."))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_616 // ========================= "use strict"; var i = n(239), a = { bulkAdd: function(e) { return i.filters.bulkPut(e).catch(function(e) { console.error("Error bulk adding filters: ", e) }) }, add: function(e) { return i.filters.put(e).catch(function(e) { console.error("Error adding filter: ", e) }) }, remove: function(e, t) { return i.filters.delete([e, t]).catch(function(e) { console.error("Error removing filter: ", e) }) }, bulkRemove: function(e) { return i.filters.bulkDelete(e) }, get: function(e, t) { return i.filters.get([e, t]).catch(function(e) { console.error("Error loading filter: ", e) }) }, getAll: function() { return i.filters.toArray().catch(function(e) { console.error("Error loading filters: ", e) }) } }; e.exports = a }, function(e, t, n) { // ========================= // Function_617 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/mail/MailBar.jsx", a = n(1), r = n(133), s = n(25), o = n(618), l = n(619), c = n(620), u = n(49), A = n(629), d = n(58), h = n(15), m = n(9), p = n(3), f = n(20), g = f.urls, _ = n(2), v = ["KEY_ACCESS", "MAIL_COMPOSE_HEADERS_HIDDEN", "MAIL_IS_TURNED_OFF", "MAIL_SEND_OR_QUEUE", "MAIL_VIEW_LAYOUT", "MAIL_VIEW_POS", "PANEL_POSITION", "SHOW_FFW_RWD_BUTTONS"], b = a.createClass({ displayName: "MailBar", mixins: [m], getInitialState: function() { var e = this.props.page.get("url"); return { panelWidth: d.getPanelWidth(), isCompose: 0 === e.indexOf(g.internalUrl("mailpage", "composer")), isMessage: 0 === e.indexOf(g.internalUrl("mailpage", "message")) } }, componentWillMount: function() { d.addChangeListener(this.panelStoreChanged) }, componentWillReceiveProps: function(e) { var t = e.page.get("url"); this.setState({ isCompose: 0 === t.indexOf(g.internalUrl("mailpage", "composer")), isMessage: 0 === t.indexOf(g.internalUrl("mailpage", "message")) }) }, componentWillUnmount: function() { d.removeChangeListener(this.panelStoreChanged) }, panelStoreChanged: function() { this.setState({ panelWidth: d.getPanelWidth() }) }, sendAllOutgoing: function() { A.sendAll() }, toggleLayout: function() { var e = this.props.vivaldiSettings.MAIL_VIEW_LAYOUT, t = "top" === e ? "left" : "top"; p.set({ MAIL_VIEW_LAYOUT: t }) }, compose: function() { var e = g.internalUrl("mailpage", "composer/new", _("Mail - New")); h.openURL(e) }, render: function() { var e = this.props.vivaldiSettings.KEY_ACCESS, t = "left" === this.props.vivaldiSettings.PANEL_POSITION, s = this.props.vivaldiSettings.MAIL_IS_TURNED_OFF; return a.createElement(r, { focusName: "focus_mailbar", ref: "mailbar", className: "toolbar toolbar-mailbar", __source: { fileName: i, lineNumber: 86 } }, !this.state.isMessage && !this.state.isCompose && !t && a.createElement(l, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 92 } }), this.state.isCompose && !t && a.createElement(o, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 96 } }), this.state.isMessage && !t && a.createElement(c, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 100 } }), a.createElement("div", { className: "mailbar-group-align-panel", style: { flexBasis: this.state.panelWidth + "px" }, __source: { fileName: i, lineNumber: 103 } }, a.createElement("button", { className: "button-toolbar", title: _("navigation", "Back"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(214) }, __source: { fileName: i, lineNumber: 106 } }), a.createElement("button", { className: "button-toolbar", title: _("navigation", "Forward"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(215) }, __source: { fileName: i, lineNumber: 114 } }), this.props.vivaldiSettings.SHOW_FFW_RWD_BUTTONS && a.createElement("button", { className: "button-toolbar rewind", title: _("navigation", "Rewind"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(470) }, __source: { fileName: i, lineNumber: 123 } }), this.props.vivaldiSettings.SHOW_FFW_RWD_BUTTONS && a.createElement("button", { className: "button-toolbar next", title: _("navigation", "Forward"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(468) }, __source: { fileName: i, lineNumber: 133 } }), a.createElement("button", { className: "button-toolbar", tabIndex: e, title: _("Check for mail"), onClick: u.checkForMail, disabled: s, dangerouslySetInnerHTML: { __html: n(312) }, __source: { fileName: i, lineNumber: 142 } }), a.createElement("button", { className: "button-toolbar", tabIndex: e, title: _("Send"), onClick: this.sendAllOutgoing, disabled: s, dangerouslySetInnerHTML: { __html: n(310) }, __source: { fileName: i, lineNumber: 150 } }), a.createElement("button", { className: "button-toolbar button-compose", title: _("Compose New Message"), tabIndex: e, onClick: this.compose, disabled: s, dangerouslySetInnerHTML: { __html: n(1012) }, __source: { fileName: i, lineNumber: 158 } })), !this.state.isMessage && !this.state.isCompose && t && a.createElement(l, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 169 } }), this.state.isCompose && t && a.createElement(o, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 173 } }), this.state.isMessage && t && a.createElement(c, { vivaldiSettings: this.props.vivaldiSettings, __source: { fileName: i, lineNumber: 177 } })) } }); e.exports = s(b, v) }, function(e, t, n) { // ========================= // Function_618 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/mail/MailBarComposer.jsx", a = n(1), r = n(238), s = n(49), o = n(9), l = n(3), c = n(2), u = n(26), A = n(30), d = [{ ref: "from", labels: A("sender", "From") }, { ref: "cc", labels: A("Carbon copy") }, { ref: "bcc", labels: A("Blind carbon copy") }], h = a.createClass({ displayName: "MailBarComposer", mixins: [o], getSendQueueMenu: function() { return [Object.assign({ type: "checkbox", checked: "send" === this.props.vivaldiSettings.MAIL_SEND_OR_QUEUE, handler: this.sendAndSetSendAsDefault }, A("Send")), Object.assign({ type: "checkbox", checked: "queue" === this.props.vivaldiSettings.MAIL_SEND_OR_QUEUE, handler: this.queueAndSetQueueAsDefault }, A("Queue"))] }, sendAndSetSendAsDefault: function() { "send" !== this.props.vivaldiSettings.MAIL_SEND_OR_QUEUE && l.set({ MAIL_SEND_OR_QUEUE: "send" }) }, queueAndSetQueueAsDefault: function() { "queue" !== this.props.vivaldiSettings.MAIL_SEND_OR_QUEUE && l.set({ MAIL_SEND_OR_QUEUE: "queue" }) }, handleSendQueueClick: function(e) { 0 === e.button && this.showSendQueueContextMenu(e) }, showSendQueueContextMenu: function(e) { u(this.getSendQueueMenu(), null, "bottom")(e) }, handleHeaderClick: function(e) { 0 === e.button && this.showHeaderContextMenu(e) }, showHeaderContextMenu: function(e) { u(r.getItems(d, "compose"), null, "bottom")(e) }, render: function() { var e = this.props.vivaldiSettings.KEY_ACCESS; return a.createElement("div", { className: "mailbar-subbar", __source: { fileName: i, lineNumber: 81 } }, a.createElement("div", { className: "mailbar-group-align-content", __source: { fileName: i, lineNumber: 82 } }, a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 84 } }, "send" === this.props.vivaldiSettings.MAIL_SEND_OR_QUEUE ? a.createElement("button", { className: "button-toolbar symbol-small send-button", title: c("Send"), tabIndex: e, onClick: s.sendMessage, dangerouslySetInnerHTML: { __html: n(310) + c("Send") }, __source: { fileName: i, lineNumber: 86 } }) : a.createElement("button", { className: "button-toolbar symbol-small send-button", title: c("Queue"), tabIndex: e, onClick: s.queueMessage, dangerouslySetInnerHTML: { __html: n(310) + c("Queue") }, __source: { fileName: i, lineNumber: 94 } }), a.createElement("button", { className: "button-toolbar send-menu", title: c("Send/Queue Toggle"), tabIndex: e, onClick: this.handleSendQueueClick, dangerouslySetInnerHTML: { __html: n(1019) }, __source: { fileName: i, lineNumber: 103 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 111 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: c("Discard Draft"), tabIndex: e, onClick: s.deleteDraftMessage, dangerouslySetInnerHTML: { __html: n(952) }, __source: { fileName: i, lineNumber: 112 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 120 } }, a.createElement("button", { className: "button-toolbar symbol-small attachment-button", title: c("Add Attachment"), tabIndex: e, onClick: s.addAttachment, dangerouslySetInnerHTML: { __html: n(951) + c("Add Attachment") }, __source: { fileName: i, lineNumber: 121 } }))), a.createElement("div", { className: "mailbar-group-end button-group", __source: { fileName: i, lineNumber: 132 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: c("Show Headers"), tabIndex: e, onContextMenu: this.showHeaderContextMenu, onClick: this.handleHeaderClick, dangerouslySetInnerHTML: { __html: n(309) }, __source: { fileName: i, lineNumber: 133 } }))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_619 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/mail/MailBarList.jsx", a = n(1), r = n(238), s = n(49), o = n(246), l = n(388), c = n(9), u = n(3), A = n(2), d = n(26), h = n(30), m = [{ ref: "subject", labels: h("Subject") }, { ref: "from", labels: h("sender", "From") }, { ref: "to", labels: h("To") }, { ref: "folder", labels: h("Folder") }, { ref: "date", labels: h("Date") }, { ref: "cc", labels: h("Carbon copy") }, { ref: "replyto", labels: h("Reply To") }], p = n(42), f = p.MAIL_FILTERS_ACCOUNT_ID, g = p.ALL_MESSAGES_ACCOUNT_ID, _ = p.MAILING_LISTS_ACCOUNT_ID, v = p.UNREAD_FOLDER_PATH, b = p.RECEIVED_FOLDER_PATH, N = p.INBOX_FOLDER_TYPE, E = a.createClass({ displayName: "MailBarList", mixins: [c], getInitialState: function() { return { searchInput: "", showMailingLists: !0, showMailingListsVisible: !0, showRead: !0, showReadVisible: !0, showDuplicates: !1, inboxOnly: !1, inboxOnlyVisible: !1 } }, componentWillMount: function() { l.addChangeListener(this.selectedFolderChanged) }, componentWillUnmount: function() { l.removeChangeListener(this.selectedFolderChanged) }, onQueryChange: function() { s.setSearchOptions(o.parseQuery(this.refs.searchInput.value)), this.setState({ searchInput: this.refs.searchInput.value }) }, onQueryKeyDown: function(e) { "Enter" === e.key && (e.preventDefault(), e.stopPropagation(), this.setSearchQuery()) }, toggleLayout: function() { var e = this.props.vivaldiSettings.MAIL_VIEW_LAYOUT, t = "top" === e ? "left" : "top"; u.set({ MAIL_VIEW_LAYOUT: t }) }, toggleShowMailingLists: function() { var e = l.getSelectedFolder(); if (e) { var t = !this.state.showMailingLists, n = o.get(e.accountId, e.path), i = Object.assign({}, n.filterValue, { showMailingLists: t }), a = Object.assign({}, n, { filterValue: i }); this.setState({ showMailingLists: t }), s.addFilter(a) } }, toggleShowRead: function() { var e = l.getSelectedFolder(); if (e) { var t = !this.state.showRead, n = o.get(e.accountId, e.path), i = Object.assign({}, n.filterValue, { showRead: t }), a = Object.assign({}, n, { filterValue: i }); this.setState({ showRead: t }), s.addFilter(a) } }, toggleShowDuplicates: function() { var e = l.getSelectedFolder(); if (e) { var t = !this.state.showDuplicates, n = o.get(e.accountId, e.path), i = Object.assign({}, n.filterValue, { showDuplicates: t }), a = Object.assign({}, n, { filterValue: i }); this.setState({ showDuplicates: t }), s.addFilter(a) } }, toggleInboxOnly: function() { var e = l.getSelectedFolder(); if (e) { var t = !this.state.inboxOnly; this.setState({ inboxOnly: t }); var n = []; t && (n = [N]); var i = o.get(e.accountId, e.path), a = Object.assign({}, i.filterValue, { inboxOnly: t, includeFolderTypes: n }), r = Object.assign({}, i, { filterValue: a }); s.addFilter(r) } }, updateSearchInput: function(e, t, n) { if (e === f) { var i = o.filterValueToString(n); this.setState({ searchInput: i }) } else this.setState({ searchInput: "" }) }, updateShowRead: function(e, t, n) { e === g && t === v ? (this.setState({ showReadVisible: !1 }), this.setState({ showRead: !1 })) : (this.setState({ showReadVisible: !0 }), n.hasOwnProperty("showRead") ? this.setState({ showRead: n.showRead }) : this.setState({ showRead: !0 })) }, updateShowDuplicates: function(e) { e.hasOwnProperty("showDuplicates") ? this.setState({ showDuplicates: e.showDuplicates }) : this.setState({ showDuplicates: !1 }) }, updateInboxOnly: function(e, t, n) { this.setState({ inboxOnlyVisible: e === g && (t === v || t === b) }), this.setState({ inboxOnly: n.inboxOnly }) }, updateShowMailingLists: function(e, t, n) { e === _ ? (this.setState({ showMailingListsVisible: !1 }), this.setState({ showMailingLists: !0 })) : (this.setState({ showMailingListsVisible: !0 }), n.hasOwnProperty("showMailingLists") ? this.setState({ showMailingLists: n.showMailingLists }) : this.setState({ showMailingLists: !0 })) }, selectedFolderChanged: function() { var e = void 0, t = void 0; if (l.getSelectedFolder()) { e = l.getSelectedFolder().accountId, t = l.getSelectedFolder().path; var n = o.get(e, t) ? o.get(e, t).filterValue : {}; this.updateSearchInput(e, t, n), this.updateShowRead(e, t, n), this.updateShowDuplicates(n), this.updateInboxOnly(e, t, n), this.updateShowMailingLists(e, t, n) } }, setSearchQuery: function() { var e = o.parseQuery(this.refs.searchInput.value), t = l.getSelectedFolder(), n = f, i = void 0; "" !== e && (t && t.accountId === _ && (n = _, i = t.path), s.addFilter({ accountId: n, path: i ? i : e.name, filterValue: e })) }, getFilterMenu: function() { return [Object.assign({ type: "checkbox", checked: this.state.showMailingLists, handler: this.toggleShowMailingLists, visible: this.state.showMailingListsVisible }, h("Show Mailing Lists")), Object.assign({ type: "checkbox", checked: this.state.showRead, handler: this.toggleShowRead, visible: this.state.showReadVisible }, h("Show Read")), Object.assign({ type: "checkbox", checked: this.state.showDuplicates, handler: this.toggleShowDuplicates }, h("Show Duplicates")), Object.assign({ type: "checkbox", checked: this.state.inboxOnly, handler: this.toggleInboxOnly, visible: this.state.inboxOnlyVisible }, h("Inbox Only"))] }, handleFilterClick: function(e) { 0 === e.button && this.showFilterContextMenu(e) }, showFilterContextMenu: function(e) { d(this.getFilterMenu(), null, "bottom")(e) }, handleHeaderClick: function(e) { 0 === e.button && this.showHeaderContextMenu(e) }, showHeaderContextMenu: function(e) { d(r.getItems(m, "read"), null, "bottom")(e) }, focusSearch: function() { this.refs.searchBox.classList.add("focused") }, blurSearch: function() { this.refs.searchBox.classList.remove("focused") }, render: function() { var e = this.props.vivaldiSettings.MAIL_IS_TURNED_OFF, t = this.props.vivaldiSettings.KEY_ACCESS, r = "left" === this.props.vivaldiSettings.MAIL_VIEW_LAYOUT, o = this.props.vivaldiSettings.MAIL_VIEW_POS.width, l = r && o ? { flexBasis: o + "px" } : {}, c = n(r ? 954 : 953); return a.createElement("div", { style: { flex: 1 }, __source: { fileName: i, lineNumber: 326 } }, a.createElement("div", { className: "mailbar-group-align-list", style: l, __source: { fileName: i, lineNumber: 328 } }, a.createElement("div", { className: "searchfield", ref: "searchBox", __source: { fileName: i, lineNumber: 329 } }, a.createElement("input", { ref: "searchInput", className: "searchfield-input", onFocus: this.focusSearch, onBlur: this.blurSearch, type: "search", placeholder: A("noun", "Search"), value: this.state.searchInput, onKeyDown: this.onQueryKeyDown, onChange: this.onQueryChange, __source: { fileName: i, lineNumber: 330 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 343 } }, a.createElement("button", { className: "button-toolbar", title: A("Filter"), onContextMenu: this.showFilterContextMenu, onClick: this.handleFilterClick, tabIndex: t, disabled: e, dangerouslySetInnerHTML: { __html: n(955) }, __source: { fileName: i, lineNumber: 344 } }))), a.createElement("div", { className: "mailbar-group-align-content", __source: { fileName: i, lineNumber: 356 } }, a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 357 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Reply"), tabIndex: t, onClick: s.reply, disabled: e, dangerouslySetInnerHTML: { __html: n(465) }, __source: { fileName: i, lineNumber: 358 } }), a.createElement("button", { className: "button-toolbar symbol-small", title: A("Reply to All"), tabIndex: t, onClick: s.replyAll, disabled: e, dangerouslySetInnerHTML: { __html: n(464) }, __source: { fileName: i, lineNumber: 366 } }), a.createElement("button", { className: "button-toolbar symbol-small", title: A("mail", "Forward"), tabIndex: t, onClick: s.forward, disabled: e, dangerouslySetInnerHTML: { __html: n(461) }, __source: { fileName: i, lineNumber: 374 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 383 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Mark Read"), tabIndex: t, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(463) }, __source: { fileName: i, lineNumber: 384 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 393 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Flag"), tabIndex: t, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(467) }, __source: { fileName: i, lineNumber: 394 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 403 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Label"), tabIndex: t, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(462) }, __source: { fileName: i, lineNumber: 404 } }))), a.createElement("div", { className: "mailbar-group-end button-group", __source: { fileName: i, lineNumber: 415 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Show Headers"), tabIndex: t, onContextMenu: this.showHeaderContextMenu, onClick: this.handleHeaderClick, dangerouslySetInnerHTML: { __html: n(309) }, __source: { fileName: i, lineNumber: 416 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 425 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: A("Toggle View"), tabIndex: t, onClick: this.toggleLayout, disabled: e, dangerouslySetInnerHTML: { __html: c }, __source: { fileName: i, lineNumber: 426 } }))) } }); e.exports = E }, function(e, t, n) { // ========================= // Function_620 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/mail/MailBarMessage.jsx", a = n(1), r = n(238), s = n(49), o = n(9), l = n(2), c = n(26), u = n(30), A = [{ ref: "subject", labels: u("Subject") }, { ref: "from", labels: u("sender", "From") }, { ref: "to", labels: u("To") }, { ref: "folder", labels: u("Folder") }, { ref: "date", labels: u("Date") }, { ref: "cc", labels: u("Carbon copy") }, { ref: "replyto", labels: u("Reply To") }], d = a.createClass({ displayName: "MailBarMessage", mixins: [o], handleHeaderClick: function(e) { 0 === e.button && this.showHeaderContextMenu(e) }, showHeaderContextMenu: function(e) { c(r.getItems(A, "read"), null, "bottom")(e) }, render: function() { var e = this.props.vivaldiSettings.KEY_ACCESS, t = this.props.vivaldiSettings.MAIL_IS_TURNED_OFF; return a.createElement("div", { className: "mailbar-group-align-content", __source: { fileName: i, lineNumber: 59 } }, a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 60 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: l("Reply"), tabIndex: e, onClick: s.reply, disabled: t, dangerouslySetInnerHTML: { __html: n(465) }, __source: { fileName: i, lineNumber: 61 } }), a.createElement("button", { className: "button-toolbar symbol-small", title: l("Reply to All"), tabIndex: e, onClick: s.replyAll, disabled: t, dangerouslySetInnerHTML: { __html: n(464) }, __source: { fileName: i, lineNumber: 69 } }), a.createElement("button", { className: "button-toolbar symbol-small", title: l("mail", "Forward"), tabIndex: e, onClick: s.forward, disabled: t, dangerouslySetInnerHTML: { __html: n(461) }, __source: { fileName: i, lineNumber: 77 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 86 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: l("Mark Read"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(463) }, __source: { fileName: i, lineNumber: 87 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 96 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: l("Flag"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(467) }, __source: { fileName: i, lineNumber: 97 } })), a.createElement("div", { className: "button-group", __source: { fileName: i, lineNumber: 106 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: l("Label"), tabIndex: e, onClick: "", disabled: !0, dangerouslySetInnerHTML: { __html: n(462) }, __source: { fileName: i, lineNumber: 107 } })), a.createElement("div", { className: "mailbar-group-end button-group", __source: { fileName: i, lineNumber: 116 } }, a.createElement("button", { className: "button-toolbar symbol-small", title: l("Show Headers"), tabIndex: e, onContextMenu: this.showHeaderContextMenu, onClick: this.handleHeaderClick, dangerouslySetInnerHTML: { __html: n(309) }, __source: { fileName: i, lineNumber: 117 } }))) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_621 // ========================= "use strict"; function i(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var a = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), r = n(239), s = n(181), o = function() { function e() { i(this, e) } return a(e, [{ key: "count", value: function() { return r.folders.count() } }, { key: "add", value: function(e, t) { return r.folders.put({ accountId: e, folders: t }) } }, { key: "remove", value: function(e) { return r.folders.delete(e) } }, { key: "get", value: function(e) { return r.folders.get(e).then(function(e) { return e ? e.folders : {} }) } }, { key: "getByType", value: function(e, t) { return this.get(e).then(function(e) { return e[t] }) } }, { key: "getAll", value: function() { return r.folders.toArray().then(function(e) { var t = {}; return e.forEach(function(e) { return t[e.accountId] = { folders: e.folders } }), t }) } }, { key: "_getAllPaths", value: function(e) { var t = new Set; return this.get(e).then(function(e) { return Object.keys(e).forEach(function(n) { var i = e[n]; i.forEach(function(e) { t.add(e.path) }) }), t }) } }, { key: "getCache", value: function(e, t) { return this._getAllPaths(e).then(function(n) { return r.mailboxCache.where("accountId").equals(e).toArray().then(function(e) { var i = {}; return e.forEach(function(e) { i[e.path] = e, i[e.path].uidlist = t[e.path] || [], i[e.path].exists = i[e.path].uidlist.length, i[e.path].highestModseq = i[e.path].highestModseq || "0", n.delete(e.path) }), n.forEach(function(e) { var n = t[e] || [], a = n.length > 0 ? n[n.length - 1] + 1 : 0; i[e] = { uidlist: n, uidNext: a, exists: n.length } }), i }) }) } }, { key: "setCache", value: function(e, t, n) { return r.transaction("rw", r.mailboxCache, function() { Object.keys(n).forEach(function(i) { i !== t && 0 !== n[i].exists || r.mailboxCache.put({ accountId: e, path: i, uidNext: n[i].uidNext, highestModseq: n[i].highestModseq || "0" }) }) }) } }, { key: "deleteAccount", value: function(e) { var t = r.mailboxCache.where("accountId").equals(e); return t.toArray().then(function(t) { return r.transaction("rw", [r.mailboxCache, r.folders], function() { return s.Promise.all(t.map(function(t) { return r.mailboxCache.delete([e, t.path]) })).then(function() { return r.folders.delete(e) }) }) }) } }, { key: "clearDb", value: function() { return r.folders.clear().then(r.mailboxCache.clear()) } }]), e }(); e.exports = new o }, function(e, t, n) { // ========================= // Function_622 // ========================= "use strict"; var i = n(7), a = i.cloneDeep, r = n(42), s = r.MAIL_FOLDERS_ID, o = function(e, t, n) { var i = []; if (!e) return i; for (var a = Object.keys(e), r = 0; r < a.length; r++) { for (var s = e[a[r]], o = 0; o < s.length; o++) { var l = s[o]; l.accountId = t, l.id = n + "_" + l.path } i = i.concat(s) } return i.filter(function(e) { return void 0 !== e }) }, l = function(e) { for (var t = [], n = Object.keys(e), i = 0; i < n.length; i++) { var a = e[n[i]]; t.push(a.node) } return t }, c = function(e, t) { var n = t.parentPath, i = n.split(t.delimiter), a = i[i.length - 1], r = i.slice(0, i.length - 1).join(t.delimiter), o = { level: t.level - 1, parentPath: r, node: { name: a, path: n, delimiter: t.node.delimiter, type: a, accountId: t.node.accountId, id: s + "_" + t.node.accountId + "_" + n, children: [] } }; return e[t.parentPath] = o, o }, u = function(e) { for (var t = {}, n = 0, i = 0; i < e.length; i++) { var a = e[i]; a.children = []; var r = a.path.split(a.delimiter), s = r.length; n = s > n ? s : n, t[a.path] = { level: s, parentPath: r.slice(0, s - 1).join(a.delimiter), node: a } } for (var o = n; o > 1; o--) { for (var u = [], A = Object.keys(t), d = 0; d < A.length; d++) { var h = t[A[d]]; h.level === o && u.push(h) } for (var m = 0; m < u.length; m++) { var p = u[m], f = t[p.parentPath]; f || (f = c(t, p)), f.node.children.push(p.node), delete t[p.node.path] } } return l(t) }, A = function e(t) { var n = t.children.filter(function(t) { return t.children && (t.children = e(t)), !!t.subscribed || "Inbox" === t.type || t.children && t.children.length > 0 }); return n }, d = function(e) { var t = Object.keys(e); return t.map(function(t, n) { var i = e[t], a = i.folders, r = s + "_" + t, l = o(a, t, r), c = u(l); return { name: t, accountId: t, id: s + "_" + t, children: c } }) }, h = { getSubscribedFolders: function(e) { var t = a(e), n = d(t); return n.map(function(e) { return e.children && (e.children = A(e)), e }) } }; e.exports = h }, function(e, t, n) { // ========================= // Function_623 // ========================= "use strict"; var i = n(2), a = n(47), r = n(362), s = n(42), o = s.MAIL_STATUS_TIMEOUT, l = function(e, t, n, s, o, l) { return e.MAIL_SMTP_PORT === -1 ? (console.warn("not gonna send as the smtp port is missing"), void a.setStatus(i("SMTP client not configured for sending mail"))) : (a.setStatus(i("Sending")), r.getSMTPClient(e).then(function(i) { i.onidle = c.bind(i, e, t, n, s), i.onready = u.bind(i, o), i.ondone = A.bind(i, l), i.onerror = d.bind(i, e), i.connect() })) }, c = function(e, t, n, i) { this.alreadySending || (this.alreadySending = !0, this.useEnvelope({ from: e.MAIL_EMAIL, to: t.concat(n, i ? i : []).map(function(e) { return e.address }) })) }, u = function(e, t) { t.length > 0 ? a.setStatus(i("Rejected recipients") + ": " + t) : (this.send(e), this.end()) }, A = function(e, t) { t ? a.setStatus(i("Message was sent"), o) : a.setStatus(i("Failed to send message")), this.quit(), t && e() }, d = function(e, t) { a.setStatus(t.message + " - " + i("Server") + ": " + e.MAIL_SMTP_SERVER + " - " + i("User") + ": " + e.MAIL_SMTP_USER), this.quit() }; e.exports = { send: l } }, function(e, t, n) { // ========================= // Function_624 // ========================= "use strict"; function i(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } function a(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = t.references.concat(t.inReplyTo ? [t.inReplyTo] : []); n && (i = i.reverse()); var a = !0, r = !1, s = void 0; try { for (var o, l = function() { var t = o.value, n = e.find(function(e) { return e.messageId === t }); if (n) return { v: n } }, c = i[Symbol.iterator](); !(a = (o = c.next()).done); a = !0) { var A = l(); if ("object" === ("undefined" == typeof A ? "undefined" : u(A))) return A.v } } catch (e) { r = !0, s = e } finally { try { !a && c.return && c.return() } finally { if (r) throw s } } } function r(e, t, n) { return t.find(function(t) { return t.uid === e.uid }) ? n : (t.push(e), A.findReferencesTo(e).then(function(a) { return [e].concat(i(a)).forEach(function(e) { n.find(function(t) { return t.uid === e.uid }) || n.push(e) }), e.inReplyTo ? A.getByMessageId(e.accountId, e.inReplyTo).then(function(e) { return e.length ? r(e[0], t, n) : n }) : n })) } function s(e) { var t = void 0; return A.findMyReferences(e).then(function(n) { return t = a(n, e, !0), a(n, e) || e }).then(function(e) { return r(e, [], []) }).then(function(n) { var i = n.reduce(function(e, t) { return Math.max(t.sentDate, e) }, e.sentDate), r = h(i, v), s = [], o = []; return n.forEach(function(n) { if (n.messageId === e.messageId) { var i = r; t && (i += t.threadKey.slice(v) + h(n.sentDate, v)), i !== e.threadKey && (n.threadKey = i, s.push(n)) } else n.references.length && n.references.indexOf(e.messageId) > -1 ? o.push(n) : n.threadKey && 0 === n.threadKey.indexOf(r) || (n.threadKey = r + (n.threadKey ? n.threadKey.slice(v) : ""), s.push(n)) }), o.forEach(function(t) { var n = [e].concat(o), i = a(n, t, !0), l = r; i && (l = i.threadKey + h(t.sentDate, v)), l !== t.threadKey && (t.threadKey = l, s.push(t)) }), s }).then(function(e) { return A.updateSearchListEntries(e) }) } function o(e, t, n, i, a) { return (a - i < 10 || i % 300 === 0) && (m.setStatus(g("Updating thread - $1 $2 $3/$4", [e, t, i, a])), p.addPathIndicator(e, t, b, i, a)), s(n).then(function() { return f.set({ MAIL_THREADING: { accountId: e, path: t, uid: n.uid } }) }) } function l(e, t, n) { m.setStatus(g("Updating threads - $1 $2", [e, t])); var i = 0; return n.reduce(function(a, r) { return a.then(function() { return o(e, t, r, ++i, n.length) }) }, Promise.resolve()).then(function() { return f.remove("MAIL_THREADING") }).then(function() { m.setStatus(g("Finished updating threads - $1 $2", [e, t])), p.removePathIndicator(e, t, b) }) } function c(e, t, n) { return A.getSearchListEntries(e, t, n).then(function(n) { return l(e, t, n) }) } var u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, A = n(138), d = n(398), h = d.padLeftZeros, m = n(47), p = n(49), f = n(3), g = n(2), _ = n(42), v = _.THREAD_KEY_LENGTH, b = _.INDICATOR_TYPE_THREADING; e.exports = { updateThreads: l, rerunThreading: c } }, function(e, t) { // ========================= // Function_625 // ========================= "use strict"; var n = function(e, t) { return e.accountId === t.accountId ? e.path === t.path ? e.uid - t.uid : e.path.localeCompare(t.path) : e.accountId.localeCompare(t.accountId) }, i = function(e, t) { return e.sentDate === t.sentDate ? n(e, t) : e.sentDate - t.sentDate }, a = function(e, t) { return t.id - e.id }, r = function(e, t) { return e.id - t.id }, s = function(e) { return e ? r : a }, o = function(e, t) { return e.threadKey === t.threadKey ? i(e, t) : e.threadKey > t.threadKey ? 1 : -1 }; e.exports = { sentDateMsgComp: i, idComparator: s, threadKeyComp: o } }, function(e, t, n) { // ========================= // Function_626 // ========================= "use strict"; function i(e, t, n, i) { o(e, t, n, "unread", i) } function a(e, t, n, i) { o(e, t, n, "flagged", i) } function r(e, t, n, i) { o(e, t, n, "forwarded", i) } function s(e, t, n, i) { o(e, t, n, "replied", i) } function o(e, t, n, i, a) { var r = {}; r[i] = a; var s = !0, o = !1, l = void 0; try { for (var c, u = n[Symbol.iterator](); !(s = (c = u.next()).done); s = !0) { var A = c.value; A.flags = d.updateFlags(A.flags, r), A.unseen = !1 } } catch (e) { o = !0, l = e } finally { try { !s && u.return && u.return() } finally { if (o) throw l } } g && g.accountId === e && g.path === t && g.flag === i && g.isFlagSet === a ? g.messages = n.concat(g.messages) : (g && _.flush(), g = { accountId: e, path: t, messages: n, flag: i, isFlagSet: a }), _() } var l = n(138), c = n(386), u = n(7), A = u.debounce, d = n(135), h = n(42), m = h.ALL_MESSAGES_ACCOUNT_ID, p = h.FLUSH_FLAG_OPERATIONS_TIMEOUT, f = n(49); e.exports.setUnread = i, e.exports.setFlagged = a, e.exports.setForwarded = r, e.exports.setReplied = s; var g = void 0, _ = A(function() { var e = g, t = e.accountId, n = e.path, i = e.messages, a = e.flag, r = e.isFlagSet; g = void 0, l.update(t, n, i).then(function(e) { if (e.length > 0 && f.updateMessages(t, n, e), t !== m) { var s = i.map(function(e) { return e.uid }), o = d.getBufferOperation(a); l.addToBuffer(t, n, s, o, r).then(function() { return c.flushBuffer(t) }) } }) }, p) }, function(e, t) { // ========================= // Function_627 // ========================= "use strict"; var n = function e(t, n) { if (n) { var i, a; t ? (i = "html", a = "text") : (i = "text", a = "html"); for (var r, s = 0; s < n.length; s++) { if (n[s].type === i) return n[s]; r || n[s].type !== a ? "signed" === n[s].type && n[s].content && (r = e(t, n[s].content)) : r = n[s] } return r } }; e.exports = n }, function(e, t, n) { // ========================= // Function_628 // ========================= "use strict"; var i = n(7).curry, a = n(42), r = a.ALL_MESSAGES_ACCOUNT_ID, s = a.MAILING_LISTS_ACCOUNT_ID, o = a.MAIL_FILTERS_ACCOUNT_ID, l = function(e, t, n, i, a, l) { var c = !(arguments.length > 6 && void 0 !== arguments[6]) || arguments[6]; return l[r] || (l[r] = { unread: 0, unseen: 0, total: 0 }), c && e !== r && e !== s && e !== o && (l[r].unread += n, l[r].unseen += i, l[r].total += a), l[e] || (l[e] = { unread: 0, unseen: 0, total: 0 }), c && e !== r && (l[e].unread += n, l[e].unseen += i, l[e].total += a), l[e][t] || (l[e][t] = { unread: 0, unseen: 0, total: 0 }), l[e][t].unread += n, l[e][t].unseen += i, l[e][t].total += a, l }, c = i(l); e.exports = c }, function(e, t, n) { // ========================= // Function_629 // ========================= "use strict"; function i(e) { if (!e.from || 0 === e.from.length) return void console.log("missing from-field and hence can not send"); var t = p.getSync("MAIL_ACCOUNTS") || [], n = t.find(function(t) { return t.MAIL_EMAIL === e.from[0].address }); return n ? void A.send(n, e.to, e.cc, e.bcc, e.raw, function() { c.uploadSentMessage(e.raw, n, function(e) { e && console.log("failed to upload to sent-folder, err:", e) }), p.set({ MAIL_LAST_SENT_FROM: n.MAIL_EMAIL }, function(e) { e && console.log("Failed to store last sender, err:", e) }), u.remove(_, v, [e.uid]).then(function() { return f.removeMessages(_, v, [e.uid]) }); var t = e.forwarded || e.replied; t && ! function() { var n = t.accountId, i = t.path, a = t.uid; u.get(n, i, a).then(function(t) { return t ? void(e.forwarded ? l.setForwarded(n, i, [t], !0) : l.setReplied(n, i, [t], !0)) : void console.warn("Referenced message not found", n, i, a) }) }() }) : void console.log("no account registered with address in from-field and hence can not send") } function a(e, t) { for (var n = function() { var n = e[a].uid, r = e[a].queued; u.get(_, v, n).then(function(e) { !t && r || h(e).then(function(e) { return i(e) }) }) }, a = 0; a < e.length; a++) n() } function r() { var e = !(arguments.length > 0 && void 0 !== arguments[0]) || arguments[0], t = m.getAll().filter(function(e) { return e.accountId === _ && e.path === v }); a(t, e) } function s(e) { var t = m.getAll().filter(function(t) { return t.accountId === _ && t.path === v && t.from && t.from[0] && t.from[0].address === e }); a(t, !0) } function o(e) { a(e, !0) } var l = n(626), c = n(386), u = n(138), A = n(623), d = n(240), h = d.parseMailBody, m = n(391), p = n(3), f = n(49), g = n(42), _ = g.ALL_MESSAGES_ACCOUNT_ID, v = g.OUTBOX_FOLDER_PATH; e.exports = { sendAll: r, sendForAccount: s, sendSelected: o } }, function(e, t, n) { // ========================= // Function_630 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/BackgroundTaskStatus.jsx", a = n(1), r = n(26), s = a.createClass({ displayName: "BackgroundTaskStatus", getInitialState: function() { return { taskInfo: this.props.taskInfo } }, render: function() { return a.createElement("div", { className: "no-events", __source: { fileName: i, lineNumber: 14 } }, a.createElement("span", { className: "button-toolbar-small filter-invert", id: this.state.taskInfo.id, title: this.state.taskInfo.title + "\n" + this.state.taskInfo.description, style: this.state.taskInfo.style, onContextMenu: r(this.props.taskInfo.menuItems), __source: { fileName: i, lineNumber: 15 } }), a.createElement("span", { className: "button-toolbar-small", __source: { fileName: i, lineNumber: 21 } }, this.state.taskInfo.text)) } }); e.exports = s }, function(e, t, n) { // ========================= // Function_631 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/BackgroundTaskStatusList.jsx", a = n(1), r = n(9), s = n(384), o = n(630), l = a.createClass({ displayName: "BackgroundTaskStatusList", mixins: [r], getInitialState: function() { return { backgroundTasks: s.getBackgroundTasks() } }, componentWillMount: function() { s.addChangeListener(this.onBackgroundTaskStoreChange) }, componentWillUnmount: function() { s.removeChangeListener(this.onBackgroundTaskStoreChange) }, onBackgroundTaskStoreChange: function() { this.setState({ backgroundTasks: s.getBackgroundTasks() }) }, render: function() { return a.createElement("div", { __source: { fileName: i, lineNumber: 29 } }, this.state.backgroundTasks.map(function(e) { return a.createElement(o, { key: e.id, taskInfo: e, __source: { fileName: i, lineNumber: 30 } }) })) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_632 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/MainBar.jsx", a = n(1), r = (n(617), n(737)), s = n(17), o = n(20), l = o.urls, c = a.createClass({ displayName: "MainBar", getInitialState: function() { return { page: s.getActivePage() } }, componentWillMount: function() { s.addChangeListener(this.pageStoreChanged) }, componentWillUnmount: function() { s.removeChangeListener(this.pageStoreChanged) }, pageStoreChanged: function() { this.setState({ page: s.getActivePage() }) }, render: function() { return l.isMailPage(this.state.page.get("url")), a.createElement(r, { page: this.state.page, incognito: this.props.incognito, currentOS: this.props.currentOS, searchEngines: this.props.searchEngines, currentWindowstate: this.props.currentWindowstate, __source: { fileName: i, lineNumber: 35 } }) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_633 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/StatusInfo.jsx", a = n(1), r = n(9), s = n(767), o = n(5), l = a.createClass({ displayName: "StatusInfo", mixins: [r], getInitialState: function() { return { status: s.getStatus(), visible: !1 } }, componentWillMount: function() { s.addChangeListener(this.onStoreChange) }, componentWillUnmount: function() { s.removeChangeListener(this.onStoreChange) }, onStoreChange: function() { var e = s.getStatus(); this.setState({ status: "" === e ? this.state.status : e, visible: "" !== e }) }, render: function() { return a.createElement("div", { id: "status_info", className: o({ status_info: !0, visible: this.state.visible }), __source: { fileName: i, lineNumber: 35 } }, a.createElement("span", { __source: { fileName: i, lineNumber: 40 } }, this.state.status)) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_634 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = n(1), r = n(3), s = n(7), o = s.cloneDeep, l = s.debounce, c = ["THEMES_SYSTEM", "THEMES_USER", "THEMES_SCHEDULE", "THEMES_SCHEDULE_ENABLED"], u = void 0, A = a.createClass({ displayName: "ThemeScheduleDaemon", componentWillMount: function() { var e = o(r.getKeysSync(c)), t = e.THEMES_SYSTEM.concat(e.THEMES_USER); e.THEMES_SCHEDULE.map(function(e) { return t.some(function(t) { return t.name === e.themeName }) ? e : Object.assign(e, { themeName: t[t.length - 1].name }) }), this.setState(e) }, componentDidMount: function() { var e = this; c.forEach(function(t) { return r.addListener(t, e.vivaldiSettingHandler) }), r.getSync("THEMES_SCHEDULE_ENABLED") === !0 && (this.setTheme(), this.scheduleThemeChange()) }, componentWillUnmount: function() { var e = this; c.forEach(function(t) { return r.removeListener(t, e.vivaldiSettingHandler) }) }, getTimerByDate: function(e, t) { for (var n = this.state.THEMES_SCHEDULE, i = 60 * e.getHours() + e.getMinutes(), a = o(n), r = o(n), s = 0; s < n.length; s++) a[s].hours -= 24, r[s].hours += 24; if (n = n.concat(a, r), "current" === t) { n.sort(function(e, t) { return 60 * t.hours + t.minutes - (60 * e.hours + e.minutes) }); for (var l = 0; l < n.length; l++) { var c = 60 * n[l].hours + n[l].minutes; if (c < i + 1) return n[l] } } else if ("next" === t) { n.sort(function(e, t) { return 60 * e.hours + e.minutes - (60 * t.hours + t.minutes) }); for (var u = 0; u < n.length; u++) { var A = 60 * n[u].hours + n[u].minutes; if (A > i) return n[u] } } }, scheduleThemeChange: function() { var e = this, t = new Date, n = this.getTimerByDate(t, "next"), i = n.minutes + 60 * n.hours, a = i - 60 * t.getHours() - t.getMinutes(), r = 60 * a - t.getSeconds(), s = 1e3 * r; u && clearTimeout(u), this.state.THEMES_SCHEDULE_ENABLED !== !1 && (u = setTimeout(function() { e.setTheme(), e.scheduleThemeChange() }, s)) }, setTheme: function() { var e = this.getTimerByDate(new Date, "current"), t = this.getTheme(e.themeName); this.state.THEMES_SCHEDULE_ENABLED !== !1 && .1 === t.version && r.set({ THEME_CURRENT: t.name, BROWSER_COLOR_BG: t.colors.baseBg, BROWSER_COLOR_FG: t.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: t.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: t.colors.accentBg, TABCOLOR_BEHIND_TABS: t.settings.accentOnWindow, USE_TABCOLOR: t.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: t.settings.tabsTransparent, BORDER_RADIUS: t.settings.borderRadius }) }, getTheme: function(e) { for (var t = this.state.THEMES_SYSTEM.concat(this.state.THEMES_USER), n = 0; n < t.length; n++) { var i = t[n]; if (i.name === e) return i } }, handleNewSettings: l(function() { this.setTheme(), this.scheduleThemeChange() }, 200), vivaldiSettingHandler: function(e, t, n) { if (e !== t && this.state[n] !== t) if ("THEMES_USER" === n) { for (var a = t.concat(this.state.THEMES_SYSTEM), s = o(this.state.THEMES_SCHEDULE), l = !0, c = 0; c < s.length; c++) { for (var u = !1, A = 0; A < a.length; A++) if (s[c].themeName === a[A].name) { u = !0; break } u || (l = !1, s[c].themeName = a[a.length - 1].name) } l ? this.setState(i({}, n, t), this.handleNewSettings()) : r.set(i({ THEMES_SCHEDULE: s }, n, t)) } else this.setState(i({}, n, t), this.handleNewSettings()) }, render: function() { return null } }); e.exports = A }, function(e, t, n) { // ========================= // Function_635 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/TopMenu.jsx", a = n(1), r = n(9), s = n(236), o = n(52), l = n(17), c = n(4), u = n(20), A = u.urls, d = n(2), h = a.createClass({ displayName: "TopMenu", mixins: [r], getInitialState: function() { return Object.assign({ menuItems: o.getHorizontalMenu(l.getPages()) }, this.getPageStoreState()) }, componentDidMount: function() { l.addChangeListener(this._onPageStoreChange), o.addChangeListener(this._onCommandStoreChanged) }, componentWillUnmount: function() { l.removeChangeListener(this._onPageStoreChange), o.removeChangeListener(this._onCommandStoreChanged) }, _onCommandStoreChanged: function() { this.setState({ menuItems: o.getHorizontalMenu(l.getPages()) }) }, _onPageStoreChange: function() { var e = this.getPageStoreState(), t = e.pages; (this.state.pages.size !== t.size || this.state.pages.some(function(e, n) { var i = t.get(n); return i !== e && i.title !== e.title })) && (e.menuItems = o.getHorizontalMenu(t)), this.setState(e) }, getPageStoreState: function() { return { activePage: l.getActivePage(), pages: l.getPages() } }, getMenuItemsState: function(e) { return { menuItems: o.getHorizontalMenu(e) } }, close: function(e) { e.stopPropagation(); var t = c.app.window.getAll(); c.app.window.current().close(), 1 === t.length && c.runtime.sendMessage({ action: "forceQuit" }) }, render: function() { return a.createElement("div", { className: "topmenu", __source: { fileName: i, lineNumber: 74 } }, a.createElement("button", { className: "vivaldi-horizontal-icon", onDoubleClick: this.close, title: d("Double Click to Close"), tabIndex: "-1", dangerouslySetInnerHTML: { __html: n(1024) }, __source: { fileName: i, lineNumber: 75 } }), a.createElement(s, { horizontal: !0, platformPopups: !0, items: this.state.menuItems, __source: { fileName: i, lineNumber: 83 } }), a.createElement("div", { className: "horizontal-menu-pagetitle", __source: { fileName: i, lineNumber: 86 } }, A.getDisplayTitle(this.state.activePage))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_636 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/main.jsx", r = n(1), s = n(9), o = n(69), l = n(567), c = n(365), u = n(355), A = n(389), d = n(17), h = n(111), m = n(639), p = n(37), f = n(588), g = n(586), _ = n(15), v = n(646), b = n(131), N = n(58), E = n(632), S = n(637), T = n(685), y = n(593), C = n(592), I = n(720), O = n(378), w = n(635), D = n(716), k = n(6), M = n(3), L = n(59), P = n(739), R = n(633), x = n(631), B = n(250), U = n(2), F = n(4), H = n(382), V = n(10), W = n(5), G = n(777), K = G.tabSwitcherListener, j = n(65), z = n(25), Y = n(235), J = n(634), Q = n(7), Z = Q.isEqual, q = n(72), X = q.MESSAGE_START_DRAGGING, $ = q.MESSAGE_END_DRAGGING, ee = ["ADDRESS_BAR_POSITION", "BOOKMARK_BAR_DISPLAY", "BOOKMARK_BAR_POSITION", "BOOKMARK_BAR_VISIBLE", "DEFAULT_SEARCH_ENGINE", "FOCUS_CYCLE_TRAP", "KEY_ACCESS", "KEY_ACCESS_OS_DEFAULT", "LINUX_ALT_CONTROLS", "MINIMALISTIC_UI_RECOVER_INFO", "MINIMALISTIC_UI_SHOW", "PANEL_POSITION", "SEARCH_ENGINES", "SHOW_ADDRESS_BAR", "SHOW_TAB_BAR", "SHOW_VIVALDI_FOOTER", "SWITCH_TABS_AT_WINDOW_EDGE", "TABCOLOR_BEHIND_TABS", "TAB_POSITION", "USE_BISCUIT_MODE", "USE_TAB_TRANSPARENT_TABS", "TAB_STACKING", "USE_ANIMATION", "VIVALDI_MENU_POSITION"]; "MacIntel" === navigator.platform && (ee.push("vivaldi.apple_keyboard_ui_mode"), ee.push("vivaldi.apple_action_on_double_click")); var te = r.createClass({ displayName: "MainWindow", mixins: [c, s], getInitialState: function() { return Object.assign({ currentOS: L(), startupDlg: null, currentWindowstate: F.app.window.current().isMaximized() ? "maximized" : "normal", previousWindowstate: null, hasFocus: !0, noVisualBlur: !1, mainDialogType: { key: null, func: null }, confirmOpenBookmarksOptions: null, clearBrowsingHistoryDialog: null, importData: null, initialNativeView: !1, incognito: !1, macKeyUIMode: null, macFrameDblClick: null, defaultPageZoomLevel: 1, saveSession: null, openSession: null, panelOpen: N.getPanelButtonsVisible(), preventAppRegionDrag: !1 }) }, componentWillMount: function() { var e = this; A.addChangeListener(this._onMainStoreChanged), h.addChangeListener(this._onActiveWebViewStoreChanged), N.addChangeListener(this._onPanelStoreChanged), F.tabs.onZoomChange.addListener(this._onTabZoomChange), V.zoom.onDefaultZoomChanged.addListener(this.onDefaultZoomChanged), V.zoom.getDefaultZoom(function(t) { e.setState({ defaultPageZoomLevel: t }) }), M.get("USE_NATIVE_WINDOW_DECORATIONS", function(t) { e.setState({ initialNativeView: t }) }), M.addListener("MINIMALISTIC_UI_SHOW", this.handleToggleUI), M.addListener("DEFAULT_SEARCH_ENGINE", this.onDefaultSearchEngineChanged), M.addListener("SEARCH_ENGINES", this.onSearchEnginesChanged), F.windows.get(window.vivaldiWindowId, {}, function(t) { t && e.setState({ incognito: t.incognito }) }), F.runtime.onMessage.addListener(this.onMessageReceived), this._updateKeyUIMode() }, onLoad: function() { var e = F.app.window.current(); M.get("APPLICATION_STATE", function(t) { "fullscreen" === t && e.fullscreen() }) }, componentDidMount: function() { var e = this; this.gestures = new m, this.gestures.attachEvents(), p.attachEvents(), window.addEventListener("load", this.onLoad); var t = F.app.window.current(); t.onMaximized.addListener(this.onMaximized), t.onFullscreened.addListener(this.onFullscreened), t.onRestored.addListener(this.onRestored), window.addEventListener("focus", this.onWindowFocus), window.addEventListener("blur", this.onWindowBlur), Object.keys(this.props.theme).forEach(function(t) { document.body.style.setProperty("--" + t, e.props.theme[t]) }), F.contextMenus.removeAll(function() { F.contextMenus.create({ id: "searchWebFor", title: U("Search for “%s”"), contexts: ["selection"] }, function() { F.runtime.lastError && console.warn("contextMenus.create failed:", F.runtime.lastError) }), e.updateSearchMenu(!0), F.contextMenus.onClicked.addListener(function(t, n) { if (e.state.hasFocus && !F.app.window.current().isMinimized()) switch (t.menuItemId) { case "searchWebFor": var i = e.props.vivaldiSettings.DEFAULT_SEARCH_ENGINE; "number" != typeof i && (i = Number(i)), e._searchWithSelection(t.selectionText, i); break; default: "selectSearchEngine" === t.parentMenuItemId ? e._searchWithSelection(t.selectionText, Number(t.menuItemId)) : console.log("Unknown context menu item:", t, "in", n) } }) }), this.showStartupDialog() }, componentDidUpdate: function(e, t) { var n = this; Z(e.theme, this.props.theme) || Object.keys(this.props.theme).forEach(function(e) { var t = "--" + e, i = n.props.theme[e]; document.body.style.removeProperty(t), document.body.style.setProperty(t, i) }) }, componentWillUnmount: function() { this.gestures.detachEvents(), p.detachEvents(), window.removeEventListener("load", this.onLoad), window.removeEventListener("focus", this.onWindowFocus), window.removeEventListener("blur", this.onWindowBlur), A.removeChangeListener(this._onMainStoreChanged), N.removeChangeListener(this._onPanelStoreChanged), h.removeChangeListener(this._onActiveWebViewStoreChanged), F.tabs.onZoomChange.removeListener && F.tabs.onZoomChange.removeListener(this._onTabZoomChange), V.zoom.onDefaultZoomChanged.removeListener(this.onDefaultZoomChanged), M.removeListener("MINIMALISTIC_UI_SHOW", this.handleToggleUI), F.runtime.onMessage.removeListener(this.onMessageReceived) }, onDefaultSearchEngineChanged: function(e, t) { var n = this.props.vivaldiSettings.SEARCH_ENGINES; this.updateSearchMenu(!1, n, t) }, onSearchEnginesChanged: function(e, t) { var n = this.props.vivaldiSettings.DEFAULT_SEARCH_ENGINE; this.updateSearchMenu(!1, t, n) }, updateSearchMenu: function(e, t, n) { function i(e, t) { F.contextMenus.create({ id: "selectSearchEngine", title: U("Search with"), contexts: ["selection"] }, function() { F.runtime.lastError && console.warn("contextMenus.create failed:", F.runtime.lastError), e.forEach(function(e) { F.contextMenus.create({ parentId: "selectSearchEngine", id: e.Id.toString(), title: e.Name, contexts: ["selection"] }) }) }) } e ? (t = this.props.vivaldiSettings.SEARCH_ENGINES, n = this.props.vivaldiSettings.DEFAULT_SEARCH_ENGINE, i(t, n)) : F.contextMenus.remove("selectSearchEngine", function() { i(t, n) }) }, _searchWithSelection: function(e, t) { var n = this.props.vivaldiSettings.SEARCH_ENGINES.filter(function(e) { return e.Id === t }).map(function(e) { return e.Url }); n.length > 0 && j.goSearchURL(e, { inCurrent: !1, useSearchEngineURL: n[0] }) }, _updateKeyUIMode: function() { if (this.props.vivaldiSettings.KEY_ACCESS_OS_DEFAULT) { var e = this.props.vivaldiSettings["vivaldi.apple_keyboard_ui_mode"]; 2 === e && "0" !== this.props.vivaldiSettings.KEY_ACCESS ? M.set({ KEY_ACCESS: "0" }) : 0 === e && "-1" !== this.props.vivaldiSettings.KEY_ACCESS && M.set({ KEY_ACCESS: "-1" }) } }, _onMainStoreChanged: function(e) { switch (e.action) { case "fullscreen": this.toggleFullscreen(); break; case "quickcommand": this.showQuickCommand(); break; case "confirmOpenBookmarks": this.showConfirmOpenBookmarksDialog(e.options); break; case "importData": this.showImportData(); break; case "saveSession": this.showSaveSession(); break; case "openSession": this.showOpenSession(); break; case "showClearBrowsingHistory": this.showClearBrowsingHistoryDialog(e.options) } switch (e.type) { case k.MAIN_SHOW_KEYBOARDS_SHORTCUTS: this.showShortcuts(); break; case k.MAIN_ZOOM_IN: this.doActionZoomIn(); break; case k.MAIN_ZOOM_OUT: this.doActionZoomOut(); break; case k.MAIN_ZOOM_HALF: this.doActionZoomHalf(); break; case k.MAIN_ZOOM_DOUBLE: this.doActionZoomDouble(); break; case k.MAIN_ZOOM_RESET: this.doActionZoomReset(); break; case k.MAIN_TOGGLE_TAB_BAR: this.toggleTabBar(); break; case k.MAIN_TOGGLE_ADDRESS_BAR: this.toggleAddressBar(); break; case k.MAIN_TOGGLE_UI: this.toggleUI() } }, toggleFullscreen: function() { var e = F.app.window.current(); e.isFullscreen() ? (h.getActiveWebView() && h.getActiveWebView().setIsFullscreen(!1), e.restore()) : (e.fullscreen(), M.set({ APPLICATION_STATE: "fullscreen" })) }, showQuickCommand: function() { var e = o(this.state, { mainDialogType: this.state.mainDialogType && this.state.mainDialogType.key === k.MAIN_SHOW_QUICKCOMMANDS ? { key: { $set: null }, func: { $set: null } } : { key: { $set: k.MAIN_SHOW_QUICKCOMMANDS }, func: { $set: this.showQuickCommand } } }); return this.setState(e), !1 }, showShortcuts: function() { var e = o(this.state, { mainDialogType: this.state.mainDialogType && this.state.mainDialogType.key === k.MAIN_SHOW_KEYBOARDS_SHORTCUTS ? { key: { $set: null }, func: { $set: null } } : { key: { $set: k.MAIN_SHOW_KEYBOARDS_SHORTCUTS }, func: { $set: this.showShortcuts } } }); return this.setState(e), !1 }, toggleTabSwitcher: function() { var e = o(this.state, { mainDialogType: this.state.mainDialogType && this.state.mainDialogType.key === k.MAIN_SHOW_VISUAL_TAB_SWITCHER ? { key: { $set: null }, func: { $set: null } } : { key: { $set: k.MAIN_SHOW_VISUAL_TAB_SWITCHER }, func: { $set: this.toggleTabSwitcher } } }); return this.setState(e), !1 }, handleTabSwitcherActivation: function(e) { if (!e) { var t = this.refs.mainDialog.refs.visualTabSwitcher.state.selected; _.openPage(t) } this.toggleTabSwitcher() }, switchTabVisualTabSwitcher: function(e, t) { d.getPages().size > 1 && (this.state.mainDialogType.key !== k.MAIN_SHOW_VISUAL_TAB_SWITCHER && (this.toggleTabSwitcher(), K(e, this.handleTabSwitcherActivation)), t ? this.refs.mainDialog.refs.visualTabSwitcher.selectForward() : this.refs.mainDialog.refs.visualTabSwitcher.selectBack()) }, onMaximized: function() { "maximized" !== this.state.currentWindowstate && (this.setState({ previousWindowstate: this.state.currentWindowstate }), this.setState({ currentWindowstate: "maximized" })) }, onFullscreened: function() { "fullscreen" !== this.state.currentWindowstate && (this.setState({ previousWindowstate: this.state.currentWindowstate }), this.setState({ currentWindowstate: "fullscreen" })) }, onInnerFullscreened: function() { "fullscreen inner" !== this.state.currentWindowstate && this.setState({ previousWindowstate: this.state.currentWindowstate, currentWindowstate: "fullscreen inner" }) }, onClosed: function() { "closed" !== this.state.currentWindowstate && (this.setState({ previousWindowstate: this.state.currentWindowstate }), this.setState({ currentWindowstate: "closed" })) }, onRestored: function() { var e = F.app.window.current(); if (e.isMaximized()) return void this.onMaximized(); if (!e.isMinimized()) return e.isFullscreen() ? void this.onFullscreened() : void("fullscreen" === this.state.currentWindowstate && "normal" !== this.state.previousWindowstate || "normal" !== this.state.currentWindowstate && (this.setState({ previousWindowstate: this.state.currentWindowstate }), this.setState({ currentWindowstate: "normal" }), M.set({ APPLICATION_STATE: "normal" }))) }, maybeFocusLastActiveElement: function() { if (this._lastActiveElement) if ("BODY" === this._lastActiveElement.tagName) { var e = h.getActiveWebView(), t = d.getActivePage(); "content" === B(t, t.get("url")) && e && e.focus() } else this._lastActiveElement.focus(), this._lastActiveElement = null }, onWindowFocus: function() { var e = this; this.state.noVisualBlur && this.setState({ noVisualBlur: !1 }), "mac" === this.state.currentOS && H.onFocus(), b.setActiveWindowId(window.vivaldiWindowId), this.setState({ hasFocus: !0 }, function() { return e.maybeFocusLastActiveElement() }) }, onWindowBlur: function() { this._lastActiveElement = document.activeElement, "mac" === this.state.currentOS && H.onBlur(), b.setActiveWindowId(-1), this.state.noVisualBlur || this.setState({ hasFocus: !1 }) }, noVisualBlur: function() { this.setState({ noVisualBlur: !0 }) }, onHTMLFullscreen: function(e) { e.enterFullscreen === !0 ? this.onInnerFullscreened() : e.enterFullscreen === !1 && "mac" === this.state.currentOS && this.onFullscreened() }, _onActiveWebViewStoreChanged: function() { var e = this, t = null; F.tabs.getZoom(function(t) { e.refs.statusToolbar.refs.zoomslider.forceZoomState(t) }); var n = h.getActiveWebView(); if (t !== n) { if (t && t.removeEventListener("fullscreen"), n && (n.addEventListener("fullscreen", this.onHTMLFullscreen), t = n), "fullscreen inner" === this.state.currentWindowstate) { var i = d.getPages().find(function(e) { return e.get("fullscreen") && !e.get("isRemoved") }); void 0 === i && this.toggleFullscreen() } "mac" === this.state.currentOS && (d.getActivePage().get("fullscreen") === !0 ? this.onInnerFullscreened() : "fullscreen inner" === this.state.currentWindowstate && this.onFullscreened()) } }, _onTabZoomChange: function(e) { e.tabId === d.getActivePage().get("id") && this.refs.statusToolbar.refs.zoomslider.forceZoomState(e.newZoomFactor) }, _onPanelStoreChanged: function() { this.setState({ panelOpen: N.getPanelButtonsVisible() }) }, onMessageReceived: function(e) { e && (e.action === X ? this.clearAppRegion() : e.action === $ && this.restoreAppRegion()) }, clearAppRegion: function() { this.setState({ preventAppRegionDrag: !0 }) }, restoreAppRegion: function() { this.setState({ preventAppRegionDrag: !1 }) }, handleDoubleClick: function() { if (F.app.window.current().isFullscreen()) this.toggleFullscreen(); else if (F.app.window.current().isMaximized()) F.app.window.current().restore(); else if ("mac" === this.state.currentOS && this.props.vivaldiSettings["vivaldi.apple_action_on_double_click"]) if ("Minimize" === this.props.vivaldiSettings["vivaldi.apple_action_on_double_click"]) F.app.window.current().minimize(); else { if ("None" === this.props.vivaldiSettings["vivaldi.apple_action_on_double_click"]) return !1; F.app.window.current().maximize() } else "linux" !== this.state.currentOS && F.app.window.current().maximize() }, closeConfirmOpenBookmarksDialog: function() { this.setState({ confirmOpenBookmarksOptions: null }) }, showConfirmOpenBookmarksDialog: function(e) { this.setState({ confirmOpenBookmarksOptions: e }) }, showClearBrowsingHistoryDialog: function(e) { this.setState({ clearBrowsingHistoryDialog: e }) }, closeClearBrowsingHistoryDialog: function(e) { this.setState({ clearBrowsingHistoryDialog: null }) }, closeImportData: function() { this.setState({ importData: null }) }, showImportData: function() { this.setState({ importData: this.refs.webpageview }) }, closeSaveSession: function() { this.setState({ saveSession: null }) }, showSaveSession: function() { this.setState({ saveSession: this.refs.webpageview }) }, closeOpenSession: function() { this.setState({ openSession: null }) }, showOpenSession: function() { this.setState({ openSession: this.refs.webpageview }) }, doActionZoomIn: function() { this.refs.statusToolbar.refs.zoomslider.zoomInStep() }, doActionZoomOut: function() { this.refs.statusToolbar.refs.zoomslider.zoomOutStep() }, doActionZoomHalf: function() { this.refs.statusToolbar.refs.zoomslider.zoomHalf() }, doActionZoomDouble: function() { this.refs.statusToolbar.refs.zoomslider.zoomDouble() }, doActionZoomReset: function() { var e = this; V.zoom.getDefaultZoom(function(t) { e.refs.statusToolbar.refs.zoomslider.setZoomLevel(t) }) }, onDefaultZoomChanged: function(e) { this.setState({ defaultPageZoomLevel: e }) }, panelToggle: function() { b.togglePanel() }, hasHorizontalMenu: function() { return Boolean("top" === this.props.vivaldiSettings.VIVALDI_MENU_POSITION && "mac" !== this.state.currentOS) }, getBrowserClasses: function() { var e, t = this.props.vivaldiSettings.TABCOLOR_BEHIND_TABS, n = (e = { "horizontal-menu": this.hasHorizontalMenu(), "tabs-at-edge": this.props.vivaldiSettings.SWITCH_TABS_AT_WINDOW_EDGE, "ui-transparent-tabs": this.props.vivaldiSettings.USE_TAB_TRANSPARENT_TABS, "biscuit-mode": this.props.vivaldiSettings.USE_BISCUIT_MODE, "color-behind-tabs-on": t, "color-behind-tabs-off": !t, "animation-on": this.props.vivaldiSettings.USE_ANIMATION, "animation-off": !this.props.vivaldiSettings.USE_ANIMATION, hasfocus: this.state.hasFocus, isblurred: !this.state.hasFocus, alt: this.props.vivaldiSettings.LINUX_ALT_CONTROLS, "minimal-ui": !this.props.vivaldiSettings.MINIMALISTIC_UI_SHOW, native: this.state.initialNativeView }, i(e, this.state.currentOS, !0), i(e, "win10", window.navigator.appVersion.indexOf("Windows NT 10") > 0), i(e, "private", this.state.incognito), i(e, this.props.themeBg, !0), i(e, this.props.highlightBg, !0), i(e, this.props.accentBg, !0), i(e, "no-app-dragging", this.state.preventAppRegionDrag), e); return n["address-" + (this.props.vivaldiSettings.SHOW_ADDRESS_BAR ? this.props.vivaldiSettings.ADDRESS_BAR_POSITION : "off")] = !0, n["tabs-" + (this.props.vivaldiSettings.SHOW_TAB_BAR ? this.props.vivaldiSettings.TAB_POSITION : "off")] = !0, n["stacks-" + this.props.vivaldiSettings.TAB_STACKING] = !0, n[this.state.currentWindowstate] = !0, n["bookmark-bar-" + (this.props.vivaldiSettings.BOOKMARK_BAR_VISIBLE ? this.props.vivaldiSettings.BOOKMARK_BAR_POSITION : "off")] = !0, W(n) }, getFooterClasses: function() { var e = { footer: !0, disabled: !this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER || "off" === this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER || "urls" === this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER }; return W(e) }, showStartupDialog: function() { var e = this; M.get("CHECK_DEFAULT_BROWSER_STARTUP", function(t) { t && V.importData.isVivaldiDefaultBrowser(function(t) { "false" === t && e.setState({ startupDlg: e.refs.webpageview }) }) }) }, closeStartupDialog: function(e) { this.setState({ startupDlg: null }) }, toggleTabBar: function() { M.set({ SHOW_TAB_BAR: !this.props.vivaldiSettings.SHOW_TAB_BAR }) }, toggleAddressBar: function() { M.set({ SHOW_ADDRESS_BAR: !this.props.vivaldiSettings.SHOW_ADDRESS_BAR }) }, handleToggleUI: function(e, t) { t ? (M.set({ SHOW_TAB_BAR: this.props.vivaldiSettings.MINIMALISTIC_UI_RECOVER_INFO.SHOW_TAB_BAR, SHOW_ADDRESS_BAR: this.props.vivaldiSettings.MINIMALISTIC_UI_RECOVER_INFO.SHOW_ADDRESS_BAR, SHOW_VIVALDI_FOOTER: this.props.vivaldiSettings.MINIMALISTIC_UI_RECOVER_INFO.SHOW_VIVALDI_FOOTER, BOOKMARK_BAR_VISIBLE: this.props.vivaldiSettings.MINIMALISTIC_UI_RECOVER_INFO.BOOKMARK_BAR_VISIBLE }), this.props.vivaldiSettings.MINIMALISTIC_UI_RECOVER_INFO.SHOW_PANEL !== N.getPanelButtonsVisible() && b.togglePanel()) : (M.set({ MINIMALISTIC_UI_RECOVER_INFO: { SHOW_TAB_BAR: this.props.vivaldiSettings.SHOW_TAB_BAR, SHOW_ADDRESS_BAR: this.props.vivaldiSettings.SHOW_ADDRESS_BAR, SHOW_VIVALDI_FOOTER: this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER, BOOKMARK_BAR_VISIBLE: this.props.vivaldiSettings.BOOKMARK_BAR_VISIBLE, SHOW_PANEL: N.getPanelButtonsVisible() } }), M.set({ SHOW_VIVALDI_FOOTER: "urls", SHOW_TAB_BAR: !1, SHOW_ADDRESS_BAR: !1, BOOKMARK_BAR_VISIBLE: !1 }), N.getPanelButtonsVisible() && b.togglePanel()) }, toggleUI: function() { M.set({ MINIMALISTIC_UI_SHOW: !this.props.vivaldiSettings.MINIMALISTIC_UI_SHOW }) }, render: function() { return r.createElement("div", { id: "browser", ref: "browser", lang: F.i18n.getUILanguage(), className: this.getBrowserClasses(), onContextMenu: this.onContextMenu, __source: { fileName: a, lineNumber: 983 } }, r.createElement(J, { __source: { fileName: a, lineNumber: 988 } }), r.createElement("div", { id: "header", onDoubleClick: this.handleDoubleClick, __source: { fileName: a, lineNumber: 989 } }, r.createElement(O, { currentWindowstate: this.state.currentWindowstate, currentOS: this.state.currentOS, tabPosition: this.props.vivaldiSettings.SHOW_TAB_BAR ? this.props.vivaldiSettings.TAB_POSITION : "none", onNoVisualBlur: this.noVisualBlur, __source: { fileName: a, lineNumber: 990 } }), this.hasHorizontalMenu() && r.createElement(w, { __source: { fileName: a, lineNumber: 997 } }), this.props.vivaldiSettings.SHOW_TAB_BAR && "top" === this.props.vivaldiSettings.TAB_POSITION && r.createElement(I, { ref: "tabbar", tabPosition: this.props.vivaldiSettings.TAB_POSITION, switchTabVisualTabSwitcher: this.switchTabVisualTabSwitcher, __source: { fileName: a, lineNumber: 1001 } }), !this.props.vivaldiSettings.SHOW_TAB_BAR && r.createElement(I, { ref: "tabbar", tabPosition: "none", switchTabVisualTabSwitcher: this.switchTabVisualTabSwitcher, __source: { fileName: a, lineNumber: 1008 } })), r.createElement("div", { id: "main", className: this.props.vivaldiSettings.PANEL_POSITION, __source: { fileName: a, lineNumber: 1015 } }, r.createElement(E, { incognito: this.state.incognito, currentOS: this.state.currentOS, searchEngines: this.props.vivaldiSettings.SEARCH_ENGINES, currentWindowstate: this.state.currentWindowstate, __source: { fileName: a, lineNumber: 1016 } }), this.props.vivaldiSettings.BOOKMARK_BAR_VISIBLE && r.createElement(l, { display: this.props.vivaldiSettings.BOOKMARK_BAR_DISPLAY, statusOff: "off" === this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER, keyAccess: this.props.vivaldiSettings.KEY_ACCESS, __source: { fileName: a, lineNumber: 1023 } }), r.createElement("div", { className: "inner", __source: { fileName: a, lineNumber: 1030 } }, this.state.startupDlg && r.createElement(T, { parentDiv: this.state.startupDlg, onClose: this.closeStartupDialog, __source: { fileName: a, lineNumber: 1033 } }), this.state.confirmOpenBookmarksOptions && r.createElement(f, { options: this.state.confirmOpenBookmarksOptions, onClose: this.closeConfirmOpenBookmarksDialog, ref: "confirmopenbookmarks", __source: { fileName: a, lineNumber: 1039 } }), this.state.clearBrowsingHistoryDialog && r.createElement(g, { options: this.state.clearBrowsingHistoryDialog, onClose: this.closeClearBrowsingHistoryDialog, ref: "clearbrowsinghistory", __source: { fileName: a, lineNumber: 1046 } }), this.state.importData && r.createElement(u, { dialogParentElement: this.state.importData, onClose: this.closeImportData, ref: "import", __source: { fileName: a, lineNumber: 1053 } }), this.state.saveSession && r.createElement(y, { dialogParentElement: this.state.saveSession, onClose: this.closeSaveSession, ref: "savesession", __source: { fileName: a, lineNumber: 1059 } }), this.state.openSession && r.createElement(C, { dialogParentElement: this.state.openSession, onClose: this.closeOpenSession, ref: "opensession", __source: { fileName: a, lineNumber: 1065 } }), r.createElement(v, { key: "panel", position: this.props.vivaldiSettings.PANEL_POSITION, __source: { fileName: a, lineNumber: 1070 } }), this.props.vivaldiSettings.SHOW_TAB_BAR && "left" === this.props.vivaldiSettings.TAB_POSITION && r.createElement(I, { ref: "tabbar", tabPosition: this.props.vivaldiSettings.TAB_POSITION, switchTabVisualTabSwitcher: this.switchTabVisualTabSwitcher, __source: { fileName: a, lineNumber: 1076 } }), r.createElement("div", { ref: "webpageview", id: "webview-container", __source: { fileName: a, lineNumber: 1082 } }, r.createElement(P, { hasFocus: this.state.hasFocus, pages: this.state.pages, cycleFocus: this.props.vivaldiSettings.FOCUS_CYCLE_TRAP, __source: { fileName: a, lineNumber: 1083 } }), "urls" === this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER && r.createElement(R, { ref: "statusinfo", __source: { fileName: a, lineNumber: 1089 } })), this.props.vivaldiSettings.SHOW_TAB_BAR && "right" === this.props.vivaldiSettings.TAB_POSITION && r.createElement(I, { ref: "tabbar", tabPosition: this.props.vivaldiSettings.TAB_POSITION, switchTabVisualTabSwitcher: this.switchTabVisualTabSwitcher, __source: { fileName: a, lineNumber: 1095 } })), this.props.vivaldiSettings.SHOW_TAB_BAR && "bottom" === this.props.vivaldiSettings.TAB_POSITION && r.createElement(I, { ref: "tabbar", tabPosition: this.props.vivaldiSettings.TAB_POSITION, switchTabVisualTabSwitcher: this.switchTabVisualTabSwitcher, __source: { fileName: a, lineNumber: 1104 } })), r.createElement("div", { id: "footer", className: this.getFooterClasses(), __source: { fileName: a, lineNumber: 1111 } }, "urls" !== this.props.vivaldiSettings.SHOW_VIVALDI_FOOTER && r.createElement(R, { ref: "statusinfo", __source: { fileName: a, lineNumber: 1115 } }), r.createElement(x, { __source: { fileName: a, lineNumber: 1118 } }), r.createElement("button", { className: "paneltogglefooter button-toolbar-small", title: U(this.state.panelOpen ? "Hide Panel" : "Show Panel"), tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onClick: this.panelToggle, dangerouslySetInnerHTML: { __html: n(1011) }, __source: { fileName: a, lineNumber: 1120 } }), r.createElement(D, { ref: "statusToolbar", keyAccess: this.props.vivaldiSettings.KEY_ACCESS, __source: { fileName: a, lineNumber: 1127 } })), this.state.mainDialogType && this.state.mainDialogType.key && r.createElement(S, { ref: "mainDialog", onClose: this.state.mainDialogType.func, dialog: this.state.mainDialogType.key, __source: { fileName: a, lineNumber: 1133 } }), r.createElement("svg", { version: "1.1", width: "0", height: "0", dangerouslySetInnerHTML: { __html: n(950) }, __source: { fileName: a, lineNumber: 1139 } })) } }); e.exports = Y(z(te, ee)) }, function(e, t, n) { // ========================= // Function_637 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/mainDialog.jsx", r = n(1), s = n(6), o = n(594), l = n(669), c = n(587), u = n(34), A = r.createClass({ displayName: "MainDialog", getInitialState: function() { return { shown: !0 } }, componentWillReceiveProps: function() { this.setState({ shown: !0 }) }, handleClick: function() { this.state.shown && this.props.onClose(function() { this.setState({ shown: !this.state.shown }) }.bind(this)) }, getLayeredComponentRootNode: function() { return this.props.parentDiv }, render: function() { if (this.state.shown) { var e = void 0; return e = this.props.dialog === s.MAIN_SHOW_VISUAL_TAB_SWITCHER ? "modal-tabswitcher" : this.props.dialog === s.MAIN_SHOW_QUICKCOMMANDS ? "qc-modal float top" : "float", r.createElement(u, { onRequestClose: this.handleClick, ignoreEscape: !0, viewMode: e, __source: { fileName: a, lineNumber: 44 } }, this.props.dialog === s.MAIN_SHOW_QUICKCOMMANDS && r.createElement(l, i({ key: s.MAIN_SHOW_QUICKCOMMANDS }, this.props, { __source: { fileName: a, lineNumber: 49 } })), this.props.dialog === s.MAIN_SHOW_KEYBOARDS_SHORTCUTS && r.createElement(o, i({ key: s.MAIN_SHOW_KEYBOARDS_SHORTCUTS }, this.props, { __source: { fileName: a, lineNumber: 52 } })), this.props.dialog === s.MAIN_SHOW_VISUAL_TAB_SWITCHER && r.createElement(c, i({ ref: "visualTabSwitcher", key: s.MAIN_SHOW_VISUAL_TAB_SWITCHER }, this.props, { __source: { fileName: a, lineNumber: 55 } }))) } return null } }); e.exports = A }, function(e, t, n) { // ========================= // Function_638 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/main/popup.jsx", r = n(1), s = n(4), o = n(370), l = n(378), c = n(59), u = n(25), A = n(5), d = n(204), h = d.noop, m = n(235), p = n(7), f = p.isEqual, g = ["LINUX_ALT_CONTROLS", "USE_ANIMATION", "USE_NATIVE_WINDOW_DECORATIONS"], _ = r.createClass({ displayName: "PopupWindow", getInitialState: function() { var e = s.app.window.current(); return { currentOS: c(), currentWindowstate: e.isMaximized() ? "maximized" : "normal", hasFocus: !0, initialNativeView: !1 } }, componentWillMount: function() { var e = s.app.window.current(); e.onMaximized.addListener(this.onMaximized), e.onFullscreened.addListener(this.onFullscreened), e.onRestored.addListener(this.onRestored), window.addEventListener("focus", this.onFocus), window.addEventListener("blur", this.onBlur), this.setState({ initialNativeView: this.props.vivaldiSettings.USE_NATIVE_WINDOW_DECORATIONS }) }, onMaximized: function() { this.setState({ currentWindowstate: "maximized" }) }, onFullscreened: function() { this.setState({ currentWindowstate: "fullscreen" }) }, onRestored: function() { var e = s.app.window.current(); this.setState({ currentWindowstate: e.isMaximized() ? "maximized" : "normal" }) }, onFocus: function(e) { this.setState({ hasFocus: !0 }) }, onBlur: function() { this.setState({ hasFocus: !1 }) }, _onWindowLoaded: function() { try { var e = s.app.window.current(); e ? e.show() : console.warn("Couldn't show hidden application window because missing current window") } finally { window.removeEventListener("load", this._onWindowLoaded) } }, componentDidMount: function() { var e = this; window.addEventListener("load", this._onWindowLoaded), Object.keys(this.props.theme).forEach(function(t) { document.body.style.setProperty("--" + t, e.props.theme[t]) }) }, componentDidUpdate: function(e, t) { var n = this; f(e.theme, this.props.theme) || Object.keys(this.props.theme).forEach(function(e) { var t = "--" + e, i = n.props.theme[e]; document.body.style.removeProperty(t), document.body.style.setProperty(t, i) }) }, render: function() { var e, t = this.props.vivaldiSettings, n = (e = { popup: !0, "animation-on": t.USE_ANIMATION, "animation-off": !t.USE_ANIMATION, hasfocus: this.state.hasFocus, isblurred: !this.state.hasFocus, native: this.state.initialNativeView, alt: t.LINUX_ALT_CONTROLS, win10: window.navigator.appVersion.indexOf("Windows NT 10") > 0 }, i(e, this.props.themeBg, !0), i(e, this.props.highlightBg, !0), i(e, this.props.accentBg, !0), e); return n[this.state.currentOS] = !0, n[this.state.currentWindowstate] = !0, n["is-settingspage"] = !0, r.createElement("div", { id: "browser", className: A(n), lang: s.i18n.getUILanguage(), onContextMenu: this.onContextMenu, __source: { fileName: a, lineNumber: 125 } }, r.createElement("div", { id: "header", onDoubleClick: this.handleDoubleClick, __source: { fileName: a, lineNumber: 129 } }, r.createElement(l, { currentWindowstate: this.state.currentWindowstate, currentOS: this.state.currentOS, tabPosition: "top", onNoVisualBlur: h, __source: { fileName: a, lineNumber: 131 } })), r.createElement("div", { className: "webpageview", __source: { fileName: a, lineNumber: 136 } }, r.createElement(o, { __source: { fileName: a, lineNumber: 137 } }))) } }); e.exports = m(u(_, g)) }, function(e, t, n) { // ========================= // Function_639 // ========================= "use strict"; function i(e, t) { return e.altKey === !0 && e.ctrlKey === !1 && e.shiftKey === !1 && e.metaKey === !1 && t === !0 } function a(e, t) { return e.altKey === !1 && e.ctrlKey === !1 && e.shiftKey === !1 && e.metaKey === !1 && t === !0 } function r(e, t) { return e.altKey === !1 && e.shiftKey === !1 && ("MacIntel" === navigator.platform ? e.metaKey === !0 && e.ctrlKey === !1 : e.metaKey === !1 && e.ctrlKey) && t } function s() { function e(e, t) { var n = 2 * Math.PI / 4, i = Math.atan2(t, e) + n / 2; i < 0 && (i += 2 * Math.PI); var a = Math.floor(i / (2 * Math.PI) * 100); R.push(P[a]) } function t() { d.get("MOUSE_GESTURES_ENABLED", function(e) { E = "boolean" == typeof e && e }.bind(this)); var e = { preferenceKey: "mousegestures_enabled", preferenceValue: { boolean: E }, preferenceType: "boolean" }; p.settings.setPreference(e) } function n() { d.get("MOUSE_WHEEL_TAB_SWITCHING", function(e) { "boolean" == typeof e && (S = e) }.bind(this)) } function s() { d.get("MOUSE_WHEEL_PAGE_ZOOM", function(e) { "boolean" == typeof e && (T = e) }.bind(this)) } function u() { d.get("ALT_GESTURES_ENABLED", function(e) { "boolean" == typeof e && (y = e) }.bind(this)) } function _(e) { "mousegestures_enabled" === e.preferenceKey && d.set({ MOUSE_GESTURES_ENABLED: e.preferenceValue.boolean }) } function v() { p.settings.getPreference("mousegestures_enabled", function(e) { E = e.preferenceValue.boolean }) } function b() { p.settings.getPreference("vivaldi.swipe_scroll_direction", function(e) { C = e.preferenceValue.boolean }) } var N, E = !1, S = !1, T = !1, y = !1, C = Boolean("MacIntel" === navigator.platform), I = !1, O = !1, w = [], D = !1, k = !1, M = !1, L = 5, P = [], R = [], x = 2 * Math.PI / 100; this.init = function() { v(), "MacIntel" === navigator.platform && b(), n(), s(), u(); var e, t = 2 * Math.PI / 4; for (e = -t / 2; e <= 2 * Math.PI - t / 2; e += x) N = 2 * Math.floor((e + t / 2) / t), P.push(N) }, this.attachEvents = function() { document.addEventListener("keydown", this.onMouseDown, !0), document.addEventListener("keyup", this.onMouseUp, !0), document.addEventListener("mousedown", this.onMouseDown, !0), document.addEventListener("mouseup", this.onMouseUp, !0), document.addEventListener("mousemove", this.onMouseMove, !0), document.addEventListener("wheel", this.onMouseWheel, !0), document.addEventListener("DOMMouseScroll", this.onMouseWheel, !0), document.addEventListener("contextmenu", this.onContextMenu, !0), d.addListener("MOUSE_GESTURES_ENABLED", t), d.addListener("ALT_GESTURES_ENABLED", u), d.addListener("MOUSE_WHEEL_TAB_SWITCHING", n), d.addListener("MOUSE_WHEEL_PAGE_ZOOM", s), p.settings.onChanged.addListener(_) }, this.detachEvents = function() { document.removeEventListener("keydown", this.onMouseDown), document.removeEventListener("keyup", this.onMouseUp), document.removeEventListener("mousedown", this.onMouseDown), document.removeEventListener("mouseup", this.onMouseUp), document.removeEventListener("mousemove", this.onMouseMove), document.removeEventListener("wheel", this.onMouseWheel), document.removeEventListener("DOMMouseScroll", this.onMouseWheel), document.removeEventListener("contextmenu", this.onContextMenu), d.removeListener("MOUSE_GESTURES_ENABLED", t), d.removeListener("ALT_GESTURES_ENABLED", u), d.removeListener("MOUSE_WHEEL_TAB_SWITCHING", n), d.removeListener("MOUSE_WHEEL_PAGE_ZOOM", s), p.settings.onChanged.removeListener(_) }, this.init(), this.onContextMenu = function(e) { (I || M) && (e.preventDefault(), I = !1, M = !1) }, this.onMouseDown = function(e) { if (E && !O && (2 === e.button || i(e, y))) { M = !1, w.url = l.getTargetUrl(); var t = l.getActivePage(); t && t.get("url") && (w.source_url = t.get("url")), "mousedown" === e.type ? (D = e.x, k = e.y) : D = k = !1, O = !0 } }, this.onMouseUp = function(e) { if ((E || M) && (2 === e.button || a(e, y))) { if (O = !1, M) 2 === e.button && e.preventDefault(), R = [], D = k = !1, M = !1; else if (R.length > 0) { a(e, y) || "win" !== m() || (e.preventDefault(), e.stopPropagation()); var t, n = o.getCommandsGestures(), i = R.map(function(e, t, n) { if (e !== n[t - 1] && e === n[t + 1]) return e }).filter(function(e) { return void 0 !== e }).toString().split(",").join(""); for (var r in n) n.hasOwnProperty(r) && r === i && (t = r); t && (n[t].function(null, w), e.preventDefault(), I = !0, c.setStatus(h("Gesture: $1", [n[t].label]), 2e3), "WEBVIEW" === e.target.tagName && e.target.resetGestureState()) } w = [], R = [], D = k = !1 } }, this.onMouseMove = function(t) { if (E && O === !0) { if (i(t, !0) && t.preventDefault(), "win" !== m() && 2 !== t.button && t.altKey !== !0) return O = !1, w = [], R = [], void(D = k = !1); if (D === !1) return D = t.x, void(k = t.y); var n = t.x - D, a = t.y - k, r = n * n + a * a, s = L * L; r > s && (D = t.x, k = t.y, e(n, a)) } }; var B = .2, U = 5, F = !1, H = !1, V = !1; this.delayTimeout = void 0, this.onMouseWheel = function(e) { var t = r(e, T); if (H === !1 ? (H = !0, F = t) : "inertial" !== g ? (H = !1, t || (F = !1)) : t || (F = !1), F && T) { var n = l.getActivePage(); if (!A.isInternalPage(n)) { var a; a = e.wheelDelta < 0 ? -.1 : e.wheelDelta > 0 ? .1 : 0, V || "inertial" === g || (V = !0, f.tabs.getZoom(function(e) { var t = Math.round(10 * e) / 10 + a; !t < B && f.tabs.setZoom(Math.min(Math.max(Math.round(10 * t) / 10, B), U)) }), window.clearTimeout(this.delayTimeout), this.delayTimeout = setTimeout(function() { V = !1 }, 100)), e.preventDefault() } } else { if (!S) return null; var s = !1; for (var c in e.path) if (e.path.hasOwnProperty(c) && "tabs-container" === e.path[c].id) { var u = e.path[c].className; if (u.indexOf("overflow") === -1) { s = !0; break } } if (2 === e.buttons || i(e, !0) || s) { if (e.preventDefault(), "inertial" === g) return; var d, h, m = o.getCommands(); if (e.wheelDelta > 0) h = 1; else { if (!(e.wheelDelta < 0)) return; h = -1 } var p = C ? "COMMAND_TAB_SWITCH_BACK_SETTING" : "COMMAND_TAB_SWITCH_FORWARD_SETTING", _ = C ? "COMMAND_TAB_SWITCH_BACK_ORDER" : "COMMAND_TAB_SWITCH_FORWARD_ORDER", v = C ? "COMMAND_TAB_SWITCH_FORWARD_SETTING" : "COMMAND_TAB_SWITCH_BACK_SETTING", b = C ? "COMMAND_TAB_SWITCH_FORWARD_ORDER" : "COMMAND_TAB_SWITCH_BACK_ORDER"; "trackpad" === g ? V || (V = !0, d = h > 0 ? 2 === e.buttons || e.altKey ? p : _ : 2 === e.buttons || e.altKey ? v : b, window.clearTimeout(this.delayTimeout), this.delayTimeout = setTimeout(function() { V = !1 }, 300)) : d = h > 0 ? 2 === e.buttons || e.altKey ? p : _ : 2 === e.buttons || e.altKey ? v : b; for (var N in m) m.hasOwnProperty(N) && m[N].name === d && m[N].action(null, e); M = !0 } } } } var o = n(52), l = n(17), c = n(47), u = n(20), A = u.urls, d = n(3), h = n(2), m = n(59), p = n(10), f = n(4), g = ""; p.utilities.onScroll.addListener(function(e) { 1 === e ? g = "mouse" : 2 === e ? g = "trackpad" : 3 === e && (g = "inertial") }), e.exports = s }, function(e, t, n) { // ========================= // Function_640 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/notes/notesAttachment.jsx", a = n(1), r = n(40), s = n(2), o = a.createClass({ displayName: "AttachmentItem", onRemoveScreenshot: function() { this.props.removeScreenshot(this.props.index) }, onOpenScreenshot: function(e) { this.props.openScreenshot(this.props.index, r.getOpenOptionsFromEvent(e)) }, render: function() { return a.createElement("div", { className: "screenshot", style: { backgroundImage: "url(" + this.props.item.content + ")" }, __source: { fileName: i, lineNumber: 18 } }, a.createElement("button", { className: "screenshot-remove", title: s("Remove screenshot"), onClick: this.onRemoveScreenshot, tabIndex: "-1", __source: { fileName: i, lineNumber: 20 } }), a.createElement("button", { className: "screenshot-view", title: s("View screenshot"), onClick: this.onOpenScreenshot, __source: { fileName: i, lineNumber: 24 } })) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_641 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/notes/notesAttachmentContainer.jsx", a = n(1), r = n(640), s = n(15), o = a.createClass({ displayName: "AttachmentContainer", onOpenScreenshot: function(e, t) { s.openURL(this.props.note.attachments[e].content, t) }, onRemoveScreenshot: function(e) { this.props.onRemoveAttachment(this.props.note.id, e) }, render: function() { if (!this.props.note) return null; var e = 0, t = this.props.note.attachments.map(function(t) { return a.createElement(r, { key: e, item: t, openScreenshot: this.onOpenScreenshot, removeScreenshot: this.onRemoveScreenshot, index: e++, __source: { fileName: i, lineNumber: 23 } }) }.bind(this)); return a.createElement("div", { className: "screenshots-wrapper", __source: { fileName: i, lineNumber: 31 } }, t) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_642 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/notes/notesPanel.jsx", a = n(1), r = n(11), s = n(641), o = n(167), l = n(247), c = n(643), u = n(15), A = n(58), d = n(134), h = n(136), m = n(65), p = n(97), f = n(3), g = n(13), _ = n(2), v = n(113), b = n(26), N = n(394), E = n(7), S = n(21), T = n(46), y = n(10), C = 300, I = 238, O = 600, w = "NotesPanel", D = a.createClass({ displayName: "NotesPanel", mixins: [g], vivaldiSettingsKeys: ["NOTES_EDITOR_HEIGHT", "KEY_ACCESS"], cancelableId: void 0, getInitialState: function() { return { filter: "", selectedNote: null, selectedFolder: null, folderName: "", contentValue: "", urlValue: "", editUrl: void 0, attachmentTools: !1, hasNotes: l.hasNotes() } }, componentWillMount: function() { l.addChangeListener(this._onStoreChange), A.addChangeListener(this._onPanelStoreChange), p.addChangeListener(this._onUrlbarStoreChanged), y.notes.onCreated.addListener(this._onNodeCreated), y.notes.onChanged.addListener(this._onNodeChanged) }, componentDidUpdate: function(e, t) { !e.open && this.props.open && this.refs.notesTree && (r.findDOMNode(this.refs.notesTree).focus(), this.onItemSelected(this.refs.notesTree.getSelectedItem())) }, componentWillUnmount: function() { l.removeChangeListener(this._onStoreChange), A.removeChangeListener(this._onPanelStoreChange), p.removeChangeListener(this._onUrlbarStoreChanged), y.notes.onCreated.removeListener(this._onNodeCreated), y.notes.onChanged.removeListener(this._onNodeChanged) }, shouldComponentUpdate: function(e, t) { return S(this, e, t) }, _onStoreChange: function() { var e = l.hasNotes(); e === !1 && this.state.hasNotes === !0 ? this.setState(this.getInitialState()) : this.setState({ hasNotes: e }) }, _onPanelStoreChange: function(e) { this.props.open && "setFocus" === e && !v(r.findDOMNode(this)) && r.findDOMNode(this.refs.notesTree).focus() }, _onUrlbarStoreChanged: function() { this.setState(p.getUrlfieldStateFromId(w)) }, _onNodeCreated: function(e) { this.cancelableId = e, A.getIsActiveWindow() && (this.refs.notesTree.selectById(e), this._focusEmptyContentField()) }, _onNodeChanged: function(e) { var t = this.state.selectedNote || this.state.selectedFolder; t && e === t.id && this._setSelectedStateByNode(l.getNodeById(e), function() {}) }, onItemSelected: function(e) { var t = this; this._selectionWillChange(e, function() { if (e) t.cancelableId !== e.id && (t.cancelableId = void 0), t._setSelectedStateByNode(e, function() { t.cancelableId && t._focusEmptyContentField() }); else { var n = t.getInitialState(); n.filter = t.state.filter, t.setState(n) } }) }, _selectionWillChange: function(e, t) { void 0 !== this.state.editUrl ? (this.handleUrlBlur(), this.setState({ editUrl: void 0 }, t)) : t() }, unSelect: function() { this.refs.notesTree.unSelectAll(), this.setState({ selectedNote: null, selectedFolder: null, folderName: "", urlValue: "" }) }, _setSelectedStateByNode: function(e, t) { var n = this.isFolder(e); this.setState({ selectedNote: n ? null : e, selectedFolder: n ? e : null, folderName: n ? e.title : "", contentValue: n ? "" : e.content, urlValue: n || void 0 === e.url ? "" : e.url }, t) }, _focusEmptyContentField: function() { "" === this.state.contentValue && this.state.selectedNote ? this.refs.refContent.focus() : "" === this.state.folderName && this.state.selectedFolder && this.refs.refFolderName.focus() }, isFolder: function(e) { return E.has(e, "children") }, onAddNote: function() { this.refs.notesTree.onAdd(!1) }, onAddFolder: function() { this.refs.notesTree.onAdd(!0) }, onDeleteNote: function() { this.refs.notesTree.onDelete() }, onTakeScreenshot: function() { this.state.selectedNote && o.addScreenshot(this.state.selectedNote.id), this.hideAttachmentTools() }, onTakeAreaCapture: function() { this.state.selectedNote && o.addAreaCapture(this.state.selectedNote.id), this.hideAttachmentTools() }, onAddImageFile: function(e) { this.state.selectedNote && o.addImageFile(this.state.selectedNote.id, e.target.files[0]), this.refs.refFile.value = "", this.hideAttachmentTools() }, onOpenUrl: function() { this.state.urlValue && u.openURL(T.fixLink(this.state.urlValue)) }, handleFolderChange: function(e) { this.cancelableId = void 0; var t = e.target.value; this.setState({ folderName: t }), y.notes.update(this.state.selectedFolder.id.toString(), { title: t }) }, handleContentChange: function(e) { this.cancelableId = void 0; var t = e.target.value; if (this.setState({ contentValue: t }), this.state.hasNotes === !1) y.notes.create({ type: "note", content: t }); else if (this.state.selectedNote) { var n = { content: t }; y.notes.update(this.state.selectedNote.id.toString(), n) } }, handleUrlBlur: function() { if (this.cancelableId = void 0, this.state.selectedNote && void 0 !== this.state.editUrl) { var e = this.state.editUrl.trim(); e.length > 0 && (e = T.ensureURLProtocol(e)); var t = { url: e }; y.notes.update(this.state.selectedNote.id, t, function() { m.setUrlfieldState(w, { editUrl: void 0 }) }) } }, handleContentBlur: function() { this.cancelableId = void 0 }, handleFilterChange: function(e) { var t = e.target.value; this.setState({ filter: t }) }, onKeyDown: function(e) { if ("Escape" === e.key) if (e.target === this.refs.refSearch) "" === this.state.filter ? r.findDOMNode(this.refs.notesTree).focus() : this.setState({ filter: "" }); else { var t = this.state.selectedFolder || this.state.selectedNote; t && this.cancelableId === t.id && l.isNodeEmpty(t.id) && (this.cancelableId = void 0, this.onDeleteNote()), e.target !== this.refs.refContent && e.target !== this.refs.refFolderName && e.target !== r.findDOMNode(this.refs.noteUrl) || r.findDOMNode(this.refs.notesTree).focus() } else "Enter" === e.key && (e.target === r.findDOMNode(this.refs.noteUrl) ? (e.stopPropagation(), e.preventDefault(), r.findDOMNode(this.refs.notesTree).focus()) : this.state.selectedFolder && r.findDOMNode(this.refs.notesTree).focus()) }, onSlidebarPosition: function(e, t) { var n = r.findDOMNode(this.refs.noteEditor), i = n.getBoundingClientRect(), a = i.bottom - t; a > O ? a = O : a < I && (a = I), f.set({ NOTES_EDITOR_HEIGHT: a }) }, resizeToDefault: function() { f.set({ NOTES_EDITOR_HEIGHT: C }) }, isEditable: function() { return this.state.selectedNote || this.state.selectedFolder && !this.state.selectedFolder.trash }, showAttachmentTools: function() { this.setState({ attachmentTools: !0 }) }, hideAttachmentTools: function() { this.setState({ attachmentTools: !1 }) }, onContextMenu: function(e) { this.refs.notesTree.unSelectAll(), b(this.refs.notesTree.getRootContextMenuItems)(e) }, render: function() { if (!this.props.open) return null; var e = this.state.selectedNote ? N.dateTimeLong(this.state.selectedNote.dateAdded) : this.state.selectedFolder ? N.dateTimeLong(this.state.selectedFolder.dateAdded) : ""; return a.createElement("div", { className: "panel", ref: "notesPanelElement", id: "notes-panel", onKeyDown: this.onKeyDown, __source: { fileName: i, lineNumber: 365 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 367 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 368 } }, _("Notes")), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 370 } }, a.createElement("input", { ref: "refSearch", type: "search", className: "notesearch", placeholder: _("Search..."), value: this.state.filter, title: _("URL:\nCONTENT:\nlimits the search to urls or content"), onChange: this.handleFilterChange, __source: { fileName: i, lineNumber: 371 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 379 } }, a.createElement("button", { title: _("New Note"), className: "button-toolbar note-new", tabIndex: this.state.KEY_ACCESS, onClick: this.onAddNote, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 380 } }), a.createElement("button", { title: _("New Folder"), className: "button-toolbar note-folder", tabIndex: this.state.KEY_ACCESS, onClick: this.onAddFolder, dangerouslySetInnerHTML: { __html: n(216) }, __source: { fileName: i, lineNumber: 386 } }), a.createElement("button", { title: _("other", "Delete"), className: "button-toolbar note-delete", tabIndex: this.state.KEY_ACCESS, onClick: this.onDeleteNote, dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 392 } })))), a.createElement("section", { onClick: this.unSelect, onContextMenu: this.state.hasNotes === !0 && this.onContextMenu, __source: { fileName: i, lineNumber: 402 } }, this.state.hasNotes === !1 && a.createElement("div", { className: "no-notes", __source: { fileName: i, lineNumber: 406 } }, a.createElement("div", { className: "happy-note", onClick: this.onAddNote, __source: { fileName: i, lineNumber: 407 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(960) }, __source: { fileName: i, lineNumber: 408 } }), a.createElement("h1", { __source: { fileName: i, lineNumber: 410 } }, _("Write Your First Note")), a.createElement("p", { __source: { fileName: i, lineNumber: 411 } }, _("Add a new note to begin, or select text on any webpage\n and create note from contextual menu.")))), a.createElement(c, { ref: "notesTree", selectedFolderId: this.state.selectedFolder && this.state.selectedFolder.id, filter: this.state.filter, onDelete: this.onDeleteNote, onItemSelected: this.onItemSelected, __source: { fileName: i, lineNumber: 415 } })), a.createElement("div", { className: "notes-editor", ref: "noteEditor", style: { height: this.state.NOTES_EDITOR_HEIGHT || C }, __source: { fileName: i, lineNumber: 424 } }, a.createElement(d, { onSlidebarPosition: this.onSlidebarPosition, onDoubleClick: this.resizeToDefault, position: "bottom", __source: { fileName: i, lineNumber: 427 } }), a.createElement("div", { className: "data notes-cardwrapper cardview", __source: { fileName: i, lineNumber: 431 } }, a.createElement("div", { className: "add-attachments-wrapper", __source: { fileName: i, lineNumber: 432 } }, a.createElement("button", { className: "notes-add-attachment", onClick: this.onTakeScreenshot, title: _("Add screenshot"), dangerouslySetInnerHTML: { __html: n(977) }, __source: { fileName: i, lineNumber: 433 } }), a.createElement("button", { className: "notes-add-area-capture", onClick: this.onTakeAreaCapture, title: _("Add capture of selected area"), dangerouslySetInnerHTML: { __html: n(978) }, __source: { fileName: i, lineNumber: 440 } }), a.createElement("input", { type: "file", ref: "refFile", id: "notesFileAttachment", accept: "image/*", disabled: !this.state.selectedNote, onChange: this.onAddImageFile, __source: { fileName: i, lineNumber: 447 } }), a.createElement("label", { htmlFor: "notesFileAttachment", className: "notes-add-attachment", title: _("Attach new file..."), tabIndex: this.state.KEY_ACCESS, dangerouslySetInnerHTML: { __html: n(946) }, __source: { fileName: i, lineNumber: 454 } })), this.state.selectedNote && a.createElement("textarea", { ref: "refContent", className: "note editor", placeholder: _("Note"), title: _("Write a note"), value: this.state.contentValue, onBlur: this.handleContentBlur, onChange: this.handleContentChange, __source: { fileName: i, lineNumber: 463 } }), this.state.selectedFolder && a.createElement("div", { className: "note", __source: { fileName: i, lineNumber: 474 } }, a.createElement("input", { ref: "refFolderName", type: "text", placeholder: _("Folder"), title: _("Edit folder name"), value: this.state.folderName, onBlur: this.handleContentBlur, onChange: this.handleFolderChange, __source: { fileName: i, lineNumber: 475 } })), !this.state.selectedNote && !this.state.selectedFolder && a.createElement("div", { className: "note shim", onClick: this.onAddNote, __source: { fileName: i, lineNumber: 487 } }, _("Add a new note")), a.createElement("div", { className: "attachments-wrapper", __source: { fileName: i, lineNumber: 492 } }, a.createElement(s, { ref: "attachmentcontainer", note: this.state.selectedNote, onRemoveAttachment: o.removeAttachment, __source: { fileName: i, lineNumber: 493 } })), a.createElement("div", { className: "urlwrapper", __source: { fileName: i, lineNumber: 498 } }, a.createElement("button", { className: "meta-icon url", title: _("Go to Address"), disabled: !this.state.selectedNote, tabIndex: this.state.KEY_ACCESS, onClick: this.onOpenUrl, dangerouslySetInnerHTML: { __html: n(947) }, __source: { fileName: i, lineNumber: 499 } }), a.createElement(h, { ref: "noteUrl", title: _("Enter webpage address"), className: "cardview address", disabled: !this.state.selectedNote, onBlur: this.handleUrlBlur, pageId: w, displayUrl: this.state.urlValue, editUrl: this.state.editUrl, autocompletionEnabled: !0, triggerTypedHistory: !1, selectionStart: this.state.selectionStart, selectionEnd: this.state.selectionEnd, placeholder: this.state.selectedNote ? _("Address") : null, __source: { fileName: i, lineNumber: 506 } })), a.createElement("div", { className: "dateCreated", __source: { fileName: i, lineNumber: 520 } }, a.createElement("div", { className: "meta-icon date fieldset", dangerouslySetInnerHTML: { __html: n(458) }, __source: { fileName: i, lineNumber: 521 } }), a.createElement("span", { title: _("Date created"), __source: { fileName: i, lineNumber: 524 } }, e))))) } }); e.exports = D }, function(e, t, n) { // ========================= // Function_643 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/notes/notesTree.jsx", a = n(1), r = n(40), s = n(234), o = n(167), l = n(247), c = n(15), u = n(9), A = n(47), d = n(13), h = n(109), m = n(30), p = n(10), f = n(46), g = f.fixLink, _ = a.createClass({ displayName: "NotesTree", mixins: [u, d], initalSelectionDone: !1, vivaldiSettingsKeys: ["SHOW_VIVALDI_FOOTER"], getInitialState: function() { return { nodes: l.getRootNode().children } }, componentWillMount: function() { l.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { l.removeChangeListener(this._onStoreChange) }, componentDidUpdate: function() { this.initalSelectionDone === !1 && (this.initalSelectionDone = !0, this.props.onItemSelected(this.getSelectedItem())) }, componentWillReceiveProps: function(e) { var t = this; this.props.filter !== e.filter && ! function() { var n = e.filter.length, i = t.props.filter.length; t.onFilterChange(e.filter, function() { n > 0 ? t.expandAll() : i > 0 && 0 === n && t.collapseAll() }) }() }, onDelete: function() { this.refs.treeList.onDelete() }, delete: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []; return Promise.all(e.map(function(e) { return new Promise(function(t) { p.notes.get(e, function(n) { n && n.length > 0 && !n[0].trash && p.notes.remove(e), t() }) }) })) }, isFolder: function(e) { return !!e && !!e.children }, isTrash: function(e) { return e.trash }, isEditable: function() { return !1 }, onItemDoubleClick: function(e) { var t = this, n = r.getOpenOptionsFromEvent(e), i = this.refs.treeList.SelectionMixinGetAllSelected().map(function(e) { return e.id }); p.notes.get(i, function(e) { var i = e.filter(function(e) { return !!e.url }).map(function(e) { return g(e.url) }); t._openUrls(i, n) }) }, onNodesActivated: function(e, t) { var n = []; t.forEach(function(e) { var t = l.getNodeById(e.id); t && t.url && n.push(g(t.url)) }), this._openUrls(n, {}) }, _openUrls: function(e, t) { t.inNewWindow ? c.openWindow(e, { focused: !t.inBackground }) : ! function() { var n = e.length > 0 ? e[e.length - 1] : void 0; e.forEach(function(e) { if (t.inCurrent === !1) if (t.inBackground === !0) c.openURL(e, t); else { var i = t; i.inBackground = e !== n, c.openURL(e, i) } else c.openURL(e, t), t.inCurrent = !1 }) }() }, onFilterChange: function(e, t) { var n = this, i = void 0; if (e.length > 0) { if ("tree" !== this.refs.treeList.getSearchStyle()) return void p.notes.search(e, function(e) { n.setState({ nodes: e }, t) }); i = l.getFilteredTree(e) } else i = l.getRootNode().children; this.setState({ nodes: i }, t) }, _onStoreChange: function() { this.onFilterChange(this.props.filter) }, hasChildren: function(e) { return !!e.children && e.children.length > 0 }, handleExpandClick: function() { this.refs.treeList.toggleSelectedExpansion() }, unSelectAll: function() { this.refs.treeList.unSelectAll() }, getSelectedItem: function() { return this.refs.treeList.getSelectedItem() }, expandNote: function(e) { e.isExpanded || this.refs.treeList.toggleSelectedExpansion() }, expandAll: function() { this.refs.treeList.expandAll() }, collapseAll: function() { this.refs.treeList.collapseAll() }, setSearchStyle: function(e) { this.refs.treeList.setSearchStyle(e) }, onSearchStyleChanged: function(e) { var t = this; this.props.filter && this.onFilterChange(this.props.filter, function() { "tree" === e && t.expandAll() }) }, isValidForClipboard: function(e) { return !e.trash }, isValidDragSource: function(e) { return !e.trash }, isValidAddTarget: function(e) { return !this.isTrashed(e) }, isTrashed: function(e) { return !!e && (!!e.trash || !!e.parentId && this.isTrashed(this.refs.treeList.findTreeItem(e.parentId))) }, onAdd: function(e) { this.refs.treeList.onAdd(e) }, selectById: function(e) { this.refs.treeList.selectById(e) }, getTargetSpec: function(e, t) { var n = { index: 0, parentId: void 0 }; if (this.isTrash(e) && "on" !== t) { var i = l.getLastTopNode(); i ? (n.parentId = i.parentId, n.index = i.index + 1) : n.parentId = l.getRootNode().id } else this.isFolder(e) && "on" === t ? n.parentId = e.id : (n.parentId = e.parentId, n.index = e.index + ("below" === t ? 1 : 0)); return n }, onCreate: function(e) { var t = this; return e = Array.isArray(e) ? e : [e], Promise.all(e.map(function(e) { return new Promise(function(n) { p.notes.create({ parentId: e.parentId.toString(), attachments: e.attachments, content: e.content, title: e.title, index: e.index, type: t.isFolder(e) ? "folder" : "note" }, function(i) { if (t.hasChildren(e)) { var a = !0, r = !1, s = void 0; try { for (var o, l = e.children[Symbol.iterator](); !(a = (o = l.next()).done); a = !0) { var c = o.value; c.parentId = i.id } } catch (e) { r = !0, s = e } finally { try { !a && l.return && l.return() } finally { if (r) throw s } } t.onCreate(e.children).then(function() { n(i) }) } else n(i) }) }) })) }, onMove: function(e, t) { return e = Array.isArray(e) ? e : [e], e = e.filter(function(e) { return !e.trash }), Promise.all(e.map(function(e) { return new Promise(function(n) { p.notes.move(e.id.toString(), t, function() { n(e) }), (t.parentId !== e.parentId || t.parentId === e.parentId && t.index < e.index) && t.index++ }) })) }, getContextMenuItems: function(e) { return e.trash ? [Object.assign({ handler: o.emptyTrash }, m("Empty Trash")), { name: "---" }] : [] }, getRootContextMenuItems: function() { return [Object.assign({ handler: this.onAdd.bind(this, !1) }, m("New Note")), Object.assign({ handler: this.onAdd.bind(this, !0) }, m("New Folder")), { name: "---" }, Object.assign({ handler: this.refs.treeList.collapseAll }, m("Collapse All Folders")), Object.assign({ handler: this.refs.treeList.expandAll }, m("Expand All Folders")), { name: "---" }, Object.assign({ items: [Object.assign({ type: "checkbox", checked: "flat" === this.refs.treeList.getSearchStyle(), handler: this.setSearchStyle.bind(this, "flat") }, m("Flat Search")), Object.assign({ type: "checkbox", checked: "tree" === this.refs.treeList.getSearchStyle(), handler: this.setSearchStyle.bind(this, "tree") }, m("Tree Search"))] }, m("Settings"))] }, getContextMenuItemProps: function(e) { return { showEdit: !1, showRename: !e.trash, showNewItem: !e.trash, showNewFolder: !e.trash, showCut: !e.trash, showCopy: !e.trash, showPaste: !e.trash, showDelete: !e.trash, showExpandCollapse: !0, showSettings: !0 } }, getContextMenuNewItemString: function() { return m("New Note") }, supportDropForNode: function(e, t) { var n = l.getMimeType(); return e.dataTransfer.types.findIndex(function(e) { return e === n }) !== -1 }, getDragDataFromNode: function(e, t) { return "text" === e || "title" === e ? this.isFolder(t) ? t.title : t.content : "text/uri-list" === e ? this.isFolder(t) ? "" : [t.url].join("\r\n") : "" }, saveTitle: function(e, t) { p.notes.update(e, { title: t }) }, handleMouseEnter: function(e) { A.setStatus(e) }, handleMouseLeave: function() { A.clearStatus() }, renderItemContent: function(e) { var t = e.node, r = 16 * (t.level + 1) + "px", o = 16 * t.level + "px", l = a.createElement("label", { key: "0", onMouseEnter: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseEnter.bind(this, t.url), onMouseLeave: "off" === this.state.SHOW_VIVALDI_FOOTER ? null : this.handleMouseLeave, __source: { fileName: i, lineNumber: 427 } }, this.isFolder(t) && this.hasChildren(t) && a.createElement("span", { className: "expand-icon", style: { marginLeft: o }, onClick: this.handleExpandClick, dangerouslySetInnerHTML: { __html: n(311) }, __source: { fileName: i, lineNumber: 433 } }), this.isFolder(t) && a.createElement(s, { trash: this.isTrash(t), open: t.isExpanded, selected: this.props.selectedFolderId === t.id, leftMargin: this.hasChildren(t) ? 0 : r, __source: { fileName: i, lineNumber: 441 } }), !this.isFolder(t) && !t.url && a.createElement("span", { style: { marginLeft: r }, className: "tree-icon", selected: this.props.selectedFolderId === t.id, dangerouslySetInnerHTML: { __html: n(976) }, __source: { fileName: i, lineNumber: 449 } }), !this.isFolder(t) && !!t.url && a.createElement("span", { style: { marginLeft: r }, className: "tree-icon", dangerouslySetInnerHTML: { __html: n(975) }, __source: { fileName: i, lineNumber: 457 } }), void 0 !== e.inlineEditText && a.createElement("input", { ref: "input", type: "text", value: e.inlineEditText, onChange: e.onChange, onFocus: e.onFocus, onBlur: e.onBlur, autoFocus: !0, __source: { fileName: i, lineNumber: 464 } }), void 0 === e.inlineEditText && a.createElement("span", { __source: { fileName: i, lineNumber: 475 } }, "" !== t.title ? t.title : t.content), this.hasChildren(t) && a.createElement("span", { className: "folder-item-count", __source: { fileName: i, lineNumber: 481 } }, t.children.length)); return [l] }, render: function() { return a.createElement(h, { ref: "treeList", nodes: this.state.nodes, onSelect: this.props.onItemSelected, onItemDoubleClick: this.onItemDoubleClick, onItemsActivated: this.onNodesActivated, onCreate: this.onCreate, onSearchStyleChanged: this.onSearchStyleChanged, delete: this.delete, onMove: this.onMove, supportsInlineEdit: !0, mimeType: l.getMimeType, supportDropForItem: this.supportDropForNode, getDragData: this.getDragDataFromNode, isFolder: this.isFolder, isEditable: this.isEditable, hasChildren: this.hasChildren, settings: "NOTES_TREE", renderItemContent: this.renderItemContent, getContextMenuItems: this.getContextMenuItems, getContextMenuItemProps: this.getContextMenuItemProps, getContextMenuNewItemString: this.getContextMenuNewItemString, getTitle: l.getTitle, saveTitle: this.saveTitle, getTargetSpec: this.getTargetSpec, isValidAddTarget: this.isValidAddTarget, isValidDragSource: this.isValidDragSource, isValidForClipboard: this.isValidForClipboard, isValidToEdit: l.validateForEdit, validateForDrag: l.validateForDrag, validateForDeletion: l.validateForDeletion, __source: { fileName: i, lineNumber: 492 } }) } }); e.exports = _ }, function(e, t, n) { // ========================= // Function_644 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/page-actions/ActionItem.jsx", a = n(1), r = n(9), s = a.createClass({ displayName: "ActionItem", mixins: [r], getInitialState: function() { return { name: null } }, onClicked: function(e) { this.props.onItemClicked(this.props.name, e.target.checked) }, render: function() { return a.createElement("li", { __source: { fileName: i, lineNumber: 19 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 20 } }, a.createElement("input", { type: "checkbox", onChange: this.onClicked, checked: this.props.checked, __source: { fileName: i, lineNumber: 21 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 25 } }, this.props.name))) } }); e.exports = s }, function(e, t, n) { // ========================= // Function_645 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/page-actions/PageActionChooser.jsx", a = n(1), r = n(9), s = n(27), o = n(644), l = n(172), c = n(231), u = n(5), A = n(39), d = n(2), h = a.createClass({ displayName: "PageActionChooser", mixins: [A, r], getInitialState: function() { return Object.assign({ pageactionFiles: [], drawerOpen: !1, currentTarget: null }, this.getContentScriptStoreState(this.props.pageId)) }, componentWillMount: function() { l.addChangeListener(this._onContentScriptStoreChange) }, componentWillUnmount: function() { l.removeChangeListener(this._onContentScriptStoreChange) }, componentWillReceiveProps: function(e) { this.props.pageId !== e.pageId && this.setState(this.getContentScriptStoreState(e.pageId)) }, componentDidUpdate: function(e, t) { t.drawerOpen === !0 && this.state.drawerOpen === !1 ? this.disableOnClickOutside() : t.drawerOpen === !1 && this.state.drawerOpen === !0 && this.enableOnClickOutside() }, _onContentScriptStoreChange: function() { this.setState(this.getContentScriptStoreState(this.props.pageId)) }, getContentScriptStoreState: function(e) { return { contentScripts: l.getContentScripts(), pageScripts: l.getPageScripts(e) } }, onToggleOpenPageActions: function() { this.setState({ drawerOpen: !this.state.drawerOpen }) }, onItemClicked: function(e, t) { t ? c.addContentScript(this.props.pageId, e) : c.removeContentScript(this.props.pageId, e) }, isActive: function() { return this.state.pageScripts !== s.Map() }, isScriptEnabled: function(e) { return Boolean(this.state.pageScripts.get(e)) }, handleClickOutside: function(e) { this.setState({ drawerOpen: !1 }) }, render: function() { var e = this; return a.createElement("span", { className: "pageactions", title: d("Page Actions"), ref: "pageactions", __source: { fileName: i, lineNumber: 82 } }, a.createElement("button", { className: u("button-toolbar-small", "page-action", { disabled: this.props.disabled, active: this.state.drawerOpen, attention: this.isActive() }), tabIndex: this.props.keyAccess, onClick: this.onToggleOpenPageActions, disabled: this.props.disabled, dangerouslySetInnerHTML: { __html: n(1010) }, __source: { fileName: i, lineNumber: 86 } }), this.state.drawerOpen && a.createElement("div", { className: "callout", __source: { fileName: i, lineNumber: 100 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 102 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 103 } }, d("Page Actions"))), a.createElement("ul", { style: { maxHeight: window.innerHeight - 150 + "px" }, __source: { fileName: i, lineNumber: 105 } }, this.state.contentScripts.map(function(t, n) { return a.createElement(o, { index: n, key: n, checked: e.isScriptEnabled(t.get("name")), name: t.get("name"), onItemClicked: e.onItemClicked, __source: { fileName: i, lineNumber: 107 } }) })))) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_646 // ========================= "use strict"; function i() { return { selectedPanel: N.getSelectedPanel(), panelWidth: N.getPanelWidth(), panelButtonsVisible: N.getPanelButtonsVisible(), panelSwitchVisible: N.getPanelSwitchVisible(), panelContentVisible: N.getPanelContentVisible(), focusContent: N.getFocusContent(), isMailWindow: N.getIsMailWindow(), regPanels: N.getRegPanels(), webPanels: N.getWebPanels() } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/panels/panel.jsx", r = n(1), s = n(11), o = n(520), l = o.VelocityComponent, c = n(9), u = n(741), A = n(566), d = n(583), h = n(596), m = n(133), p = n(245), f = n(25), g = n(66), _ = n(50), v = n(642), b = n(131), N = n(58), E = n(391), S = n(134), T = n(132), y = n(742), C = n(612), I = n(242), O = n(2), w = n(30), D = n(395), k = n(5), M = n(26), L = n(42), P = L.ALL_MESSAGES_ACCOUNT_ID, R = n(74), x = 220, B = 34, U = "MacIntel" === navigator.platform ? 6 : 10, F = .618, H = ["WEB_PANEL_UI", "KEY_ACCESS", "TAB_COUNTER_DETECTION", "TAB_POSITION", "USE_ANIMATION", "DOWNLOAD_NOTIFICATIONS"], V = r.createClass({ displayName: "Panel", mixins: [c], getInitialState: function() { return Object.assign({ resizing: !1, downloadItems: 0, downloadProgress: 0, webPanelData: [] }, i()) }, _onStoreChange: function() { var e = i(); this.state.panelWidth !== e.panelWidth && this.freezeWebview(); var t = e.webPanels.length === this.state.webPanelData.length && this.state.selectedPanel === e.selectedPanel ? void 0 : e.selectedPanel; this.setupWebPanelData(e.webPanels, t), this.setState(e) }, componentWillMount: function() { N.addChangeListener(this._onStoreChange), E.addChangeListener(this._onSearchListStoreChange) }, componentWillUnmount: function() { N.removeChangeListener(this._onStoreChange), E.removeChangeListener(this._onSearchListStoreChange) }, _onSearchListStoreChange: function() { var e = E.getCounters()[P]; this.setState({ unreadEmails: e ? e.unread : void 0 }) }, setSelected: function(e) { b.toggleContent(e) }, isWebPanelSelected: function() { var e; if (this.state.selectedPanel) { var t = I.getPanelPrefix(); e = this.state.selectedPanel.substr(0, t.length) === t } return e }, handleDoubleClick: function() { this.handlePanelSwitch() }, onSlidebarPosition: function(e, t) { var n = s.findDOMNode(this.refs.panelsContainer).getBoundingClientRect(), i = void 0; switch (this.props.position) { case "left": i = e - n.left; break; case "right": i = n.right - e; break; default: throw new Error("Unknown tabbar position") } b.setWidth(this.state.selectedPanel, this.limitPanelWidth(i)) }, limitPanelWidth: function(e) { var t = x, n = window.innerWidth * F; return Math.min(Math.max(e, t), n) || t }, handlePanelSwitch: function() { b.togglePanel() }, showPanelIfHidden: function() { this.state.panelContentVisible || this.handlePanelSwitch() }, showPanelSettings: function() { _.showSettings() }, transfersUpdated: function(e, t) { "number" != typeof t && (t = 0), this.setState({ downloadItems: e, downloadProgress: t }) }, getWebPanelDataById: function(e) { for (var t = 0; t < this.state.webPanelData.length; t++) { var n = this.state.webPanelData[t]; if (n.id === e) return n } return null }, setupWebPanelData: function(e, t) { if (this.state.webPanelData.length !== e.length || void 0 !== t) { for (var n = [], i = 0; i < e.length; i++) { var a = e[i], r = this.getWebPanelDataById(a.id); r ? (r.hasBeenActive !== !0 && a.id === t && (r.hasBeenActive = !0), n.push(r)) : n.push({ id: a.id, title: "", faviconUrl: I.getFaviconPrefix() + a.contentUrl, hasBeenActive: a.id === t }) } this.setState({ webPanelData: n }) } }, isPanelOpen: function(e) { return this.state.panelContentVisible && this.state.selectedPanel === e }, isPanelAvailable: function(e) { for (var t = this.state.regPanels, n = 0; n < t.length; n++) if (t[n].id === e) return t[n].available !== !1; t = this.state.webPanels; for (var i = 0; i < t.length; i++) if (t[i].id === e) return t[i].available !== !1; return !1 }, setWebPanelResource: function(e, t, n) { this.setupWebPanelData(this.state.webPanels, void 0); for (var i = -1, a = 0; a < this.state.webPanelData.length; a++) { var r = this.state.webPanelData[a]; if (r.id === e) { "title" === t && r.title !== n ? i = a : "faviconUrl" === t && r.faviconUrl !== n ? i = a : "activeUrl" === t && r.activeUrl !== n && (i = a); break } } if (i !== -1) { var s = []; for (a = 0; a < this.state.webPanelData.length; a++) { var o = this.state.webPanelData[a]; a === i && ("title" === t ? o.title = n : "faviconUrl" === t ? o.faviconUrl = n : "activeUrl" === t && (o.activeUrl = n)), s.push(o) } this.setState({ webPanelData: s }), "title" === t ? I.setTitle(e, n) : "activeUrl" === t && I.setActiveUrl(e, n) } }, getPanelButtonMenu: function(e) { var t = N.getResizableByPanel(e); return [Object.assign({ type: "checkbox", handler: b.setPanelResizable.bind(b, e, !t), checked: t }, w("Separate Width")), { name: "---" }, Object.assign({ items: this.getPanelSelectorMenu() }, w("Panels"))] }, getWebPanelButtonMenu: function(e) { var t = N.getResizableByPanel(e.id); return [Object.assign({ items: this.getOpenInPageMenu(e) }, w("Open in...")), Object.assign({ handler: I.copyWebPanelAdress.bind(I, e.id) }, w("Copy Web Panel Address")), { name: "---" }, Object.assign({ handler: I.setMobileMode.bind(I, e.id, !0), visible: !Boolean(e.mobileMode === !0) }, w("Show Mobile Version")), Object.assign({ handler: I.setMobileMode.bind(I, e.id, !1), visible: Boolean(e.mobileMode === !0) }, w("Show Desktop Version")), Object.assign({ type: "checkbox", handler: b.setPanelResizable.bind(b, e.id, !t), checked: t }, w("Separate Width")), Object.assign({ items: this.getWebPanelContentMenu(e) }, w("Toolbar")), { name: "---" }, Object.assign({ items: this.getPanelSelectorMenu() }, w("Panels")), { name: "---" }, Object.assign({ handler: I.removeById.bind(I, e.id) }, w("Remove Web Panel"))] }, getPanelSelectorMenu: function() { var e = [Object.assign({ handler: this.handlePanelSelector.bind(this, N.getBookmarkName()), type: "checkbox", checked: this.isPanelAvailable(N.getBookmarkName()) }, w("Bookmarks"))]; this.state.isMailWindow && (e = e.concat([Object.assign({ handler: this.handlePanelSelector.bind(this, N.getMailName()), type: "checkbox", checked: this.isPanelAvailable(N.getMailName()) }, w("Mail")), Object.assign({ handler: this.handlePanelSelector.bind(this, N.getContactName()), type: "checkbox", checked: this.isPanelAvailable(N.getContactName()) }, w("Contacts"))])), e = e.concat([Object.assign({ handler: this.handlePanelSelector.bind(this, N.getDownloadName()), type: "checkbox", checked: this.isPanelAvailable(N.getDownloadName()) }, w("Downloads")), Object.assign({ handler: this.handlePanelSelector.bind(this, N.getNotesName()), type: "checkbox", checked: this.isPanelAvailable(N.getNotesName()) }, w("Notes")), Object.assign({ handler: this.handlePanelSelector.bind(this, N.getHistoryName()), type: "checkbox", checked: this.isPanelAvailable(N.getHistoryName()), visible: R.isEnabled(R.kNewHistoryPage) }, w("History"))]); var t = this.state.webPanels; if (t && t.length > 0) { e.push({ name: "---" }); for (var n = 0; n < t.length; n++) { var i = t[n]; e.push({ name: i.title || i.contentUrl || O("Unknown Web Panel"), mnemonic: !1, handler: this.handlePanelSelector.bind(this, i.id), type: "checkbox", checked: this.isPanelAvailable(i.id) }) } } return e }, getOpenInPageMenu: function(e) { return [Object.assign({ handler: I.openInTab.bind(I, e.id, !0, !1) }, w("Current Tab")), Object.assign({ handler: I.openInTab.bind(I, e.id, !1, !1) }, w("open in", "New Tab")), Object.assign({ handler: I.openInTab.bind(I, e.id, !1, !0) }, w("Background Tab")), { name: "---" }, Object.assign({ handler: I.openInWindow.bind(I, e.id, !1, !1) }, w("open in", "New Window")), Object.assign({ handler: I.openInWindow.bind(I, e.id, !0, !1) }, w("Background Window")), Object.assign({ handler: I.openInWindow.bind(I, e.id, !1, !0) }, w("Private Window"))] }, getWebPanelContentMenu: function(e) { var t = this.props.vivaldiSettings.WEB_PANEL_UI; return [Object.assign({ handler: I.setUIContent.bind(I, { showToolbar: !0 }), visible: !Boolean(t.showToolbar === !0) }, w("Show")), Object.assign({ handler: I.setUIContent.bind(I, { showToolbar: !1 }), visible: Boolean(t.showToolbar === !0) }, w("Hide")), Object.assign({ handler: I.setUIContent.bind(I, { allControls: !t.allControls, showToolbar: t.showToolbar || !t.allControls }), type: "checkbox", checked: t.allControls }, w("Display All Controls"))] }, handlePanelSelector: function(e) { var t = this.isPanelAvailable(e); t ? (this.isPanelOpen(e) && (N.getAvailablePanelCount() > 1 ? N.getLastAvailablePanel() === e ? b.showNextPanel("previous") : b.showNextPanel("next") : b.setContentVisible(!1)), b.setAvailable(e, !1)) : (b.setAvailable(e, !0), b.toggleContent(e)) }, hideToolTip: function() { T.clearTooltip() }, handleWebPanelButtonUp: function(e, t) { 1 === t.button && 0 === t.buttons && this.handleWebPanelButtonClick(e, t) }, handleWebPanelButtonClick: function(e, t) { 1 === t.button ? I.openInTab(e, !1, !0) : this.setSelected(e) }, hadleSliderDown: function() { this.setState({ resizing: !0 }), this.freezeWebview() }, hadleSliderUp: function() { this.setState({ resizing: !1 }), this.thawWebview() }, freezeWebview: function() { var e = document.getElementById("webview-container"), t = document.querySelector("#main .inner"), n = e.clientWidth.toString() + "px"; e.style.setProperty("flex", "0 0 " + n), ("right" === this.props.vivaldiSettings.TAB_POSITION && "left" === this.props.position || "left" === this.props.vivaldiSettings.TAB_POSITION && "right" === this.props.position) && t.classList.add("anchor-tabs"), "right" === this.props.position && t.classList.add("justify-end") }, thawWebview: function() { var e = document.getElementById("webview-container"); if (e.style.setProperty("flex", "1 1 100%"), "right" === this.props.vivaldiSettings.TAB_POSITION || "left" === this.props.vivaldiSettings.TAB_POSITION || "right" === this.props.position) { var t = document.querySelector("#main .inner"); t.classList.remove("anchor-tabs", "justify-end") } }, renderWebPanel: function(e) { var t = this.state.webPanels[e], n = this.state.panelContentVisible && this.state.selectedPanel === t.id; return r.createElement(y, { key: t.id, isVisible: n, focusContent: this.state.focusContent && n, id: t.id, src: t.contentUrl, mobileMode: t.mobileMode === !0, ref: t.id, panelUI: this.props.vivaldiSettings.WEB_PANEL_UI, setWebPanelResource: this.setWebPanelResource, __source: { fileName: a, lineNumber: 527 } }) }, renderAllWebPanels: function() { var e = [], t = this.state.webPanels, n = this.state.webPanelData; if (n.length !== t.length) return e; if (t) for (var i = 0; i < t.length; i++) t[i].available !== !1 && n[i].hasBeenActive === !0 && e.push(this.renderWebPanel(i)); return e }, renderWebPanelButton: function(e) { var t, n, i = this.state.webPanels[e], s = k({ webviewbtn: !0, active: this.state.selectedPanel === i.id && this.state.panelContentVisible === !0 }); if (this.state.webPanelData && this.state.webPanelData.length > e) { var o = this.state.webPanelData[e]; t = o.title, t.length > 0 && (t += "\n"), n = o.faviconUrl } var l = D(t, i.activeUrl, 9); return t += i.contentUrl, r.createElement("button", { key: "button_" + i.id, title: t, className: s, tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onContextMenu: M(this.getWebPanelButtonMenu.bind(this, i), this.hideToolTip), onMouseUp: this.handleWebPanelButtonUp.bind(this, i.id), onClick: this.handleWebPanelButtonClick.bind(this, i.id), __source: { fileName: a, lineNumber: 583 } }, this.props.vivaldiSettings.TAB_COUNTER_DETECTION && l && r.createElement("span", { className: "button-badge", __source: { fileName: a, lineNumber: 594 } }, l), r.createElement("img", { src: n, alt: "", __source: { fileName: a, lineNumber: 598 } })) }, renderAllWebPanelButtons: function() { var e = [], t = this.state.webPanels; if (t) for (var n = 0; n < t.length; n++) t[n].available !== !1 && e.push(this.renderWebPanelButton(n)); return e }, render: function() { var e = this.state.panelWidth, t = this.props.vivaldiSettings, i = t.KEY_ACCESS, s = t.DOWNLOAD_NOTIFICATIONS, o = t.USE_ANIMATION, c = k({ bookmarks: !0, active: this.state.selectedPanel === N.getBookmarkName() && this.state.panelContentVisible === !0 }), f = k({ contacts: !0, active: this.state.selectedPanel === N.getContactName() && this.state.panelContentVisible === !0 }), _ = k({ mail: !0, active: this.state.selectedPanel === N.getMailName() && this.state.panelContentVisible === !0 }), b = k({ downloads: !0, "in-progress": this.state.downloadItems > 0, active: this.state.selectedPanel === N.getDownloadName() && this.state.panelContentVisible === !0 }), E = k({ notes: !0, active: this.state.selectedPanel === N.getNotesName() && this.state.panelContentVisible === !0 }), T = k({ history: !0, active: this.state.selectedPanel === N.getHistoryName() && this.state.panelContentVisible === !0 }), y = { left: "left" === this.props.position, right: "right" === this.props.position, button: this.state.panelSwitchVisible, switcher: e <= U, icons: e > U && e <= 40 }, w = k(y), D = "right" === this.props.position && e > U || "left" === this.props.position && e <= U ? "0 0 0 8 4 4" : "4 0 4 8 0 4", L = O("Downloads"), P = this.state.downloadItems; return P > 0 && (L = L + " " + O("($1 active transfer)", "($1 active transfers)", [this.state.downloadItems])), r.createElement(l, { animation: { width: e }, duration: o ? 100 : 0, mock: this.state.resizing, complete: this.state.resizing ? null : this.thawWebview, __source: { fileName: a, lineNumber: 676 } }, r.createElement(m, { focusName: "focus_panel", id: "panels-container", ref: "panelsContainer", className: w, __source: { fileName: a, lineNumber: 681 } }, r.createElement("div", { id: "panels", __source: { fileName: a, lineNumber: 686 } }, this.state.panelSwitchVisible && r.createElement("div", { id: "panel_switch", title: O(this.state.panelButtonsVisible ? "Hide Panel" : "Show Panel"), className: e <= U ? "on" : "off", onClick: this.handlePanelSwitch, __source: { fileName: a, lineNumber: 688 } }, r.createElement("svg", { version: "1.1", xmlns: "http://www.w3.org/2000/svg", width: "4px", height: "8px", viewBox: "0 0 4 8", __source: { fileName: a, lineNumber: 694 } }, r.createElement("polygon", { points: D, __source: { fileName: a, lineNumber: 696 } }))), r.createElement("div", { id: "switch", onContextMenu: M(this.getPanelSelectorMenu, this.hideToolTip), __source: { fileName: a, lineNumber: 700 } }, this.isPanelAvailable(N.getBookmarkName()) ? r.createElement("button", { title: O("Bookmarks"), className: c, tabIndex: i, onContextMenu: M(this.getPanelButtonMenu.bind(this, N.getBookmarkName()), this.hideToolTip), onClick: this.setSelected.bind(this, N.getBookmarkName()), dangerouslySetInnerHTML: { __html: n(979) }, __source: { fileName: a, lineNumber: 704 } }) : null, this.isPanelAvailable(N.getMailName()) && this.state.isMailWindow ? r.createElement("button", { title: O("Mail"), className: _, tabIndex: i, onContextMenu: M(this.getPanelButtonMenu.bind(this, N.getMailName()), this.hideToolTip), onClick: this.setSelected.bind(this, N.getMailName()), __source: { fileName: a, lineNumber: 720 } }, r.createElement("span", { dangerouslySetInnerHTML: { __html: n(471) }, __source: { fileName: a, lineNumber: 728 } }), this.state.unreadEmails > 0 && r.createElement("span", { className: "button-badge", __source: { fileName: a, lineNumber: 731 } }, this.state.unreadEmails)) : null, this.isPanelAvailable(N.getContactName()) && this.state.isMailWindow ? r.createElement("button", { title: O("Contacts"), className: f, tabIndex: i, onContextMenu: M(this.getPanelButtonMenu.bind(this, N.getContactName()), this.hideToolTip), onClick: this.setSelected.bind(this, N.getContactName()), dangerouslySetInnerHTML: { __html: n(980) }, __source: { fileName: a, lineNumber: 740 } }) : null, this.isPanelAvailable(N.getDownloadName()) ? r.createElement("button", { title: L, className: b, tabIndex: i, onContextMenu: M(this.getPanelButtonMenu.bind(this, N.getDownloadName()), this.hideToolTip), onClick: this.setSelected.bind(this, N.getDownloadName()), __source: { fileName: a, lineNumber: 754 } }, r.createElement("span", { dangerouslySetInnerHTML: { __html: n(981) }, __source: { fileName: a, lineNumber: 763 } }), r.createElement("div", { className: "progress", __source: { fileName: a, lineNumber: 765 } }, r.createElement("div", { className: "loaded", style: { width: this.state.downloadProgress + "%" }, __source: { fileName: a, lineNumber: 766 } }))) : null, this.isPanelAvailable(N.getNotesName()) ? r.createElement("button", { title: O("Notes"), className: E, tabIndex: i, onContextMenu: M(this.getPanelButtonMenu.bind(this, N.getNotesName()), this.hideToolTip), onClick: this.setSelected.bind(this, N.getNotesName()), dangerouslySetInnerHTML: { __html: n(983) }, __source: { fileName: a, lineNumber: 773 } }) : null, R.isEnabled(R.kNewHistoryPage) && this.isPanelAvailable(N.getHistoryName()) ? r.createElement("button", { title: O("History"), className: T, tabIndex: i, onClick: this.setSelected.bind(this, N.getHistoryName()), onDoubleClick: this.setSelected.bind(this, N.getHistoryName()), dangerouslySetInnerHTML: { __html: n(982) }, __source: { fileName: a, lineNumber: 789 } }) : null, this.renderAllWebPanelButtons(), r.createElement(u, { addNew: I.addByUrl, keyAccess: i, __source: { fileName: a, lineNumber: 801 } }), r.createElement("button", { title: O("Settings"), className: "preferences", tabIndex: i, onClick: this.showPanelSettings, dangerouslySetInnerHTML: { __html: n(984) }, __source: { fileName: a, lineNumber: 805 } })), r.createElement("div", { className: "panel-group", __source: { fileName: a, lineNumber: 813 } }, r.createElement("div", { style: { display: "flex", flex: 1, minWidth: this.state.resizing ? "auto" : e - 1 - (B + (this.state.panelSwitchVisible ? U : 0)) }, __source: { fileName: a, lineNumber: 814 } }, r.createElement(A, { key: "panel-bookmarks", keyAccess: i, open: this.isPanelOpen(N.getBookmarkName()), __source: { fileName: a, lineNumber: 819 } }), this.state.isMailWindow ? r.createElement(g, { key: "panel-mail", keyAccess: i, open: this.isPanelOpen(N.getMailName()), __source: { fileName: a, lineNumber: 824 } }) : null, this.state.isMailWindow ? r.createElement(d, { key: "panel-contacts", keyAccess: i, open: this.isPanelOpen(N.getContactName()), __source: { fileName: a, lineNumber: 830 } }) : null, r.createElement(h, { key: "panel-downloads", keyAccess: i, notifications: s, open: this.isPanelOpen(N.getDownloadName()), onTransfersUpdated: this.transfersUpdated, __source: { fileName: a, lineNumber: 834 } }), r.createElement(v, { key: "panel-notes", keyAccess: i, open: this.isPanelOpen(N.getNotesName()), __source: { fileName: a, lineNumber: 841 } }), R.isEnabled(R.kNewHistoryPage) ? r.createElement(C, { key: "panel-history", keyAccess: this.state.KEY_ACCESS, open: this.isPanelOpen(N.getHistoryName()), page: { id: p.getPanelResourceKey() }, __source: { fileName: a, lineNumber: 847 } }) : null, r.createElement("div", { className: this.state.selectedPanel && this.isWebPanelSelected() ? "webpanel-stack" : "webpanel-stack hidden", __source: { fileName: a, lineNumber: 853 } }, this.renderAllWebPanels())))), r.createElement(S, { onSlidebarPosition: this.onSlidebarPosition, onStart: this.hadleSliderDown, onStop: this.hadleSliderUp, onDoubleClick: this.handleDoubleClick, position: this.props.position, __source: { fileName: a, lineNumber: 862 } }))) } }); e.exports = f(V, H) }, function(e, t, n) { // ========================= // Function_647 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/progress/PageloadProgress.jsx", a = n(1), r = n(9), s = n(112), o = n(25), l = n(87), c = n(183), u = n(5), A = { bytes: 0, bytesDisplayed: 0, currentPageId: null, elLoaded: 0, elLoadedDisplayed: 0, elTotal: 0, isProgressing: !1, isStarted: !1, progress: 0, stopped: !1 }, d = ["USE_ANIMATION", "ADDRESS_BAR_SHOW_PROGRESS"], h = void 0, m = a.createClass({ displayName: "PageloadProgress", mixins: [r], getInitialState: function() { return A }, componentWillMount: function() { s.addChangeListener(this._onNavigationStoreChanged), l.addChangeListener(this._onWebpageviewStoreChanged) }, componentWillUnmount: function() { s.removeChangeListener(this._onNavigationStoreChanged), l.removeChangeListener(this._onWebpageviewStoreChanged) }, componentWillReceiveProps: function(e) { var t = e.page; if (void 0 !== t && t.get("id") !== this.state.currentPageId) { var n = s.getProgressInfo(t), i = n.get("progress"), a = n.get("loadedBytes"), r = n.get("loadedElements"), o = n.get("totalElements"); 0 === i || 1 === i || void 0 === i ? this.setState(Object.assign({}, A, { currentPageId: t.get("id") })) : this.setState(Object.assign({}, A, { currentPageId: t.get("id"), progress: i, bytes: a, elLoaded: r, elTotal: o })) } }, _onNavigationStoreChanged: function() { var e = this.props.page, t = s.getProgressInfo(e), n = t.get("progress"), i = s.getNavigationInfo(e).get("trigger"), a = t.get("loadedBytes"), r = t.get("loadedElements"), o = t.get("totalElements"); "start" === i ? this.setState(Object.assign({}, A, { currentPageId: e.get("id"), isProgressing: !0, isStarted: !0 })) : "stop" === i ? this.setState(Object.assign({ isProgressing: !1 }, this.state.stopped && {} || { progress: 1 })) : "commit" !== i || this.state.stopped || (this.setState({ bytes: a, elLoaded: r, elTotal: o, isProgressing: !0, isStarted: !0, progress: n }), this.updateCount()) }, _onWebpageviewStoreChanged: function(e) { "PAGE_STOP" === e.type && 1 !== this.state.progress && this.setState({ isProgressing: !1, stopped: !0 }) }, getIncrement: function(e, t) { var n = t - e, i = 0; return n > 10 ? i = Math.floor(n / 5) : n > 4 ? i = 2 : n > 0 && (i = 1), e + i }, updateCount: function() { if (clearTimeout(h), this.isMounted()) { var e = this.state.bytes, t = this.state.bytesDisplayed, n = this.state.elLoadedDisplayed, i = this.state.elLoaded; 1 === this.state.progress && i < this.state.elTotal && (i = this.state.elTotal); var a = this.getIncrement(t, e), r = this.getIncrement(n, i); if (this.props.vivaldiSettings.USE_ANIMATION === !1) return this.setState({ elLoadedDisplayed: i, bytesDisplayed: e }), !1; i > n && this.setState({ elLoadedDisplayed: r }), e > t && this.setState({ bytesDisplayed: a }), !this.state.stopped && (i > r || e > a) && (h = setTimeout(this.updateCount, 80)) } }, render: function() { var e = this.state.progress, t = this.state.bytesDisplayed, n = this.state.elLoadedDisplayed, r = this.state.elTotal, s = this.state.isProgressing, o = t > 1048576 ? 1 : 0, l = this.state.isStarted, A = this.state.stopped === !0, d = u({ pageload: !0, unstarted: !l, progressing: s, "progress-done": 1 === e || A, stopped: A }); return !!this.props.open && a.createElement("div", { className: d, __source: { fileName: i, lineNumber: 199 } }, this.props.vivaldiSettings.ADDRESS_BAR_SHOW_PROGRESS && a.createElement("progress", { className: "pageload-indicator", value: 100 * this.state.progress, max: 100, __source: { fileName: i, lineNumber: 201 } }), a.createElement("div", { className: "pageload-ticker", __source: { fileName: i, lineNumber: 206 } }, c.filesize(t, 1024, o)), a.createElement("div", { className: "pageload-ticker", __source: { fileName: i, lineNumber: 209 } }, n + "/" + r)) } }); e.exports = o(m, d) }, function(e, t, n) { // ========================= // Function_648 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } Object.defineProperty(t, "__esModule", { value: !0 }); var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/progress/progress_indicator.jsx", r = n(1), s = i(r), o = { bar: function(e) { return e === -1 && s.default.createElement("progress", { __source: { fileName: a, lineNumber: 5 } }) || s.default.createElement("progress", { value: e, max: "100", __source: { fileName: a, lineNumber: 6 } }) }, circular: function(e) { return s.default.createElement("progress", { value: e, max: "100", __source: { fileName: a, lineNumber: 7 } }) }, text: function(e) { return s.default.createElement("i", { __source: { fileName: a, lineNumber: 8 } }, e, " % ") } }; t.default = function(e) { var t = e.currentSize, n = e.totalSize, i = e.type, a = e.overridePercent; return "function" == typeof o[i] && o[i](a !== -1 && a || n && t / n * 100 || -1) } }, function(e, t, n) { // ========================= // Function_649 // ========================= (function(t) { "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/searchfield/searchfield.jsx", r = n(55), s = i(r), o = n(88), l = i(o), c = n(1), u = n(11), A = n(40), d = n(25), h = n(37), m = n(380), p = n(379).OmniNavigation, f = n(39), g = n(232), _ = n(390), v = n(349), b = n(248), N = n(134), E = n(171), S = n(6), T = n(570), y = n(3), C = n(87), I = n(2), O = n(5), w = n(7), D = 800, k = 175, M = n(9), L = [], P = w.throttle(function(e, t) { var n = v.suggest(e, t); L = w.takeRight(L.concat(n), 10) }, 500, { leading: !1 }), R = ["SEARCH_FIELD_TYPED_HISTORY_ENABLED", "SEARCH_FIELD_WIDTH"], x = c.createClass({ displayName: "SearchField", mixins: [M, f], propTypes: { currentSearchEngine: c.PropTypes.object, defaultSearchEngineId: c.PropTypes.string, openInNewTab: c.PropTypes.bool, searchEngines: c.PropTypes.array, settings: c.PropTypes.object }, getInitialState: function() { return { focused: !1, isOmniDropdownOpen: !1, results: [], searchSuggestionStore: [], showAll: !1, typedHistoryStore: [], typedHistoryStoreFiltered: [] } }, componentWillMount: function() { _.addChangeListener(this.onSearchFieldStoreChanged), b.addChangeListener(this._onSearchSuggestionsChanged), C.addChangeListener(this._onWebpageviewStoreChanged) }, componentWillUnmount: function() { _.removeChangeListener(this.onSearchFieldStoreChanged), b.removeChangeListener(this._onSearchSuggestionsChanged), C.removeChangeListener(this._onWebpageviewStoreChanged) }, _onWebpageviewStoreChanged: function(e) { var n = this; e.type === S.WEBPAGEVIEW_ACTIONS && ("searchPasteAndGo" === e.action ? t.nextTick(function() { return n._pasteAndGo(e.modifiers) }) : "focusSearchField" === e.action && this.focusField()) }, _pasteAndGo: function(e) { document.execCommand("paste"), this._search({ target: this.refs.search, ctrlKey: e.ctrlKey, altKey: e.altKey, shiftKey: e.shiftKey }, !0) }, _onSearchSuggestionsChanged: function(e) { var t = this, n = e.suggestions, i = e.query, a = e.uid; if (!(document.activeElement !== this.refs.search || !L.includes(a) || this.refs.searchEngines && this.refs.searchEngines.isExpanded())) { var r = n.map(function(e) { return { id: e, url: e, type: E.OMNI_RESULT_SUGGEST } }); this.state.editText && i && (this.state.editText.startsWith(i) || i.startsWith(this.state.editText)) && this.setState({ results: r.concat(this.state.typedHistoryStoreFiltered), searchSuggestionStore: r }, function() { return t._showDropdown() }) } }, onSearchFieldStoreChanged: function(e) { var t = _.getSearchText(this.props.page), n = (_.getTypedSearchHistory() || []).map(function(e) { return Object.assign({}, e, { type: E.OMNI_RESULT_TYPED_HISTORY_SEARCH }) }), i = t.trim() && n.filter(function(e) { return e.url.toLowerCase().startsWith(t.toLowerCase()) }) || [], a = this.state.searchSuggestionStore.concat(i); !this.state.isOmniDropdownOpen && (this.state.showAll || a.length > 0) ? this.refs.search === document.activeElement && this._showDropdown() : this.state.isOmniDropdownOpen && !this.state.showAll && a.length < 1 && this._hideDropdown(), this.setState({ editText: t, results: a, typedHistoryStore: n, typedHistoryStoreFiltered: i }) }, _getDefaultSearchEngine: function() { return w.find(this.props.searchEngines, { Id: parseInt(this.props.defaultSearchEngineId) }) }, _search: function(e, t) { var n = e.target, i = e.altKey, a = e.shiftKey, r = e.ctrlKey; P.cancel && P.cancel(), this._hideDropdown(), document.activeElement === this.refs.search && this.refs.search.blur(), L = [], g.setState(this.props.page, { editText: n.value }); var s = { addTypedSearchHistory: !0, inCurrent: this.props.openInNewTab !== !0 }; if (t === !0)(e.ctrlKey || e.altKey || e.shiftKey) && Object.assign(s, A.getOpenOptionsFromEvent(e)); else { var o = a && "shift" === this.props.openShortcutModifier || i && "alt" === this.props.openShortcutModifier; o && (s.inCurrent = !1, s.inBackground = r) } n.value && n.value.length > 0 && this.props.onEnterPressed(n.value, this.props.currentSearchEngine && this.props.currentSearchEngine.Url || this._getDefaultSearchEngine().Url, s) }, onKeyDowned: function(e) { var t = e.key, n = e.shiftKey; ("ArrowDown" === t && n || "Enter" === t && (0, l.default)(e)) && this.onKeyPressed(e) }, onKeyPressed: function(e) { var t = e.key, n = e.shiftKey; "Enter" === t ? (P.cancel && P.cancel(), this._search(e)) : n && "ArrowDown" === t ? this.state.typedHistoryStore.length > 0 && this.props.settings.SEARCH_FIELD_TYPED_HISTORY_ENABLED && this._showDropdown({ showAll: !0 }) : "Tab" === t && this._hideDropdown() }, onSearchEngineChanged: function(e) { this.refs.search.select(); var t = w.find(this.props.searchEngines, { Id: e }), n = this.refs.search.value; if (n.length > 0) { var i = { addTypedSearchHistory: !0, inCurrent: this.props.openInNewTab !== !0 }; this.props.onEnterPressed(n, t.Url, i) } g.setState(this.props.page, { searchEngine: t }), this.setState({ searchSuggestionStore: [] }) }, onTypedSearchHistoryClicked: function(e) { g.setState(this.props.page, { editText: e }); var t = this.props.currentSearchEngine && this.props.currentSearchEngine.Url || ""; if (!t) { var n = w.find(this.props.searchEngines, { Id: parseInt(this.props.defaultSearchEngineId) }); t = n.Url } t && this.props.onEnterPressed(e, t) }, onTypedSearchHistoryDeleted: function(e) { g.deleteTypedSearchHistory(e) }, _showDropdown: function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; if (this._isPasting !== !0) { var t = e.showAll; "boolean" != typeof t && (t = !1); var n = { showAll: t }; this.state.isOmniDropdownOpen !== !0 && (n.isOmniDropdownOpen = !0), this.setState(n) } }, _hideDropdown: function() { this.state.isOmniDropdownOpen !== !1 && this.setState({ isOmniDropdownOpen: !1, showAll: !1, searchSuggestionStore: [] }) }, getDropdown: function() { return this.refs.omniDropdown }, getSelectionIndex: function() { return this.state.dropdownSelectionIndex }, setAutocompleteHighlight: function(e, t) { if (this.setState({ dropdownSelectionIndex: e }), this.refs.omniDropdown && (this.selIndex = e, t)) { var n = this.refs.omniDropdown.getCurrentValue(); "" !== n && (u.findDOMNode(this.refs.search).value = n) } return !1 }, _esc: function() { this.state.isOmniDropdownOpen === !0 ? this._hideDropdown() : this.state.editText ? g.setState(this.props.page, { editText: "" }) : s.default.doAction("focusWebView") }, _onDelete: function() { var e = this.refs.omniDropdown.deleteCurrentItem; "function" == typeof e && e() }, _initializeNavigation: function() { var e = this; this._isNavigationInitialized !== !0 && ! function() { var t = new p(e, e._onOmniSaved); e._up = t.up.bind(t), e._down = function(n) { return e.state.isOmniDropdownOpen === !0 ? t.down.apply(t, n) : void e.refs.searchEngines.expand() }, e._pageUp = t.pageUp.bind(t), e._pageDown = t.pageDown.bind(t), h.bind("up", e._up), h.bind("down", e._down), h.bind("pageup", e._pageUp), h.bind("pagedown", e._pageDown), h.bind("esc", e._esc), h.bind("shift+del", e._onDelete), e._isNavigationInitialized = !0 }() }, _cleanupNavigation: function() { if (this._isNavigationInitialized === !0) try { h.unbind("up", this._up), h.unbind(["down", "shift+down"], this._down), h.unbind("pageup", this._pageUp), h.unbind("pagedown", this._pageDown), h.unbind("esc", this._esc), h.unbind("shift+del", this._onDelete), this._up = this._down = this._pageUp = this._pageDown = void 0 } finally { this._isNavigationInitialized = !1 } }, onFocus: function() { this.setState({ focused: !0 }), this._initializeNavigation() }, onBlur: function(e) { this.setState({ focused: !1 }), e && e.relatedTarget && this._hideDropdown(), this._cleanupNavigation() }, onPaste: function(e) { var t = this; this._isPasting = !0, setTimeout(function() { return t._isPasting = !1 }, 5) }, onChange: function(e) { var t = e.target; g.setState(this.props.page, { editText: t.value }), this.props.suggestEnabled === !0 && t.value.trim() && t.value.length > 1 ? P(t.value, this.props.currentSearchEngine || this._getDefaultSearchEngine()) : this.setState({ searchSuggestionStore: [] }) }, onClicked: function(e) { var t = e.target, n = e.target, i = n.selectionStart, a = n.selectionEnd; i === a && t.select() }, onToggleDropdownClicked: function(e) { document.activeElement !== this.refs.search && this.refs.search.focus(), this.state.isOmniDropdownOpen || (this.onSearchFieldStoreChanged(), this._showDropdown({ showAll: !0 })) }, handleClickOutside: function(e) { this._hideDropdown() }, onSlidebarPosition: function(e, t) { var n = this.refs.searchfield.getBoundingClientRect(); y.set({ SEARCH_FIELD_WIDTH: n.right - e }) }, getWidth: function() { var e = this.props.settings.SEARCH_FIELD_WIDTH; return e ? e < k ? e = k : e > D && (e = D) : e = k, e }, focusField: function() { if (this.refs.search) { var e = this.refs.search; e.focus(), "" !== e.value && e.select() } }, renderSearchEngines: function() { var e = this, t = w.clone(this.props.searchEngines); parseInt(this.props.defaultSearchEngineId) > -1 && t.unshift(t.splice(w.indexOf(t, w.find(t, { Id: parseInt(this.props.defaultSearchEngineId) })), 1)[0]), this.props.currentSearchEngine && this.props.currentSearchEngine.Id >= 0 && t.unshift(t.splice(w.indexOf(t, w.find(t, function(t) { return t.Id === e.props.currentSearchEngine.Id })), 1)[0]); var n = t.map(function(e) { return { name: e.Name, icon: e.Image || e.FaviconUrl, shortcut: e.Keyword, noPrettifying: !0, Id: e.Id, url: e.Url } }); return c.createElement(T, { keyAccess: this.props.keyAccess, minWidth: this.getWidth() - 2, onClose: this.focusField, onItemClicked: this.onSearchEngineChanged, ref: "searchEngines", store: n, type: "search", value: null != this.props.currentSearchEngineId ? this.props.currentSearchEngineId : this.props.defaultSearchEngineId, __source: { fileName: a, lineNumber: 530 } }) }, onOmniDropdownItemClicked: function(e, t) { var n = u.findDOMNode(this.refs.search); n.value = e.url, this._search({ target: n, altKey: t.altKey, shiftKey: t.shiftKey }) }, renderDropdown: function() { var e = this.props.currentSearchEngine || this._getDefaultSearchEngine(), t = this.state.showAll ? this.state.typedHistoryStore : this.state.results; return c.createElement(m, { ref: "omniDropdown", defaultSearchEngine: e, disableSearch: !0, hideIcons: !0, isOpen: t.length > 0, onClose: this._hideDropdown, onDeleteTypedHistoryItem: this.onTypedSearchHistoryDeleted, onLinkItemClicked: this.onOmniDropdownItemClicked, pattern: this.state.editText, results: t, selectionIndex: this.state.dropdownSelectionIndex, setAutocompleteHighlight: this.setAutocompleteHighlight, suggestEnabled: this.props.suggestEnabled, __source: { fileName: a, lineNumber: 561 } }) }, render: function() { if (!this.props.searchEngines) return null; var e = void 0; e = this.props.currentSearchEngine && this.props.currentSearchEngine.Id >= 0 ? I("Search $1", [this.props.currentSearchEngine.Name]) : I("Search $1", [(w.find(this.props.searchEngines, { Id: parseInt(this.props.defaultSearchEngineId) }) || this.props.searchEngines[0]).Name]); var t = O({ "iconmenu-container": !0, focused: this.state.focused, searchfield: !0 }), i = O({ "searchfield-input": !0, "vivaldi-searchfield": !0 }), r = 0 === this.state.typedHistoryStore.length; return c.createElement("div", { ref: "searchfield", className: t, style: { flexBasis: this.getWidth() + "px" }, __source: { fileName: a, lineNumber: 611 } }, c.createElement(N, { onSlidebarPosition: this.onSlidebarPosition, position: "right", __source: { fileName: a, lineNumber: 615 } }), this.renderSearchEngines(), c.createElement("input", { ref: "search", className: i, onBlur: this.onBlur, onChange: this.onChange, onClick: this.onClicked, onFocus: this.onFocus, onKeyDown: this.onKeyDowned, onKeyPress: this.onKeyPressed, onPaste: this.onPaste, placeholder: e, type: "search", value: this.props.value, __source: { fileName: a, lineNumber: 623 } }), this.state.isOmniDropdownOpen && this.renderDropdown(), this.props.settings.SEARCH_FIELD_TYPED_HISTORY_ENABLED && c.createElement("button", { className: "button-addressfield input-dropdown search-history", dangerouslySetInnerHTML: { __html: n(314) }, disabled: r, onMouseDown: this.onToggleDropdownClicked, tabIndex: this.props.keyAccess, title: I("Show search history"), __source: { fileName: a, lineNumber: 639 } })) } }); e.exports = d(x, R, [], "settings") }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_650 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/sessions/SessionTree.jsx", a = n(1), r = n(11), s = n(9), o = n(109), l = n(397), c = window.navigator.language, u = a.createClass({ displayName: "SessionTree", mixins: [s], getInitialState: function() { return { sessionSorting: [] } }, componentDidMount: function() { r.findDOMNode(this.refs.sessionTree).focus() }, isFolder: function(e) { return !1 }, isTrash: function(e) { return !1 }, isEditable: function() { return !1 }, hasChildren: function(e) { return !1 }, isValidForClipboard: function(e) { return !1 }, getContextMenuItems: function(e) { return [] }, getSelectedSessions: function() { var e = this, t = this.refs.sessionTree.SelectionMixinGetAllSelected().map(function(e) { return e.id }), n = []; return t.forEach(function(t) { var i = e.refs.sessionTree.findTreeItem(t); i && n.push(i) }), n }, onKeyDown: function(e) { "Enter" === l[e.keyCode] && this.props.onOpenSessions(), "Escape" === l[e.keyCode] && this.props.onClose(), "Up" !== l[e.keyCode] && "Down" !== l[e.keyCode] || this.props.onUpdateSelection(!0) }, renderItemContent: function(e) { var t = e.node, n = [], r = { weekday: "long", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }, s = new Date(t.createDateJS).toLocaleDateString(c, r); return n.push(a.createElement("label", { key: "0", title: t.name, __source: { fileName: i, lineNumber: 85 } }, t.name)), n.push(a.createElement("label", { key: "1", title: s, __source: { fileName: i, lineNumber: 90 } }, s)), n }, render: function() { return a.createElement(o, { ref: "sessionTree", nodes: this.props.nodes, onItemMouseDown: this.props.onUpdateSelection, onItemDoubleClick: this.props.onOpenSessions, onKeyDown: this.onKeyDown, isFolder: this.isFolder, isTrash: this.isTrash, isEditable: this.isEditable, hasChildren: this.hasChildren, renderItemContent: this.renderItemContent, isValidForClipboard: this.isValidForClipboard, sorting: this.props.sessionSorting, multiSelect: "true", __source: { fileName: i, lineNumber: 97 } }) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_651 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/RestartBrowserDialog.jsx", a = n(1), r = n(34), s = n(2), o = a.createClass({ displayName: "RestartBrowserDialog", getInitialState: function() { return { folderName: "", shown: !0, modalShown: !1, parentFolderId: this.props.parentFolderId } }, getLayeredComponentRootNode: function() { return this.props.parentDiv }, handleClick: function() { this.state.shown && this.props.onClose(), this.setState({ shown: !this.state.shown }) }, onClose: function() { this.state.shown && this.props.onClose(), this.setState({ shown: !this.state.shown }) }, onFolderChange: function(e) { this.setState({ folderName: e.target.value }) }, keyDown: function(e) { 13 === event.keyCode ? this.onCreate() : 27 === event.keyCode && this.onCancel() }, render: function() { return this.state.shown ? a.createElement(r, { onRequestClose: this.handleClick, __source: { fileName: i, lineNumber: 50 } }, a.createElement("div", { className: "dialog-restart", __source: { fileName: i, lineNumber: 51 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 52 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 53 } }, s("Restart required"))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 55 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 56 } }, s("Please restart the browser for this change to take effect."))), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 60 } }, a.createElement("input", { type: "button", className: "primary", onClick: this.onClose, value: s("Close"), __source: { fileName: i, lineNumber: 61 } })))) : null } }); e.exports = o }, function(e, t, n) { // ========================= // Function_652 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var r = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/addressbar/AddressBar.jsx", s = n(653), o = i(s), l = n(41), c = i(l), u = n(1), A = i(u), d = n(3), h = i(d), m = n(13), p = i(m), f = n(2), g = i(f), _ = n(12), v = i(_), b = A.default.createClass({ displayName: "AddressBar", mixins: [p.default], vivaldiSettingsKeys: ["ADDRESS_BAR_AUTOCOMPLETE_ENABLED", "ADDRESS_BAR_AUTOCOMPLETE_TLD", "ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS", "ADDRESS_BAR_CUTCOPY_ENCODED", "ADDRESS_BAR_OMNIDROPDOWN_ENABLED", "ADDRESS_BAR_POSITION", "ADDRESS_BAR_SELECT_ON_CLICK", "ADDRESS_BAR_SHOW_FULL_URL", "ADDRESS_BAR_URL_OPEN_SHORTCUT", "SHOW_ADDRESS_BAR", "ADDRESS_BAR_SHOW_PROGRESS", "SHOW_FFW_RWD_BUTTONS", "EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED"], saveVivaldiSettingFromEvent: function(e, t, n) { h.default.set(a({}, e, n.target[t])) }, render: function() { var e = A.default.createElement("section", { __source: { fileName: r, lineNumber: 35 } }, A.default.createElement("h2", { __source: { fileName: r, lineNumber: 36 } }, (0, g.default)("Address Bar")), A.default.createElement("div", { className: "setting-group unlimited", __source: { fileName: r, lineNumber: 38 } }, A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 39 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 40 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.SHOW_ADDRESS_BAR, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_ADDRESS_BAR", "checked"), __source: { fileName: r, lineNumber: 41 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 45 } }, (0, g.default)("Show Address Bar"))))), A.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 50 } }, A.default.createElement("h3", { __source: { fileName: r, lineNumber: 51 } }, (0, g.default)("Address Bar Position")), A.default.createElement(c.default, { name: "addressbar-position", value: this.state.ADDRESS_BAR_POSITION, ref: "addressPositionGroup", onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_POSITION", "value"), className: "group", __source: { fileName: r, lineNumber: 52 } }, A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 58 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 59 } }, A.default.createElement("input", { type: "radio", value: "top", __source: { fileName: r, lineNumber: 60 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 61 } }, (0, g.default)("Top")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 64 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 65 } }, A.default.createElement("input", { type: "radio", value: "bottom", __source: { fileName: r, lineNumber: 66 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 67 } }, (0, g.default)("Bottom")))))), A.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 73 } }, A.default.createElement("h3", { __source: { fileName: r, lineNumber: 74 } }, (0, g.default)("Address Bar Options")), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 75 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 76 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.SHOW_FFW_RWD_BUTTONS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_FFW_RWD_BUTTONS", "checked"), __source: { fileName: r, lineNumber: 77 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 81 } }, (0, g.default)("Fast Forward and Rewind")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 84 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 85 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_SHOW_FULL_URL, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_SHOW_FULL_URL", "checked"), __source: { fileName: r, lineNumber: 86 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 90 } }, (0, g.default)("Show Full Address")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 93 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 94 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_OMNIDROPDOWN_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_OMNIDROPDOWN_ENABLED", "checked"), __source: { fileName: r, lineNumber: 95 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 99 } }, (0, g.default)("Show Address Popup Menu when Typing")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 102 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 103 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_SELECT_ON_CLICK, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_SELECT_ON_CLICK", "checked"), __source: { fileName: r, lineNumber: 104 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 108 } }, (0, g.default)("Select Address on Click")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 111 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 112 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_SHOW_PROGRESS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_SHOW_PROGRESS", "checked"), __source: { fileName: r, lineNumber: 113 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 117 } }, (0, g.default)("Page Loading Progress Bar")))), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 121 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 122 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_CUTCOPY_ENCODED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_CUTCOPY_ENCODED", "checked"), __source: { fileName: r, lineNumber: 123 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 127 } }, (0, g.default)("Cut and Copy Encoded"))))), A.default.createElement(o.default, { value: this.state.ADDRESS_BAR_URL_OPEN_SHORTCUT, __source: { fileName: r, lineNumber: 132 } }), A.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 134 } }, A.default.createElement("h3", { __source: { fileName: r, lineNumber: 135 } }, (0, g.default)("Address Auto-Complete")), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 136 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 137 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_AUTOCOMPLETE_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_AUTOCOMPLETE_ENABLED", "checked"), __source: { fileName: r, lineNumber: 138 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 142 } }, (0, g.default)("Enabled")))), A.default.createElement("div", { className: "setting-single pad-left", __source: { fileName: r, lineNumber: 145 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 146 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS, disabled: !this.state.ADDRESS_BAR_AUTOCOMPLETE_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS", "checked"), __source: { fileName: r, lineNumber: 147 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 152 } }, (0, g.default)("Always Prefer Bookmarks"))))), A.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 157 } }, A.default.createElement("h3", { __source: { fileName: r, lineNumber: 158 } }, (0, g.default)("Domain Expansion")), A.default.createElement("p", { className: "info pad-top", __source: { fileName: r, lineNumber: 159 } }, (0, g.default)("Top level domain to expand with Ctrl + Enter keys")), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 162 } }, A.default.createElement("label", { __source: { fileName: r, lineNumber: 163 } }, A.default.createElement("input", { type: "text", defaultValue: this.state.ADDRESS_BAR_AUTOCOMPLETE_TLD, maxLength: "24", placeholder: "com", onBlur: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_AUTOCOMPLETE_TLD", "value"), __source: { fileName: r, lineNumber: 164 } })))), A.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 173 } }, A.default.createElement("h3", { __source: { fileName: r, lineNumber: 174 } }, (0, g.default)("Extensions")), A.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 175 } }, A.default.createElement("label", { title: (0, g.default)("Show toggle button to hide or reveal extension buttons"), __source: { fileName: r, lineNumber: 176 } }, A.default.createElement("input", { type: "checkbox", checked: this.state.EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED", "checked"), __source: { fileName: r, lineNumber: 178 } }), A.default.createElement("span", { __source: { fileName: r, lineNumber: 182 } }, (0, g.default)("Extensions Toggle")))))); return (0, v.default)(e, this.props.filter) } }); e.exports = b }, function(e, t, n) { // ========================= // Function_653 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { var n = t.target.value; n !== e && A.default.set({ ADDRESS_BAR_URL_OPEN_SHORTCUT: n }) } Object.defineProperty(t, "__esModule", { value: !0 }); var r = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/addressbar/AddressBarShortcuts.jsx"; t.default = function(e) { var t = e.value; return c.default.createElement("div", { className: "setting-group", __source: { fileName: r, lineNumber: 17 } }, c.default.createElement("h3", { __source: { fileName: r, lineNumber: 18 } }, (0, h.default)("Open Address in New Tab")), c.default.createElement(o.default, { name: "urlfieldShortcut", className: "setting-single", value: t, onChange: (0, p.default)(a, t), __source: { fileName: r, lineNumber: 20 } }, c.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 24 } }, c.default.createElement("label", { __source: { fileName: r, lineNumber: 25 } }, c.default.createElement("input", { type: "radio", value: "alt", __source: { fileName: r, lineNumber: 26 } }), c.default.createElement("span", { __source: { fileName: r, lineNumber: 27 } }, "MacIntel" === navigator.platform ? "Option" : "Alt", " + Enter"))), c.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 35 } }, c.default.createElement("label", { __source: { fileName: r, lineNumber: 36 } }, c.default.createElement("input", { type: "radio", value: "shift", __source: { fileName: r, lineNumber: 37 } }), c.default.createElement("span", { __source: { fileName: r, lineNumber: 38 } }, "Shift + Enter"))))) }; var s = n(41), o = i(s), l = n(1), c = i(l), u = n(3), A = i(u), d = n(2), h = i(d), m = n(302), p = i(m) }, function(e, t, n) { // ========================= // Function_654 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/biscuit/biscuitMode.jsx", r = n(1), s = n(3), o = n(2), l = n(13), c = r.createClass({ displayName: "BiscuitSettings", mixins: [l], vivaldiSettingsKeys: ["USE_BISCUIT_MODE"], saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, render: function() { return "🐶" !== this.props.filter ? null : r.createElement("span", { __source: { fileName: a, lineNumber: 22 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 23 } }, "Biscuit Area 🐶"), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 24 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 25 } }, "Biscuit Mode"), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 26 } }, r.createElement("label", { title: o("Woof!"), __source: { fileName: a, lineNumber: 27 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_BISCUIT_MODE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_BISCUIT_MODE", "checked"), __source: { fileName: a, lineNumber: 29 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 33 } }, o("Enable")))))) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_655 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/bookmarks/bookmarkSettings.jsx", r = n(1), s = n(3), o = n(2), l = n(13), c = n(12), u = r.createClass({ displayName: "BookmarkSettings", mixins: [l], vivaldiSettingsKeys: ["BOOKMARKS_OPEN_IN_NEW_TAB", "BOOKMARKS_CONFIRM_BEFORE_OPEN", "BOOKMARKS_CONFIRM_THRESHOLD", "BOOKMARKS_SINGLE_CLICK_IN_TREE"], minTreshold: 1, maxTreshold: 99, saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, onThresholdChanged: function(e) { var t = e.target.value; t && t % 1 === 0 && t >= this.minTreshold && t <= this.maxTreshold && s.set({ BOOKMARKS_CONFIRM_THRESHOLD: e.target.value }) }, render: function() { var e = r.createElement("span", { __source: { fileName: a, lineNumber: 33 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 34 } }, o("Bookmarks")), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 35 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 36 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 37 } }, r.createElement("input", { type: "checkbox", checked: this.state.BOOKMARKS_OPEN_IN_NEW_TAB, onChange: this.saveVivaldiSettingFromEvent.bind(this, "BOOKMARKS_OPEN_IN_NEW_TAB", "checked"), __source: { fileName: a, lineNumber: 38 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 43 } }, o("Open Bookmarks in New Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 46 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 47 } }, r.createElement("input", { type: "checkbox", checked: this.state.BOOKMARKS_SINGLE_CLICK_IN_TREE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "BOOKMARKS_SINGLE_CLICK_IN_TREE", "checked"), __source: { fileName: a, lineNumber: 48 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 52 } }, o("Open Bookmark Panel Items with Single Click")))), r.createElement("div", { className: "setting-single max-bookmarks", __source: { fileName: a, lineNumber: 55 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 56 } }, r.createElement("input", { type: "checkbox", checked: this.state.BOOKMARKS_CONFIRM_BEFORE_OPEN, onChange: this.saveVivaldiSettingFromEvent.bind(this, "BOOKMARKS_CONFIRM_BEFORE_OPEN", "checked"), __source: { fileName: a, lineNumber: 57 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 63 } }, o("Confirm Opening Bookmarks over Maximum of")), r.createElement("input", { type: "number", disabled: !this.state.BOOKMARKS_CONFIRM_BEFORE_OPEN, defaultValue: this.state.BOOKMARKS_CONFIRM_THRESHOLD, onChange: this.onThresholdChanged, min: this.minTreshold, max: this.maxTreshold, __source: { fileName: a, lineNumber: 64 } }))))); return c(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_656 // ========================= "use strict"; var i = n(6), a = n(2), r = function(e) { switch (e) { case i.CATEGORY_COMMAND_APPLICATION: return "MacIntel" === navigator.platform ? a("mac", "Window") : a("win_linux", "Window"); case i.CATEGORY_COMMAND_APPEARANCE: return "MacIntel" === navigator.platform ? a("mac", "View") : a("win_linux", "View"); case i.CATEGORY_COMMAND_TAB_ACTION: return a("Tab"); case i.CATEGORY_COMMAND_WEBPAGE_NAVIGATION: return a("Page"); case i.CATEGORY_COMMAND_MAIL: return a("Mail"); default: return "Unknown" } }; e.exports = r }, function(e, t, n) { // ========================= // Function_657 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/cookies/cookieItem.jsx", a = n(1), r = n(4), s = n(183), o = n(2), l = a.createClass({ displayName: "CookieItem", getInitialState: function() { return { viewCookies: !1, viewInfo: !1 } }, deleteCookie: function(e) { var t = this, n = Boolean(this.state.viewInfo); n ? (this.removeChromeEntry(this.state.viewInfo), this.setState({ viewCookies: Boolean(this.props.count > 1), viewInfo: !1 })) : (this.props.item.map(function(e) { return t.removeChromeEntry(e) }), this.setState({ viewCookies: !1, viewInfo: !1 })), e.stopPropagation() }, removeChromeEntry: function(e) { var t = "http" + (e.secure ? "s" : "") + "://", n = t + e.domain + e.path, i = { url: n, name: e.name }; r.cookies.remove(i, function(e) { this.props.onCookieDelete(e) }.bind(this)) }, showDetail: function() { this.setState({ viewCookies: !this.state.viewCookies, viewInfo: this.state.viewCookies !== !0 && this.state.viewInfo }) }, showInfo: function(e) { this.setState({ viewInfo: e }) }, renderCookies: function() { var e = this; return this.props.item.map(function(t) { return a.createElement("a", { tabIndex: "0", key: "cookie-" + t.name.toLowerCase(), onFocus: e.showInfo.bind(e, t), __source: { fileName: i, lineNumber: 61 } }, t.name) }) }, renderInfo: function() { return a.createElement("dl", { __source: { fileName: i, lineNumber: 71 } }, a.createElement("dt", { __source: { fileName: i, lineNumber: 72 } }, o("Expires:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 73 } }, s.date("Y/n/j H:i", this.state.viewInfo.expirationDate)), a.createElement("dt", { __source: { fileName: i, lineNumber: 75 } }, o("Path:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 76 } }, this.state.viewInfo.path), a.createElement("dt", { __source: { fileName: i, lineNumber: 77 } }, o("Host Only:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 78 } }, this.state.viewInfo.hostOnly.toString()), a.createElement("dt", { __source: { fileName: i, lineNumber: 79 } }, o("HTTP Only:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 80 } }, this.state.viewInfo.httpOnly.toString()), a.createElement("dt", { __source: { fileName: i, lineNumber: 81 } }, o("Session:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 82 } }, this.state.viewInfo.session.toString()), a.createElement("dt", { __source: { fileName: i, lineNumber: 83 } }, o("Secure:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 84 } }, this.state.viewInfo.secure.toString()), a.createElement("dt", { __source: { fileName: i, lineNumber: 85 } }, o("Value:")), a.createElement("dd", { __source: { fileName: i, lineNumber: 86 } }, this.state.viewInfo.value)) }, render: function() { return a.createElement("li", { __source: { fileName: i, lineNumber: 93 } }, a.createElement("div", { className: "overview", onClick: this.showDetail, __source: { fileName: i, lineNumber: 94 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(313) }, __source: { fileName: i, lineNumber: 95 } }), this.props.domain, !this.state.viewCookies && a.createElement("span", { className: "count", __source: { fileName: i, lineNumber: 99 } }, this.props.count), a.createElement("span", { className: "controls", __source: { fileName: i, lineNumber: 101 } }, a.createElement("input", { type: "button", className: "circular clearkey", title: o(this.state.viewInfo ? "Delete selected cookie" : "Delete cookies"), onClick: this.deleteCookie, __source: { fileName: i, lineNumber: 102 } }))), this.state.viewCookies && a.createElement("div", { className: "detail", __source: { fileName: i, lineNumber: 110 } }, this.renderCookies(), this.state.viewInfo && a.createElement("div", { className: "info", __source: { fileName: i, lineNumber: 113 } }, this.renderInfo()))) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_658 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/cookies/cookieManagerDlg.jsx", a = n(1), r = n(366), s = n(34), o = a.createClass({ displayName: "CookieManagerDialog", handleClick: function() { var e = { dialogText: this.state.value }; this.state.shown && this.props.onCloseBM(e), this.setState({ shown: !this.state.shown }) }, getInitialState: function() { return { msg: "", shown: !0, modalShown: !1 } }, getLayeredComponentRootNode: function() { return this.props.parentDiv }, componentWillReceiveProps: function(e) { this.setState({ shown: !0 }) }, render: function() { return a.createElement(s, { onRequestClose: this.handleClick, dialogWidth: 600, __source: { fileName: i, lineNumber: 29 } }, a.createElement(r, { onClose: this.handleClick, __source: { fileName: i, lineNumber: 30 } })) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_659 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/cookies/cookieSettings.jsx", a = n(1), r = n(10), s = n(41), o = n(2), l = n(12), c = a.createClass({ displayName: "CookieSettings", getInitialState: function() { return { cookieSetting: "", blockThirdParty: null } }, componentWillMount: function() { var e = this; r.importData.getDefaultContentSettings("cookies", function(t) { e.setState({ cookieSetting: t }) }), r.importData.getBlockThirdPartyCookies(function(t) { e.setState({ blockThirdParty: t }) }) }, checkChange: function(e) { var t = e.target.checked; r.importData.setBlockThirdPartyCookies(t, function(e) {}.bind(this)), this.setState({ blockThirdParty: t }) }, handleChange: function(e) { var t = e.target.value; this.setState({ cookieSetting: t }), r.importData.setDefaultContentSettings("cookies", t, function(e) {}) }, showCookieManager: function() { this.props.showCookieManager() }, render: function() { var e = a.createElement("span", { __source: { fileName: i, lineNumber: 48 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 50 } }, o("Cookies")), a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 52 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 53 } }, o("Accept Cookies")), a.createElement(s, { className: "cookieSelection", name: "cookieSelGroup", ref: "cookieSelGroup", value: this.state.cookieSetting, onChange: this.handleChange, __source: { fileName: i, lineNumber: 55 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 60 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 61 } }, a.createElement("input", { type: "radio", value: "allow", __source: { fileName: i, lineNumber: 62 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 63 } }, o("All")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 66 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 67 } }, a.createElement("input", { type: "radio", value: "session_only", __source: { fileName: i, lineNumber: 68 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 69 } }, o("Session Only")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 72 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 73 } }, a.createElement("input", { type: "radio", value: "block", __source: { fileName: i, lineNumber: 74 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 75 } }, o("Never")))))), a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 81 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 82 } }, o("Third-Party Cookies")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 84 } }, a.createElement("label", { title: o("Block Third-Party Cookies"), __source: { fileName: i, lineNumber: 85 } }, null !== this.state.blockThirdParty && a.createElement("input", { type: "checkbox", checked: this.state.blockThirdParty, onChange: this.checkChange, __source: { fileName: i, lineNumber: 87 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 91 } }, o("Block Third-Party Cookies")))))); return l(e, this.props.filter) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_660 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/defaultGlobalZoom/defaultGlobalZoom.jsx", r = n(1), s = n(3), o = n(25), l = n(72), c = n(12), u = n(243), A = n(10), d = n(2), h = [l.kVivaldiTabZoom, "MOUSE_WHEEL_PAGE_ZOOM"], m = r.createClass({ displayName: "DefaultGlobalZoom", getInitialState: function() { return { defaultGlobalZoom: 1 } }, componentWillMount: function() { var e = this; A.zoom.getDefaultZoom(function(t) { e.setState({ defaultGlobalZoom: t }) }), A.zoom.onDefaultZoomChanged.addListener(this.updateLocalState) }, componentWillUnmount: function() { A.zoom.onDefaultZoomChanged.removeListener(this.updateLocalState) }, updateLocalState: function(e) { this.setState({ defaultGlobalZoom: e }) }, saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, handleZoomUpdated: function(e) { A.zoom.setDefaultZoom(e) }, onZoomModeChange: function(e) { var t = e.target.checked, n = { preferenceKey: l.kVivaldiTabZoom, preferenceValue: { boolean: t }, preferenceType: "boolean" }; A.settings.setPreference(n) }, render: function() { var e = r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 63 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 64 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 65 } }, d("Default Webpage Zoom")), r.createElement("div", { id: "zoom_control", __source: { fileName: a, lineNumber: 66 } }, r.createElement(u, { ref: "zoomslider", maxLevel: 2, minLevel: .5, step: .05, initialZoom: this.state.defaultGlobalZoom, onZoomUpdated: this.handleZoomUpdated, __source: { fileName: a, lineNumber: 67 } }))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 76 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 77 } }, r.createElement("input", { type: "checkbox", checked: this.props.vivaldiSettings.MOUSE_WHEEL_PAGE_ZOOM, onChange: this.saveVivaldiSettingFromEvent.bind(this, "MOUSE_WHEEL_PAGE_ZOOM", "checked"), __source: { fileName: a, lineNumber: 78 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 82 } }, d("Use $1+Scroll to Zoom Page", ["MacIntel" === navigator.platform ? "⌘" : "CTRL"])))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 86 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 87 } }, r.createElement("input", { type: "checkbox", checked: this.props.vivaldiSettings[l.kVivaldiTabZoom], onChange: this.onZoomModeChange, __source: { fileName: a, lineNumber: 88 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 91 } }, d("Use Tab Zoom"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 93 } }, d("Retain zoom level when navigating between websites")))); return c(e, this.props.filter) } }); e.exports = o(m, h) }, function(e, t, n) { // ========================= // Function_661 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/downloads/downloads.jsx", r = n(1), s = n(10), o = n(2), l = n(12), c = n(3), u = n(13), A = r.createClass({ displayName: "DownloadSettings", mixins: [u], vivaldiSettingsKeys: ["AUTOMATICALLY_DOWNLOAD_FILES", "SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS", "DOWNLOAD_NOTIFICATIONS"], getInitialState: function() { return { defaultDir: c.getSync("download.default_directory") } }, saveVivaldiSettingFromEvent: function(e, t, n) { c.set(i({}, e, n.target[t])) }, handleDownloadDirectoryChange: function(e) { var t = e.target.value; this.setState({ defaultDir: t }); var n = { preferenceKey: "download.default_directory", preferenceValue: { string: t }, preferenceType: "string" }; s.settings.setPreference(n) }, render: function() { var e = r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 40 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 41 } }, o("Downloads")), r.createElement("div", { className: "setting-subgroup", __source: { fileName: a, lineNumber: 42 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 43 } }, o("Download Location")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 44 } }, r.createElement("input", { type: "text", value: this.state.defaultDir, title: o("Enter default download directory path"), onChange: this.handleDownloadDirectoryChange, __source: { fileName: a, lineNumber: 45 } })), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 50 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 51 } }, r.createElement("input", { type: "checkbox", checked: this.state.AUTOMATICALLY_DOWNLOAD_FILES, onChange: this.saveVivaldiSettingFromEvent.bind(this, "AUTOMATICALLY_DOWNLOAD_FILES", "checked"), __source: { fileName: a, lineNumber: 52 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 56 } }, o("Always Save Files to Default Download Location")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 59 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 60 } }, r.createElement("input", { type: "checkbox", checked: this.state.SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS", "checked"), __source: { fileName: a, lineNumber: 61 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 65 } }, o("Open Download Panel Automatically")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 68 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 69 } }, r.createElement("input", { type: "checkbox", checked: this.state.DOWNLOAD_NOTIFICATIONS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "DOWNLOAD_NOTIFICATIONS", "checked"), __source: { fileName: a, lineNumber: 70 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 74 } }, o("Notify on Completed Downloads")))))); return l(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_662 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/fonts/fonts.jsx", r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, s = n(1), o = n(10), l = n(25), c = n(2), u = n(12), A = n(4), d = n(69), h = 9, m = 2, p = 99, f = "webkit.webprefs.minimum_font_size", g = "webkit.webprefs.fonts.standard.Zyyy", _ = "webkit.webprefs.fonts.fixed.Zyyy", v = "webkit.webprefs.fonts.serif.Zyyy", b = "webkit.webprefs.fonts.sansserif.Zyyy", N = "webkit.webprefs.fonts.cursive.Zyyy", E = "webkit.webprefs.fonts.fantasy.Zyyy", S = { standard: { localizedFamily: c("Standard") }, sansserif: { localizedFamily: c("Sans-serif") }, serif: { localizedFamily: c("Serif") }, fixed: { localizedFamily: c("Monospaced") }, cursive: { localizedFamily: c("Cursive") }, fantasy: { localizedFamily: c("Fantasy") } }, T = [f], y = s.createClass({ displayName: "Fonts", getInitialState: function() { return { fontList: [], fonts: {} } }, componentWillMount: function() { var e = this; A.fontSettings.onFontChanged.addListener(function(t) { var n = d(e.state, { fonts: { $merge: i({}, t.genericFamily, { font: t.fontId, localizedFamily: S[t.genericFamily].localizedFamily }) } }); e.setState(n) }), A.fontSettings.getFontList(function(t) { e.setState({ fontList: t }) }), this.mapObject(S, function(t, n) { A.fontSettings.getFont({ genericFamily: t }, function(a) { var r = d(e.state, { fonts: { $merge: i({}, t, { font: a.fontId, localizedFamily: n.localizedFamily }) } }); e.setState(r) }) }) }, mapObject: function(e, t) { return Object.keys(e).map(function(n) { return t(n, e[n]) }) }, handleFontSizeSetting: function(e) { var t = e.target.checked; t ? this.handleFontSizeChanged(h, !0) : this.handleFontSizeChanged(0, !0) }, handleFontSizeChanged: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], n = void 0; if (n = "object" === ("undefined" == typeof e ? "undefined" : r(e)) ? e.target.value : e, "number" == typeof parseInt(n) && (!t && n >= m && n <= p || t)) { var i = { preferenceKey: f, preferenceValue: { integer: parseInt(n) }, preferenceType: "integer" }; o.settings.setPreference(i) } }, changeHandler: function(e, t) { var n = g; switch (e) { case "standard": n = g; break; case "fantasy": n = E; break; case "fixed": n = _; break; case "sansserif": n = b; break; case "serif": n = v; break; case "cursive": n = N } var i = { preferenceKey: n, preferenceValue: { string: t.target.value }, preferenceType: "string" }; o.settings.setPreference(i) }, renderOptions: function() { var e = parseInt(this.props.vivaldiSettings[f]), t = [9, 10, 11, 12, 14, 16, 18, 24]; return t.indexOf(e) === -1 && (t.push(e), t = t.sort(function(e, t) { return e - t })), t.map(function(e) { return s.createElement("option", { key: e, __source: { fileName: a, lineNumber: 159 } }, e) }) }, render: function() { var e = this, t = this.props.vivaldiSettings[f], n = this.state.fontList.map(function(e) { return s.createElement("option", { key: e.fontId, value: e.fontId, __source: { fileName: a, lineNumber: 165 } }, e.displayName) }), i = s.createElement("div", { className: "setting-group unlimited font-slider", __source: { fileName: a, lineNumber: 169 } }, s.createElement("h2", { __source: { fileName: a, lineNumber: 170 } }, c("Fonts")), s.createElement("div", { className: "setting-double", __source: { fileName: a, lineNumber: 171 } }, s.createElement("h3", { __source: { fileName: a, lineNumber: 172 } }, c("Minimum Font Size")), s.createElement("label", { __source: { fileName: a, lineNumber: 173 } }, s.createElement("input", { type: "checkbox", onChange: this.handleFontSizeSetting, checked: 0 !== t, __source: { fileName: a, lineNumber: 174 } }), s.createElement("span", { __source: { fileName: a, lineNumber: 178 } }, c("Limit minimum font size to")), s.createElement("span", { className: "fake-dataset", __source: { fileName: a, lineNumber: 179 } }, s.createElement("input", { type: "text", value: 0 === t ? h : t, onChange: this.handleFontSizeChanged, disabled: 0 === t, __source: { fileName: a, lineNumber: 180 } }), s.createElement("select", { value: t, onChange: this.handleFontSizeChanged, disabled: 0 === t, __source: { fileName: a, lineNumber: 185 } }, this.renderOptions())))), s.createElement("div", { className: "setting-single pad-top font-face-list", __source: { fileName: a, lineNumber: 194 } }, s.createElement("h3", { __source: { fileName: a, lineNumber: 195 } }, c("Default Fonts")), this.mapObject(this.state.fonts, function(t, i) { return s.createElement("label", { key: t, __source: { fileName: a, lineNumber: 198 } }, s.createElement("span", { __source: { fileName: a, lineNumber: 199 } }, i.localizedFamily), s.createElement("select", { onChange: e.changeHandler.bind(e, t), value: i.font, __source: { fileName: a, lineNumber: 200 } }, n)) }))); return u(i, this.props.filter) } }); e.exports = l(y, T) }, function(e, t, n) { // ========================= // Function_663 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/history/HistorySetting.jsx", a = n(1), r = n(4), s = n(12), o = n(10), l = n(2), c = n(72), u = n(3), A = a.createClass({ displayName: "HistorySetting", getInitialState: function() { return { numberOfDaysToKeepVisits: u.getSync(c.kVivaldiNumberOfDaysToKeepVisits), updating: !1 } }, saveSetting: function(e) { var t = parseInt(e.target.value), n = { preferenceKey: c.kVivaldiNumberOfDaysToKeepVisits, preferenceValue: { integer: t }, preferenceType: "integer" }; o.settings.setPreference(n), r.runtime.lastError && console.warn("Error storing home page: " + r.runtime.lastError), this.setState({ numberOfDaysToKeepVisits: t, updating: !1 }) }, render: function() { var e = a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 38 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 39 } }, l("other", "Save Browsing History")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 40 } }, a.createElement("select", { onChange: this.saveSetting, value: this.state.numberOfDaysToKeepVisits, __source: { fileName: i, lineNumber: 41 } }, a.createElement("option", { value: "1", __source: { fileName: i, lineNumber: 44 } }, l("One Day")), a.createElement("option", { value: "7", __source: { fileName: i, lineNumber: 45 } }, l("One Week")), a.createElement("option", { value: "31", __source: { fileName: i, lineNumber: 46 } }, l("One Month")), a.createElement("option", { value: "90", __source: { fileName: i, lineNumber: 47 } }, l("Three Months")), a.createElement("option", { value: "178", __source: { fileName: i, lineNumber: 48 } }, l("Six Months")), a.createElement("option", { value: "356", __source: { fileName: i, lineNumber: 49 } }, l("One Year")), a.createElement("option", { value: "3560", __source: { fileName: i, lineNumber: 50 } }, l("Forever"))))); return s(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_664 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/keyboardShortcuts/FullKeyAccess.jsx", r = n(1), s = n(2), o = n(12), l = n(41), c = n(3), u = n(13), A = n(10), d = r.createClass({ displayName: "FullKeyAccess", mixins: [u], vivaldiSettingsKeys: ["KEY_ACCESS", "KEY_ACCESS_OS_DEFAULT", "FOCUS_CYCLE_TRAP"], getInitialState: function() { return { macKeyUIMode: null } }, componentWillMount: function() { var e = this; "MacIntel" === navigator.platform && A.settings.getPreference("vivaldi.apple_keyboard_ui_mode", function(t) { e.setState({ macKeyUIMode: t.preferenceValue.number }) }) }, saveVivaldiSettingFromEvent: function(e, t, n) { c.set(i({}, e, n.target[t])) }, handleDarwinKeyAccess: function(e) { var t = e.target.checked; t || "-1" === this.state.KEY_ACCESS ? t && 2 === this.state.macKeyUIMode && "0" !== this.state.KEY_ACCESS ? c.set({ KEY_ACCESS: "0" }) : t && 0 === this.state.macKeyUIMode && "-1" !== this.state.KEY_ACCESS && c.set({ KEY_ACCESS: "-1" }) : c.set({ KEY_ACCESS: "-1" }), c.set({ KEY_ACCESS_OS_DEFAULT: t }) }, render: function() { var e = r.createElement("div", { __source: { fileName: a, lineNumber: 59 } }, r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 60 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 61 } }, s("Full Keyboard Access")), "MacIntel" === navigator.platform && r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 64 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 65 } }, r.createElement("input", { type: "checkbox", checked: this.state.KEY_ACCESS_OS_DEFAULT, onChange: this.handleDarwinKeyAccess, __source: { fileName: a, lineNumber: 66 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 69 } }, s("Inherit from System Preferences")))), r.createElement(l, { name: "keyAccessSetting", ref: "keyAccessGroup", className: "setting-single", value: this.state.KEY_ACCESS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "KEY_ACCESS", "value"), __source: { fileName: a, lineNumber: 74 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 80 } }, r.createElement("input", { type: "radio", value: "0", disabled: this.state.KEY_ACCESS_OS_DEFAULT, __source: { fileName: a, lineNumber: 81 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 83 } }, s("Focus All Controls"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 85 } }, s("Press TAB key to focus all controls")), r.createElement("label", { __source: { fileName: a, lineNumber: 89 } }, r.createElement("input", { type: "radio", value: "-1", disabled: this.state.KEY_ACCESS_OS_DEFAULT, __source: { fileName: a, lineNumber: 90 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 92 } }, s("Focus Input"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 94 } }, s("Press TAB key to focus text boxes and lists only")))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 100 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 101 } }, s("Toolbar Focus Cycling")), r.createElement(l, { name: "toolbarFocusCycling", ref: "keyAccessGroup", className: "setting-single", value: this.state.FOCUS_CYCLE_TRAP, onChange: this.saveVivaldiSettingFromEvent.bind(this, "FOCUS_CYCLE_TRAP", "value"), __source: { fileName: a, lineNumber: 102 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 108 } }, r.createElement("input", { type: "radio", value: !0, __source: { fileName: a, lineNumber: 109 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 110 } }, s("Cycle in Component"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 112 } }, s("TAB key focus is bound to individual toolbars or webpage")), r.createElement("label", { __source: { fileName: a, lineNumber: 115 } }, r.createElement("input", { type: "radio", value: !1, __source: { fileName: a, lineNumber: 116 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 117 } }, s("Cycle All"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 119 } }, s("TAB key focus cycles through whole application"))))); return o(e, this.props.filter) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_665 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/keyboardShortcuts/configureSingleKeyShortcuts.jsx", r = n(1), s = n(2), o = n(12), l = n(3), c = n(13), u = r.createClass({ displayName: "ConfigureSingleKeyShortcut", mixins: [c], vivaldiSettingsKeys: ["DISABLE_SINGLE_KEY_SHORTCUTS", "DISABLE_KEYBOARD_SHORTCUTS"], saveReversedVivaldiSettingFromEvent: function(e, t, n) { l.set(i({}, e, !n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 23 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 24 } }, s("Keyboard Shortcuts")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 26 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 27 } }, r.createElement("input", { type: "checkbox", checked: !this.state.DISABLE_KEYBOARD_SHORTCUTS, onChange: this.saveReversedVivaldiSettingFromEvent.bind(this, "DISABLE_KEYBOARD_SHORTCUTS", "checked"), __source: { fileName: a, lineNumber: 28 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 32 } }, s("Allow All Keyboard Shortcuts")))), r.createElement("div", { className: "setting-single pad-left", __source: { fileName: a, lineNumber: 35 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 36 } }, r.createElement("input", { type: "checkbox", checked: !this.state.DISABLE_SINGLE_KEY_SHORTCUTS, onChange: this.saveReversedVivaldiSettingFromEvent.bind(this, "DISABLE_SINGLE_KEY_SHORTCUTS", "checked"), disabled: this.state.DISABLE_KEYBOARD_SHORTCUTS, __source: { fileName: a, lineNumber: 37 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 42 } }, s("Single Key Shortcuts"))))); return o(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_666 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/languageSetting.jsx", a = n(1), r = n(4), s = n(10), o = n(34), l = n(2), c = n(12), u = a.createClass({ displayName: "LanguageSetting", getInitialState: function() { return { initialLanguage: r.i18n.getUILanguage(), language: r.i18n.getUILanguage(), confirmation: !1 } }, componentWillMount: function() { this.locales = [{ key: "ar", value: "العربية – " + l("Arabic") }, { key: "be", value: "Беларуская – " + l("Belarusian") }, { key: "bg", value: "български – " + l("Bulgarian") }, { key: "ca", value: "Català – " + l("Catalan") }, { key: "cs", value: "Čeština – " + l("Czech") }, { key: "da", value: "Dansk – " + l("Danish") }, { key: "de", value: "Deutsch – " + l("German") }, { key: "el", value: "Ελληνικά – " + l("Greek") }, { key: "en-US", value: "English – " + l("English") }, { key: "es", value: "Español – " + l("Spanish") }, { key: "es-PE", value: "Español (Perú) – " + l("Spanish (Peru)") }, { key: "et", value: "Eesti keel – " + l("Estonian") }, { key: "eu", value: "Euskara – " + l("Basque") }, { key: "fa", value: "فارسی – " + l("Persian") }, { key: "fi", value: "Suomi – " + l("Finnish") }, { key: "fr", value: "Français – " + l("French") }, { key: "fy", value: "Frysk – " + l("Frisian") }, { key: "gd", value: "Gàidhlig – " + l("Scots Gaelic") }, { key: "gl", value: "Galego – " + l("Galician") }, { key: "hu", value: "Magyar – " + l("Hungarian") }, { key: "hr", value: "Hrvatski – " + l("Croatian") }, { key: "hy", value: "Հայերեն – " + l("Armenian") }, { key: "id", value: "Bahasa Indonesia – " + l("Indonesian") }, { key: "io", value: "Ido – " + l("Ido") }, { key: "is", value: "Íslenska – " + l("Icelandic") }, { key: "it", value: "Italiano – " + l("Italian") }, { key: "ja", value: "日本語 – " + l("Japanese") }, { key: "jbo", value: "lo banjubu'o – " + l("Lojban") }, { key: "ka", value: "ქართული ენა – " + l("Georgian") }, { key: "ko", value: "한국어 – " + l("Korean") }, { key: "ku", value: "کوردی – " + l("Kurdish") }, { key: "lt", value: "Lietuvių – " + l("Lithuanian") }, { key: "lv", value: "Latviešu – " + l("Latvian") }, { key: "mk", value: "Македонски – " + l("Macedonian") }, { key: "nb", value: "Norsk (bokmål) – " + l("Norwegian (Bokmål)") }, { key: "nn", value: "Norsk (nynorsk) – " + l("Norwegian (Nynorsk)") }, { key: "nl", value: "Nederlands – " + l("Dutch") }, { key: "pl", value: "Polski – " + l("Polish") }, { key: "pt-BR", value: "Português (Brasil) – " + l("Portuguese (Brazil)") }, { key: "pt-PT", value: "Português (Europeu) – " + l("Portuguese (Portugal)") }, { key: "ro", value: "Română – " + l("Romanian") }, { key: "ru", value: "Русский – " + l("Russian") }, { key: "sc", value: "Sardu – " + l("Sardinian") }, { key: "sk", value: "Slovenčina – " + l("Slovak") }, { key: "sl", value: "Slovenski – " + l("Slovenian") }, { key: "sq", value: "Shqip – " + l("Albanian") }, { key: "sr", value: "Српски – " + l("Serbian") }, { key: "sv", value: "Svenska – " + l("Swedish") }, { key: "tr", value: "Türkçe – " + l("Turkish") }, { key: "uk", value: "Українська – " + l("Ukrainian") }, { key: "vi", value: "Tiếng Việt – " + l("Vietnamese") }, { key: "zh-CN", value: "简体中文 – " + l("Chinese (Simplified)") }, { key: "zh-TW", value: "正體中文 – " + l("Chinese (Traditional)") }], this.locales.sort(function(e, t) { return e.value.localeCompare(t.value) }) }, langChanged: function(e) { this.setState({ language: e.target.value }) }, saveLanguage: function() { var e = this; s.importData.setVivaldiLanguage(this.state.language, function(t) { e.setState({ initialLanguage: e.state.language, confirmation: !1 }) }) }, confirmLanguageChange: function() { this.setState({ confirmation: !0 }) }, onCancel: function() { this.setState({ confirmation: !1 }) }, keyDownModal: function(e) { 27 === e.keyCode && this.onCancel() }, renderModal: function() { var e = this, t = this.locales.find(function(t) { return t.key === e.state.language }); return a.createElement(o, { dialogWidth: 400, __source: { fileName: i, lineNumber: 113 } }, a.createElement("div", { className: "dialog-restore-shortcuts", __source: { fileName: i, lineNumber: 114 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 115 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 116 } }, l("Save New Language?"))), a.createElement("div", { className: "dialog-content", onKeyDown: this.keyDownModal, __source: { fileName: i, lineNumber: 120 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 121 } }, l("Vivaldi user interface language will be set to:")), a.createElement("p", { __source: { fileName: i, lineNumber: 122 } }, a.createElement("strong", { __source: { fileName: i, lineNumber: 122 } }, t.value)), a.createElement("p", { __source: { fileName: i, lineNumber: 123 } }, l("Browser restart is required for new setting to take effect."))), a.createElement("footer", { className: "dialog-footer", onKeyDown: this.keyDownModal, __source: { fileName: i, lineNumber: 125 } }, a.createElement("input", { type: "button", className: "danger", onClick: this.saveLanguage, value: l("Save Language"), __source: { fileName: i, lineNumber: 126 } }), a.createElement("input", { type: "button", onClick: this.onCancel, value: l("Cancel"), autoFocus: !0, __source: { fileName: i, lineNumber: 130 } })))) }, render: function() { var e = a.createElement("div", { __source: { fileName: i, lineNumber: 142 } }, this.state.confirmation && this.renderModal(), a.createElement("h2", { __source: { fileName: i, lineNumber: 145 } }, l("Language")), a.createElement("form", { className: "setting-group", onSubmit: this.confirmLanguageChange, __source: { fileName: i, lineNumber: 146 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 147 } }, l("Change User Interface Language")), a.createElement("p", { className: "info", __source: { fileName: i, lineNumber: 148 } }, l("This setting requires a restart to take full effect.")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 151 } }, a.createElement("select", { onChange: this.langChanged, value: this.state.language, __source: { fileName: i, lineNumber: 152 } }, this.locales.map(function(e) { return a.createElement("option", { key: e.key, value: e.key, __source: { fileName: i, lineNumber: 156 } }, e.value) })), a.createElement("input", { type: "submit", className: "primary", disabled: this.state.language === this.state.initialLanguage, value: l("Save Language"), __source: { fileName: i, lineNumber: 159 } })))); return c(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_667 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/privacy/privacy.jsx", r = n(1), s = n(10), o = n(2), l = n(12), c = n(3), u = n(25), A = n(15), d = "webrtc.ip_handling_policy", h = ["ADDRESS_BAR_SUGGEST_ENABLED", "DISABLE_DIAGNOSTICS", "SEARCH_FIELD_SUGGEST_ENABLED", "URLBAR_SEARCH_DISABLED", "URLFIELD_TYPED_HISTORY_ENABLED", "SEARCH_FIELD_TYPED_HISTORY_ENABLED", "alternate_error_pages.enabled", "safebrowsing.enabled", "safebrowsing.extended_reporting_enabled", "enable_do_not_track", d], m = r.createClass({ displayName: "Privacy", handleVivaldiSettingsChanged: function(e) { c.set(i({}, e, !this.props.vivaldiSettings[e])) }, toggleChromePrivacyWebRTCChange: function() { var e = "default" !== this.props.vivaldiSettings[d] ? "default" : "disable_non_proxied_udp"; s.settings.setPreference({ preferenceKey: d, preferenceType: "string", preferenceValue: { string: e } }) }, handleSettingsChange: function(e) { s.settings.togglePreference(e) }, openPrivacyPage: function() { A.openURL("https://vivaldi.com/privacy"), event.preventDefault() }, render: function() { var e = this.props.vivaldiSettings, t = "default" === e[d] || "default_public_interface_only" === e[d] || "default_public_and_private_interfaces" === e[d], n = r.createElement("span", { __source: { fileName: a, lineNumber: 63 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 64 } }, o("Privacy")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 66 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 67 } }, o("Third Party Services")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 68 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 69 } }, r.createElement("input", { type: "checkbox", checked: e["safebrowsing.enabled"], onChange: this.handleSettingsChange.bind(this, "safebrowsing.enabled"), __source: { fileName: a, lineNumber: 70 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 74 } }, o("Google Phishing and Malware Protection")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 78 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 79 } }, r.createElement("input", { type: "checkbox", checked: e["safebrowsing.extended_reporting_enabled"], onChange: this.handleSettingsChange.bind(this, "safebrowsing.extended_reporting_enabled"), __source: { fileName: a, lineNumber: 80 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 84 } }, o("Report Safe Browsing Incidents to Google")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 88 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 89 } }, r.createElement("input", { type: "checkbox", checked: !e.URLBAR_SEARCH_DISABLED, onChange: this.handleVivaldiSettingsChanged.bind(this, "URLBAR_SEARCH_DISABLED"), __source: { fileName: a, lineNumber: 90 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 94 } }, o("Search in Address Field")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 98 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 99 } }, r.createElement("input", { type: "checkbox", checked: e.ADDRESS_BAR_SUGGEST_ENABLED, onChange: this.handleVivaldiSettingsChanged.bind(this, "ADDRESS_BAR_SUGGEST_ENABLED"), __source: { fileName: a, lineNumber: 100 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 104 } }, o("Search Suggestions in Address Field")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 108 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 109 } }, r.createElement("input", { type: "checkbox", checked: e.SEARCH_FIELD_SUGGEST_ENABLED, onChange: this.handleVivaldiSettingsChanged.bind(this, "SEARCH_FIELD_SUGGEST_ENABLED"), __source: { fileName: a, lineNumber: 110 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 114 } }, o("Search Suggestions in Search Field"))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 120 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 121 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 122 } }, o("Do Not Track")), r.createElement("label", { __source: { fileName: a, lineNumber: 123 } }, r.createElement("input", { type: "checkbox", checked: e.enable_do_not_track, onChange: this.handleSettingsChange.bind(this, "enable_do_not_track"), __source: { fileName: a, lineNumber: 124 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 128 } }, o("Ask Websites Not to Track Me")))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 132 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 133 } }, o("Vivaldi Diagnostics")), r.createElement("label", { __source: { fileName: a, lineNumber: 134 } }, r.createElement("input", { type: "checkbox", checked: !e.DISABLE_DIAGNOSTICS, onChange: this.handleVivaldiSettingsChanged.bind(this, "DISABLE_DIAGNOSTICS"), __source: { fileName: a, lineNumber: 135 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 139 } }, o("Report Diagnostics"))), r.createElement("p", { className: "info", onClick: this.openPrivacyPage, __source: { fileName: a, lineNumber: 141 } }, o("Help us to improve Vivaldi by providing anonymous usage and\n diagnostics reports. No personal information is transmitted.\n Please refer to Vivaldi Privacy Policy for details."))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 148 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 149 } }, o("Typed History")), r.createElement("label", { __source: { fileName: a, lineNumber: 150 } }, r.createElement("input", { type: "checkbox", checked: e.URLFIELD_TYPED_HISTORY_ENABLED, onChange: this.handleVivaldiSettingsChanged.bind(this, "URLFIELD_TYPED_HISTORY_ENABLED"), __source: { fileName: a, lineNumber: 151 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 155 } }, o("Enable in Addressfield"))), r.createElement("label", { __source: { fileName: a, lineNumber: 158 } }, r.createElement("input", { type: "checkbox", checked: e.SEARCH_FIELD_TYPED_HISTORY_ENABLED, onChange: this.handleVivaldiSettingsChanged.bind(this, "SEARCH_FIELD_TYPED_HISTORY_ENABLED"), __source: { fileName: a, lineNumber: 159 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 163 } }, o("Enable in Searchfield"))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 169 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 170 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 171 } }, o("WebRTC IP Handling")), r.createElement("label", { __source: { fileName: a, lineNumber: 172 } }, r.createElement("input", { ref: "webRTCIPHandlingPolicy", type: "checkbox", checked: t, onChange: this.toggleChromePrivacyWebRTCChange, __source: { fileName: a, lineNumber: 173 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 177 } }, o("Broadcast IP for Best WebRTC Performance")))))); return l(n, this.props.filter) } }); e.exports = u(m, h) }, function(e, t, n) { // ========================= // Function_668 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/quickCommands/quickCommandItem.jsx", a = n(1), r = n(3), s = n(367), o = n(137), l = n(5), c = a.createClass({ displayName: "QuickCommandItem", getInitialState: function() { return { keyValue: this.props.commandObj.command.shortcut } }, cancel: function() { this.props.onCancel() }, saveKey: function(e, t) { var n = {}; n[e] = t, this.setState({ keyValue: t }), r.set(n), this.props.onCancel() }, handleClick: function(e) { this.props.editing || this.props.onExecute(this.props.commandObj), e.stopPropagation(), e.preventDefault() }, mouseOver: function(e) { this.props.onMouseOver(e, this.props.commandObj), e.stopPropagation(), e.preventDefault() }, handleEdit: function(e) {}, render: function() { return a.createElement("li", { "data-selected": this.props.selected ? "" : null, className: l({ "quick-command": !0, editing: this.props.editing }), onClick: this.handleClick, onMouseOver: this.mouseOver, __source: { fileName: i, lineNumber: 49 } }, this.props.commandObj.imageUrl && a.createElement("img", { className: "quick-command-favicon", src: this.props.commandObj.imageUrl, __source: { fileName: i, lineNumber: 57 } }), a.createElement("span", { className: "quick-command-title", __source: { fileName: i, lineNumber: 60 } }, this.props.commandObj.name), "" !== this.props.commandObj.url && a.createElement("span", { className: "quick-command-url", __source: { fileName: i, lineNumber: 64 } }, this.props.commandObj.url), "" !== this.state.keyValue && a.createElement("span", { className: "view quick-command-meta", onClick: "command" === this.props.commandObj.type ? this.handleEdit : null, __source: { fileName: i, lineNumber: 69 } }, o(this.state.keyValue)), "" !== this.props.commandObj.meta && a.createElement("span", { className: "view quick-command-meta", __source: { fileName: i, lineNumber: 76 } }, this.props.commandObj.meta), this.props.editing && a.createElement(s, { setFocus: !0, command: this.props.commandObj, editing: this.props.editing, onCancel: this.cancel, onSave: this.saveKey, key: this.props.commandObj.key, __source: { fileName: i, lineNumber: 81 } })) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_669 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/quickCommands/quickCommandSearch.jsx", a = n(1), r = n(11), s = n(40), o = n(51), l = n(73), c = n(94), u = n(52), A = n(25), d = n(45), h = n(572), m = n(15), p = n(668), f = n(574), g = n(2), _ = n(4), v = n(46), b = v.ensureURLProtocol, N = v.isUrlNavigable, E = n(20), S = E.urls, T = n(7), y = g("Filter Quick Commands"), C = ["SEARCH_ENGINES", "DEFAULT_SEARCH_ENGINE", "QUICK_COMMAND_OPEN_URL_IN_NEW_TAB", "QC_LAUNCH_BOOKMARK_ON_NICK_MATCH"], I = a.createClass({ displayName: "QuickCommandSearch", mixins: [h, f], mouseX: 0, mouseY: 0, getInitialState: function() { return { quickCommandSearchValue: "", typeAheadHint: y, selected: "", editingCommandId: null, bookmarkCache: [], bookmarkNicks: [], bookmarkFolders: [], historyArr: [], currentSearchEngine: null, openTabs: [] } }, componentWillMount: function() { var e = this; this.setMultiSelectInMixin(!1), this.setState({ bookmarkCache: o.getBookmarksRootNode() }), _.tabs.query({ windowType: "normal" }, function(t) { t.forEach(function(e) { e.type = "openTab", e.command = l.tabToPage(e) }), e.setState({ openTabs: t }), t.length > 0 && e.selectById(t[0].id) }) }, componentDidUpdate: function(e, t) { if (t.quickCommandSearchValue !== this.state.quickCommandSearchValue && "/." === this.state.quickCommandSearchValue) return m.newPage("http://slashdot.org/"), void this.props.onClose() }, componentWillUnmount: function() { this.KeyboardNavigationMixinOnBlur() }, componentWillUpdate: function(e, t) { this.state.navigationModel.clear() }, onCancel: function() { this.setState({ editingCommandId: null }), this.KeyboardNavigationMixinOnFocus(), this.refs.quickCommand.focus() }, onQuickCommandSearchKeyDown: function(e) { e.keyCode === d.KEY_ESCAPE && (e.stopPropagation(), e.preventDefault()) }, onQuickCommandSearchKeyUp: function(e) { if (this.setState({ editingCommandId: null }), e.keyCode === d.KEY_ESCAPE) this.state.quickCommandSearchValue.length > 0 ? this.setState({ quickCommandSearchValue: "", typeAheadHint: y }) : this.props.onClose(), e.stopPropagation(), e.preventDefault(); else if (e.keyCode === d.KEY_RETURN) { var t = this.SelectionMixinGetSelected(); this.executeCommand(this.getCommandByStringId(t)) } }, getCommandByStringId: function(e) { for (var t = this.getActions(), n = 0; n < t.length; n++) if (t[n].id === e) return t[n] }, executeCommand: function(e) { var t = this; if (this.props.onClose(), e && e.hasOwnProperty("type")) if ("openTab" === e.type) _.windows.update(e.command.get("windowId"), { focused: !0 }, function() { _.tabs.update(e.command.get("id"), { active: !0 }) }); else if ("bookmarkNick" === e.type) { var n = { bookmarks: [{ url: e.command.url }], inCurrent: this.props.vivaldiSettings.QUICK_COMMAND_OPEN_URL_IN_NEW_TAB === !1 }; s.open(n, !1) } else if ("url" === e.type) { var i = e.name.trim(); i.toLowerCase().startsWith("javascript:") ? m.openURL(i, { inCurrent: !0 }) : m.openURL(b(i), this.props.vivaldiSettings.QUICK_COMMAND_OPEN_URL_IN_NEW_TAB ? {} : { inCurrent: !0 }) } else "search" === e.type ? m.newPage(e.value) : "command" === e.type ? c.executeActions(e.id) : "history" === e.type ? m.newPage(e.command.url) : "bookmarkFolders" === e.type && ! function() { var n = []; _.bookmarks.getSubTree(e.command.id, function(e) { e[0].children.forEach(function(e) { e.url && n.push(e) }); var i = { bookmarks: n, inCurrent: t.props.vivaldiSettings.QUICK_COMMAND_OPEN_URL_IN_NEW_TAB === !1 }; s.open(i, !0) }) }() }, searchChange: function(e) { var t = this, n = null, i = e.target.value, a = this.props.vivaldiSettings.SEARCH_ENGINES; if (i.length > 0 && i.indexOf(" ") >= 1) for (var r = i.substring(0, i.indexOf(" ")), s = 0; s < a.length; s++) if (a[s].Keyword === r) { n = a[s]; break } _.history.search({ text: i, maxResults: 10 }, function(e) { t.setState({ historyArr: e }) }), i.length > 0 && _.bookmarks.search(i, function(e) { t.setState({ bookmarkNicks: e, bookmarkFolders: e.filter(function(e) { return !e.url }) }) }), this.setState({ quickCommandSearchValue: i, currentSearchEngine: n }); var o = this.findNickName(this.state.bookmarkCache, i); o.id ? (this.selectById(o.id), this.props.vivaldiSettings.QC_LAUNCH_BOOKMARK_ON_NICK_MATCH && this.executeCommand(this.getCommandByStringId(o.id))) : (this.resetSelectionModel(), this.hintChange(i)) }, findNickName: function(e, t) { if (!e || !t) return !1; if (e.nickname === t) return e; if (e.children) for (var n = 0; n < e.children.length; n++) { var i = this.findNickName(e.children[n], t); if (i) return i } return !1 }, hintChange: function(e) { if (e === y || "" === e) this.setState({ typeAheadHint: y }); else { var t = this.SelectionMixinGetSelected(), n = this.getCommandByStringId(t), i = this.refs.quickCommand.value; if (t === -1 || "search" === n.type || "url" === n.type) this.setState({ typeAheadHint: "" }); else if ("" === i) this.setState({ typeAheadHint: n.name }); else { var a = void 0; a = "bookmarkNick" === n.type && n.meta.toLowerCase() === i.toLowerCase() ? " – " + n.name : 0 === n.name.toLowerCase().indexOf(i.toLowerCase()) ? n.name.substring(i.length, n.name.length) : n.name.toLowerCase().indexOf(i) !== -1 ? n.name.substring(n.name.toLowerCase().indexOf(i.toLowerCase()) + i.length, n.name.length) : n.url.substring(n.url.toLowerCase().indexOf(i.toLowerCase()) + i.length, n.url.length), this.setState({ typeAheadHint: i + a }) } } }, selectById: function(e) { this.SelectionMixinSelectItem(e); var t = this.getCommandByStringId(e), n = this.refs.selected ? r.findDOMNode(this.refs.selected) : null; if (n) { var i = this.refs.quickCommands, a = n.offsetTop - i.scrollTop; a > 252 ? i.scrollTop = n.offsetTop - 252 : a < 0 && (i.scrollTop = n.offsetTop), this.hintChange(t.name ? t.name : "") } }, onEdit: function(e, t) { this.SelectionMixinSelectItem(e.id, t.ctrlKey, t.shiftKey, 2 === t.button), this.setState({ editingCommandId: e.id }) }, select: function(e, t, n) { this.SelectionMixinSelectItem(n, t.ctrlKey, t.shiftKey, 2 === t.button), this.SelectionMixinIsSelected(n) && e.key !== this.state.editingCommandId && this.setState({ editingCommandId: null }) }, over: function(e, t) { this.mouseX === e.pageX && this.mouseY === e.pageY || (this.mouseX = e.pageX, this.mouseY = e.pageY, this.SelectionMixinSelectItem(t.id)) }, getActions: function(e) { return this.getUrl().concat(this.getSearch(), this.getDefaultSearch(), this.getOpenPages(), this.getCommands(), this.getBookmarkNicks(), this.getBookmarkFolders(), this.getHistory()) }, getCommands: function() { for (var e = u.getQuickCommands(), t = e.length, n = [], i = 0; i < t; i++) e[i].label.toLowerCase().indexOf(this.state.quickCommandSearchValue.toLowerCase()) > -1 && n.push({ id: e[i].name, name: e[i].label, type: "command", faviconurl: "", command: e[i], searchString: e[i].label }); return n }, getOpenPages: function() { var e = this; return T.compact(this.state.openTabs.map(function(t) { var n = t.command, i = S.getDisplayTitle(n) + n.get("url"), a = null; if (e.state.quickCommandSearchValue && (a = new RegExp(e.state.quickCommandSearchValue.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), "i")), !a || i.match(a)) return { id: n.get("id"), name: S.getDisplayTitle(n), url: S.isInternalUrl(n.get("url")) ? "" : n.get("url"), type: "openTab", imageUrl: n.get("favIconUrl"), searchString: i, command: n } })) }, getHistory: function() { for (var e = this.state.historyArr.length, t = [], n = 0; n < e; n++)(this.state.historyArr[n].title + this.state.historyArr[n].url).toLowerCase().indexOf(this.state.quickCommandSearchValue.toLowerCase()) > -1 && t.push({ id: this.state.historyArr[n].id, name: this.state.historyArr[n].title, url: S.isInternalUrl(this.state.historyArr[n].url) ? "" : this.state.historyArr[n].url, type: "history", imageUrl: "chrome://favicon/" + this.state.historyArr[n].url, searchString: this.state.historyArr[n].title + this.state.historyArr[n].url, command: this.state.historyArr[n] }); return t }, getBookmarkNicks: function() { for (var e = this, t = this.state.bookmarkNicks.length, n = [], i = 0; i < t; i++) this.state.bookmarkNicks[i].url && (this.state.bookmarkNicks[i].nickname + this.state.bookmarkNicks[i].url + this.state.bookmarkNicks[i].title).toLowerCase().indexOf(this.state.quickCommandSearchValue.toLowerCase()) > -1 && n.push({ id: this.state.bookmarkNicks[i].id, name: this.state.bookmarkNicks[i].title, url: this.state.bookmarkNicks[i].url, meta: this.state.bookmarkNicks[i].nickname, type: "bookmarkNick", imageUrl: "chrome://favicon/" + this.state.bookmarkNicks[i].url, searchString: this.state.bookmarkNicks[i].nickname + this.state.bookmarkNicks[i].url + this.state.bookmarkNicks[i].title, command: this.state.bookmarkNicks[i] }); return n.sort(function(t) { return t.meta.toLowerCase() === e.state.quickCommandSearchValue.toLowerCase() ? -1 : 1 }), n }, getBookmarkFolders: function() { for (var e = this.state.bookmarkFolders.length, t = [], n = 0; n < e; n++) t.push({ id: this.state.bookmarkFolders[n].id, name: this.state.bookmarkFolders[n].title, url: "", meta: this.state.bookmarkFolders[n].nickname, type: "bookmarkFolders", imageUrl: "/resources/folder@2x.png", searchString: this.state.bookmarkFolders[n].nickname + this.state.bookmarkFolders[n].title, command: this.state.bookmarkFolders[n] }); return t }, getUrl: function() { var e = []; return this.state.quickCommandSearchValue && e.push({ id: this.state.quickCommandSearchValue, name: this.state.quickCommandSearchValue.trim(), url: "", meta: "", type: "url", imageUrl: "chrome://favicon/" + this.state.quickCommandSearchValue, searchString: this.state.quickCommandSearchValue, command: "fixed" }), e }, getSearch: function() { var e = []; if (this.state.currentSearchEngine) { var t = this.state.quickCommandSearchValue.trim(), n = t.substring(t.indexOf(" "), t.length), i = this.state.currentSearchEngine.Url, a = i.replace("%s", n.replace(" ", "+")); e.push({ id: this.state.currentSearchEngine.Name, name: g("Search “$1” on $2", [n.trim(), this.state.currentSearchEngine.Name]), url: "", meta: "", type: "search", imageUrl: this.state.currentSearchEngine.Image, searchString: this.state.quickCommandSearchValue, command: "fixed", value: a }) } return e }, getDefaultSearch: function() { var e = [], t = this.props.vivaldiSettings.SEARCH_ENGINES, n = parseInt(this.props.vivaldiSettings.DEFAULT_SEARCH_ENGINE); if (this.state.quickCommandSearchValue && n && !this.state.currentSearchEngine) { for (var i = {}, a = 0; a < t.length; a++) if (t[a].Id === n) { i = t[a]; break } var r = encodeURIComponent(this.state.quickCommandSearchValue.trim()), s = i.Url, o = s.replace("%s", r); e.push({ id: i.Name, name: g("Search “$1” on $2", [this.state.quickCommandSearchValue.trim(), i.Name]), url: "", meta: "", type: "search", imageUrl: i.Image, searchString: this.state.quickCommandSearchValue, command: "fixed", value: o }) } return e }, renderActions: function(e) { var t = this; return e.map(function(e) { t.KeyboardNavigationMixinAddToNavigationList(e.id); var n = t.SelectionMixinIsSelected(e.id); return a.createElement(p, { ref: n ? "selected" : "", key: e.id, commandObj: e, selected: n, onSave: t.saveKey, onExecute: t.executeCommand, onEdit: t.onEdit, editing: t.state.editingCommandId === e.id, onCancel: t.onCancel, onMouseOver: t.over, __source: { fileName: i, lineNumber: 566 } }) }) }, renderBookmarkNicks: function() { return this.getBookmarkNicks().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 585 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 586 } }, g("Bookmarks")), a.createElement("ul", { className: "quick-commands-bookmarks", __source: { fileName: i, lineNumber: 587 } }, this.renderActions(this.getBookmarkNicks()))) : null }, renderBookmarkFolders: function() { return this.getBookmarkFolders().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 600 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 601 } }, g("Open All Bookmarks in Folder")), a.createElement("ul", { className: "quick-commands-bookmarks", __source: { fileName: i, lineNumber: 604 } }, this.renderActions(this.getBookmarkFolders()))) : null }, renderUrl: function() { var e = this.state.quickCommandSearchValue.trim().toLowerCase(); return this.getUrl().length > 0 && N(e) || e.startsWith("javascript:") ? a.createElement("span", { __source: { fileName: i, lineNumber: 619 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 620 } }, g("Go to Address")), a.createElement("ul", { className: "quick-commands-bookmarks", __source: { fileName: i, lineNumber: 623 } }, this.renderActions(this.getUrl()))) : null }, renderSearch: function() { return this.getSearch().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 636 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 637 } }, g("verb", "Search")), a.createElement("ul", { className: "quick-commands-bookmarks", __source: { fileName: i, lineNumber: 640 } }, this.renderActions(this.getSearch()))) : null }, renderDefaultSearch: function() { return this.getDefaultSearch().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 653 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 654 } }, g("Default Search")), a.createElement("ul", { className: "quick-commands-bookmarks", __source: { fileName: i, lineNumber: 657 } }, this.renderActions(this.getDefaultSearch()))) : null }, renderOpenTabs: function() { return this.getOpenPages().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 670 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 671 } }, g("Tabs")), a.createElement("ul", { className: "quick-commands-tabs", __source: { fileName: i, lineNumber: 672 } }, this.renderActions(this.getOpenPages()))) : null }, renderHistory: function() { return this.getHistory().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 685 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 686 } }, g("History")), a.createElement("ul", { className: "quick-commands-history", __source: { fileName: i, lineNumber: 687 } }, this.renderActions(this.getHistory()))) : null }, renderCommands: function() { return this.getCommands().length > 0 ? a.createElement("span", { __source: { fileName: i, lineNumber: 700 } }, a.createElement("div", { className: "quick-command-sectionheader", __source: { fileName: i, lineNumber: 701 } }, g("Commands")), a.createElement("ul", { className: "quick-commands-actions", __source: { fileName: i, lineNumber: 702 } }, this.renderActions(this.getCommands()))) : null }, render: function() { return a.createElement("div", { className: "quick-command-container", onFocus: this.KeyboardNavigationMixinOnFocus, __source: { fileName: i, lineNumber: 714 } }, a.createElement("div", { className: "qc-entry", __source: { fileName: i, lineNumber: 716 } }, a.createElement("input", { tabIndex: "-1", readOnly: !0, ref: "quickCommandHint", className: "quick-command-search-hint", value: this.state.typeAheadHint, __source: { fileName: i, lineNumber: 717 } }), a.createElement("input", { autoFocus: !0, ref: "quickCommand", className: "quick-command-search", onKeyDown: this.onQuickCommandSearchKeyDown, onKeyUp: this.onQuickCommandSearchKeyUp, value: this.state.quickCommandSearchValue, onChange: this.searchChange, __source: { fileName: i, lineNumber: 723 } })), a.createElement("div", { className: "quick-commands", ref: "quickCommands", __source: { fileName: i, lineNumber: 733 } }, this.renderUrl(), this.renderSearch(), this.renderDefaultSearch(), this.renderOpenTabs(), this.renderCommands(), this.state.quickCommandSearchValue && this.renderBookmarkNicks(), this.state.quickCommandSearchValue && this.renderBookmarkFolders(), this.state.quickCommandSearchValue && this.renderHistory())) } }); e.exports = A(I, C) }, function(e, t, n) { // ========================= // Function_670 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/savedpasswords/savedPasswordItem.jsx", a = n(1), r = n(2), s = a.createClass({ displayName: "SavedPasswordItem", render: function() { return a.createElement("div", { className: "setting-single controls", __source: { fileName: i, lineNumber: 7 } }, a.createElement("span", { dangerouslySetInnerHTML: { __html: n(313) }, __source: { fileName: i, lineNumber: 8 } }), a.createElement("label", { __source: { fileName: i, lineNumber: 10 } }, a.createElement("input", { type: "text", value: this.props.savedPassword.origin, tabIndex: "-1", readOnly: !0, __source: { fileName: i, lineNumber: 11 } })), a.createElement("label", { __source: { fileName: i, lineNumber: 16 } }, a.createElement("input", { type: "text", value: this.props.savedPassword.username, tabIndex: "-1", readOnly: !0, __source: { fileName: i, lineNumber: 17 } })), a.createElement("input", { type: "button", className: "circular clearkey", title: r("Delete Password"), onClick: this.props.onDelete, __source: { fileName: i, lineNumber: 22 } })) } }); e.exports = s }, function(e, t, n) { // ========================= // Function_671 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/savedpasswords/savedPasswords.jsx", a = n(1), r = n(10), s = n(25), o = n(670), l = n(34), c = n(12), u = n(2), A = n(4), d = n(36), h = "profile.password_manager_enabled", m = [h], p = a.createClass({ displayName: "SavedPasswords", getInitialState: function() { return { savedPasswordsData: [], confirmation: !1, toRemove: null } }, componentWillMount: function() { this.getSavedPassords() }, getSavedPassords: function() { var e = this; A.savedpasswords.getList(function(t) { e.setState({ savedPasswordsData: t }) }) }, handleSavePasswordChange: function(e) { var t = e.target.checked, n = { preferenceKey: h, preferenceValue: { boolean: t }, preferenceType: "boolean" }; r.settings.setPreference(n) }, deleteSavedPassword: function() { var e = this; A.savedpasswords.remove(this.state.toRemove.id, function() { e.getSavedPassords() }), this.setState({ confirmation: !1, toRemove: null }) }, onAskToDelete: function(e) { this.setState({ confirmation: !0, toRemove: e }) }, onCancel: function() { this.setState({ confirmation: !1, toRemove: null }), this.props.onClose() }, renderModal: function() { var e = d.parse(this.state.toRemove.origin).hostname; return a.createElement(l, { onRequestClose: this.onCancel, dialogWidth: 400, __source: { fileName: i, lineNumber: 76 } }, a.createElement("div", { className: "dialog-new-bookmark-folder", __source: { fileName: i, lineNumber: 77 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 78 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 79 } }, u("Delete password for $1?", [e || this.state.toRemove.origin]))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 84 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 85 } }, u("Password for user “$1” on page “$2” will be removed.", [this.state.toRemove.username, this.state.toRemove.origin]))), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 91 } }, a.createElement("input", { type: "button", className: "primary", onClick: this.deleteSavedPassword, value: u("other", "Delete"), autoFocus: !0, __source: { fileName: i, lineNumber: 92 } }), a.createElement("input", { type: "button", onClick: this.onCancel, value: u("Cancel"), __source: { fileName: i, lineNumber: 97 } })))) }, render: function() { var e = this, t = a.createElement("div", { className: "saved-passwords setting-group unlimited", __source: { fileName: i, lineNumber: 108 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 109 } }, u("Passwords")), a.createElement("div", { className: "setting-group unlimited", __source: { fileName: i, lineNumber: 110 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 111 } }, a.createElement("input", { type: "checkbox", onChange: this.handleSavePasswordChange, checked: this.props.vivaldiSettings[h], __source: { fileName: i, lineNumber: 112 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 116 } }, u("Save Webpage Passwords")))), this.state.confirmation && this.renderModal(), this.state.savedPasswordsData.length > 0 ? a.createElement("div", { className: "saved-passwords", __source: { fileName: i, lineNumber: 121 } }, a.createElement("div", { className: "header", __source: { fileName: i, lineNumber: 122 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 123 } }, u("Website")), a.createElement("label", { __source: { fileName: i, lineNumber: 124 } }, u("Account Name"))), a.createElement("div", { className: "password_list", __source: { fileName: i, lineNumber: 126 } }, this.state.savedPasswordsData.map(function(t) { return a.createElement(o, { key: t.id, savedPassword: t, onDelete: e.onAskToDelete.bind(e, t), __source: { fileName: i, lineNumber: 130 } }) }))) : a.createElement("div", { className: "saved-passwords", __source: { fileName: i, lineNumber: 141 } }, a.createElement("p", { __source: { fileName: i, lineNumber: 142 } }, u("No saved passwords found.")))); return c(t, this.props.filter) } }); e.exports = s(p, m) }, function(e, t, n) { // ========================= // Function_672 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/search/createSearchEngineDlg.jsx", a = n(1), r = n(369), s = n(34), o = a.createClass({ displayName: "CreateSearchEngineDlg", getInitialState: function() { return { msg: "", shown: !0, modalShown: !1 } }, componentWillReceiveProps: function() { this.setState({ shown: !0 }) }, handleClose: function() { var e = { dialogText: this.state.value }; this.state.shown && this.props.onClose(e), this.setState({ shown: !this.state.shown }) }, getLayeredComponentRootNode: function() { return this.props.parentDiv }, render: function() { return this.state.shown ? a.createElement(s, { onRequestClose: this.handleClose, __source: { fileName: i, lineNumber: 33 } }, a.createElement("div", { className: "dialog-addsearch", __source: { fileName: i, lineNumber: 34 } }, a.createElement(r, { showAsDlg: !0, onClose: this.handleClose, name: this.props.name, url: this.props.url, __source: { fileName: i, lineNumber: 35 } }))) : null } }); e.exports = o }, function(e, t, n) { // ========================= // Function_673 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var r = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/search/searchEngines.jsx", s = n(1), o = i(s), l = n(3), c = i(l), u = n(13), A = i(u), d = n(369), h = i(d), m = n(2), p = i(m), f = n(7), g = i(f), _ = n(5), v = i(_), b = n(12), N = i(b), E = n(34), S = i(E), T = n(46), y = o.default.createClass({ displayName: "SearchEngines", mixins: [A.default], vivaldiSettingsKeys: ["ADDRESS_BAR_SUGGEST_ENABLED", "ADDRESS_BAR_SUGGEST_NICKNAME_ENABLED", "DEFAULT_SEARCH_ENGINE", "SEARCH_ENGINES", "SEARCH_FIELD_ENABLED", "SEARCH_FIELD_OPEN_NEW_TAB", "SEARCH_FIELD_SUGGEST_ENABLED", "URLBAR_SEARCH_DISABLED"], getInitialState: function() { return { SEARCH_ENGINES: [], adding: !1, defaultSearchEngineId: -1, selectedSearchEngineId: -1, foundSearchEngine: !1, seUrl: "", seSuggestUrl: "", seName: "", seKeyword: "", seFavicon: "", confirmation: !1 } }, saveVivaldiSettingFromEvent: function(e, t, n) { c.default.set(a({}, e, n.target[t])) }, componentWillReceiveProps: function(e) { if (this.state.SEARCH_ENGINES && this.state.SEARCH_ENGINES.length > 0 && e.filter && e.filter.length > 0) { for (var t = this.state.SEARCH_ENGINES, n = 0; n < t.length; n++) if ((t[n].Keyword + t[n].Url + t[n].Name).toLowerCase().indexOf(e.filter.toLowerCase()) > -1) return void this.setState({ foundSearchEngine: !0 }); this.setState({ foundSearchEngine: !1 }) } }, onSearchEngineChanged: function() { var e = this; c.default.set({ SEARCH_ENGINES: this.state.SEARCH_ENGINES.map(function(t) { return e.state.selectedSearchEngineId === t.Id && (t.Url = e.refs.urlInput.value, t.Name = e.refs.nameInput.value, t.Keyword = e.refs.keywordInput.value, t.SuggestUrl = e.refs.suggestInput.value, t.FaviconUrl = e.state.seFavicon), t }) }), this.setState({ selectedSearchEngineId: -1, seUrl: "", seSuggestUrl: "", seName: "", seKeyword: "", seFavicon: "" }) }, deleteSearchEngine: function(e) { var t = g.default.reject(g.default.map(this.state.SEARCH_ENGINES, function(e) { return delete e._Text, e }), function(t) { return t.Id === e }); c.default.set({ SEARCH_ENGINES: t }), this.setState({ selectedSearchEngineId: -1 }) }, cancel: function() { this.setState({ adding: !1, selectedSearchEngineId: -1 }) }, createSearchEngine: function(e) { var t = g.default.map(this.state.SEARCH_ENGINES, function(e) { return delete e._Text, e }), n = Math.max.apply(Math, t.map(function(e) { return e.Id })); t.push({ Id: n ? n + 1 : 0, Name: e.name, Keyword: e.keyword, Url: e.url }), this.setState({ adding: !1 }), c.default.set({ SEARCH_ENGINES: t }) }, restoreSearchEngines: function() { var e = c.default.getDefault("SEARCH_ENGINES"), t = c.default.getDefault("DEFAULT_SEARCH_ENGINE"); c.default.set({ DEFAULT_SEARCH_ENGINE: t, SEARCH_ENGINES: e }), this.setState({ selectedSearchEngineId: -1, adding: !1, confirmation: !1 }) }, addNewSearchEngine: function() { this.setState({ adding: !this.state.adding, selectedSearchEngineId: -1 }) }, edit: function(e, t) { this.setState({ adding: !1, selectedSearchEngineId: e }, function() { t() }) }, onSearchEngineSelected: function(e) { if (this.state.selectedSearchEngineId === e) this.setState({ selectedSearchEngineId: -1, seUrl: "", seSuggestUrl: "", seName: "", seKeyword: "", seFavicon: "" }); else { var t = g.default.find(this.state.SEARCH_ENGINES, { Id: parseInt(e) }); this.setState({ selectedSearchEngineId: e, seUrl: t.Url, seName: t.Name, seSuggestUrl: t.SuggestUrl, seKeyword: t.Keyword, seFavicon: t.FaviconUrl }) } }, toggleSearchEnabled: function(e) { var t = e.target.checked; c.default.set({ SEARCH_FIELD_ENABLED: t }) }, toggleUrlbarSearch: function(e) { var t = e.target.checked; c.default.set({ URLBAR_SEARCH_DISABLED: !t }) }, setDefault: function(e) { c.default.set({ DEFAULT_SEARCH_ENGINE: e.toString() }), this.setState({ selectedSearchEngineId: -1, adding: !1 }) }, confirmRestoreSearch: function() { this.setState({ confirmation: !0 }) }, onCancel: function() { this.setState({ confirmation: !1 }) }, keyDownModal: function(e) { 27 === e.keyCode && this.onCancel() }, renderModal: function() { return o.default.createElement(S.default, { dialogWidth: 400, __source: { fileName: r, lineNumber: 233 } }, o.default.createElement("div", { className: "dialog-restore-search", __source: { fileName: r, lineNumber: 234 } }, o.default.createElement("header", { className: "dialog-header", __source: { fileName: r, lineNumber: 235 } }, o.default.createElement("h1", { className: "dialog-title", __source: { fileName: r, lineNumber: 236 } }, (0, p.default)("Restore Default Search Engines?"))), o.default.createElement("div", { className: "dialog-content", onKeyDown: this.keyDownModal, __source: { fileName: r, lineNumber: 240 } }, o.default.createElement("p", { __source: { fileName: r, lineNumber: 241 } }, (0, p.default)("Search engines will be reset to default settings, which will\n also reset your custom search engines."))), o.default.createElement("footer", { className: "dialog-footer", onKeyDown: this.keyDownModal, __source: { fileName: r, lineNumber: 246 } }, o.default.createElement("input", { type: "button", className: "danger", onClick: this.restoreSearchEngines, value: (0, p.default)("Restore"), __source: { fileName: r, lineNumber: 247 } }), o.default.createElement("input", { type: "button", onClick: this.onCancel, value: (0, p.default)("Cancel"), autoFocus: !0, __source: { fileName: r, lineNumber: 252 } })))) }, renderList: function() { var e = this; return this.state.SEARCH_ENGINES.map(function(t) { var n = t.Id === parseInt(e.state.DEFAULT_SEARCH_ENGINE), i = void 0; return i = t.FaviconUrl ? t.FaviconUrl : "chrome://favicon/origin/" + t.Url, o.default.createElement("li", { className: "controls", key: t.Id, onDoubleClick: e.onSearchEngineSelected.bind(e, t.Id), __source: { fileName: r, lineNumber: 275 } }, o.default.createElement("span", { className: "favicon", __source: { fileName: r, lineNumber: 278 } }, o.default.createElement("img", { src: i, alt: "", width: "16", height: "16", __source: { fileName: r, lineNumber: 279 } })), o.default.createElement("span", { className: "name", __source: { fileName: r, lineNumber: 281 } }, t.Name), o.default.createElement("span", { className: "keyword", title: (0, p.default)("Keyboard Shortcut"), __source: { fileName: r, lineNumber: 282 } }, t.Keyword), o.default.createElement("span", { __source: { fileName: r, lineNumber: 285 } }, o.default.createElement("input", { type: "button", disabled: n, className: "circular defaultkey", title: n ? (0, p.default)("Default Search Engine") : (0, p.default)("searchengine", "Set as Default"), onClick: e.setDefault.bind(e, t.Id), __source: { fileName: r, lineNumber: 286 } }), o.default.createElement("input", { type: "button", className: "circular editkey", title: (0, p.default)("Edit Search Engine"), onClick: e.onSearchEngineSelected.bind(e, t.Id), __source: { fileName: r, lineNumber: 294 } }), o.default.createElement("input", { type: "button", disabled: n, className: "circular clearkey", title: (0, p.default)("Remove Search Engine"), onClick: e.deleteSearchEngine.bind(e, t.Id), __source: { fileName: r, lineNumber: 298 } }))) }) }, changeValue: function(e, t) { var n = {}; n[e] = t.target.value, this.setState(n) }, changeFavicon: function(e) { var t = this, n = (0, T.ensureURLProtocol)(e.target.value.trim()); if (n) { var i = document.createElement("a"); i.href = n; var a = i.protocol + "//" + i.host + "/favicon.ico"; this.getDataUri(a, function(e) { t.setState({ seFavicon: e }) }) } }, getDataUri: function(e, t) { var n = new Image; n.onload = function() { var n = document.createElement("canvas"); n.width = this.naturalWidth, n.height = this.naturalHeight, n.getContext("2d").drawImage(this, 0, 0), t(n.toDataURL(e)) }, n.src = e }, render: function() { if (!this.state.SEARCH_ENGINES || !this.state.DEFAULT_SEARCH_ENGINE) return null; var e = o.default.createElement("section", { __source: { fileName: r, lineNumber: 349 } }, this.state.confirmation && this.renderModal(), o.default.createElement("h2", { __source: { fileName: r, lineNumber: 351 } }, (0, p.default)("noun", "Search")), o.default.createElement("div", { className: "setting-group unlimited", __source: { fileName: r, lineNumber: 352 } }, o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 353 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 354 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.SEARCH_FIELD_ENABLED, onChange: this.toggleSearchEnabled, __source: { fileName: r, lineNumber: 355 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 358 } }, (0, p.default)("Show Search Field in Address Bar")))), o.default.createElement("div", { className: "setting-single pad-left", __source: { fileName: r, lineNumber: 361 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 362 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.SEARCH_FIELD_OPEN_NEW_TAB, disabled: !this.state.SEARCH_FIELD_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SEARCH_FIELD_OPEN_NEW_TAB", "checked"), __source: { fileName: r, lineNumber: 363 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 368 } }, (0, p.default)("Always open in new tab")))), o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 372 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 373 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.URLBAR_SEARCH_DISABLED === !1, onChange: this.toggleUrlbarSearch, __source: { fileName: r, lineNumber: 374 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 377 } }, (0, p.default)("Search in Address Field"))))), o.default.createElement("div", { className: "setting-group unlimited", __source: { fileName: r, lineNumber: 382 } }, o.default.createElement("div", { id: "searchSuggest", className: "setting-group", __source: { fileName: r, lineNumber: 383 } }, o.default.createElement("h3", { __source: { fileName: r, lineNumber: 384 } }, (0, p.default)("Allow Search Suggestions in")), o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 385 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 386 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_SUGGEST_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_SUGGEST_ENABLED", "checked"), __source: { fileName: r, lineNumber: 387 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 391 } }, (0, p.default)("Address Field")))), o.default.createElement("div", { className: "setting-single pad-left", __source: { fileName: r, lineNumber: 394 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 395 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.ADDRESS_BAR_SUGGEST_NICKNAME_ENABLED, disabled: !this.state.ADDRESS_BAR_SUGGEST_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ADDRESS_BAR_SUGGEST_NICKNAME_ENABLED", "checked"), __source: { fileName: r, lineNumber: 396 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 401 } }, (0, p.default)("Only when Using Search Engine Nickname")))), o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 404 } }, o.default.createElement("label", { __source: { fileName: r, lineNumber: 405 } }, o.default.createElement("input", { type: "checkbox", checked: this.state.SEARCH_FIELD_SUGGEST_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SEARCH_FIELD_SUGGEST_ENABLED", "checked"), __source: { fileName: r, lineNumber: 406 } }), o.default.createElement("span", { __source: { fileName: r, lineNumber: 410 } }, (0, p.default)("Search Field")))))), o.default.createElement("div", { className: (0, v.default)({ "setting-group": !0, unlimited: !0, "setting-search-engine": !0, default: this.props.default }), __source: { fileName: r, lineNumber: 415 } }, o.default.createElement("h3", { __source: { fileName: r, lineNumber: 421 } }, (0, p.default)("Search Engines")), o.default.createElement("div", { className: "setting-subgroup", __source: { fileName: r, lineNumber: 422 } }, o.default.createElement("ul", { className: "se-list", __source: { fileName: r, lineNumber: 423 } }, this.renderList()), parseInt(this.state.selectedSearchEngineId) > -1 && o.default.createElement("div", { className: "setting-group unlimited search-engine-create pad-top", __source: { fileName: r, lineNumber: 428 } }, o.default.createElement("h3", { __source: { fileName: r, lineNumber: 431 } }, (0, p.default)("Edit Search Engine")), o.default.createElement("div", { className: "setting-flexgroup", __source: { fileName: r, lineNumber: 433 } }, o.default.createElement("input", { ref: "urlInput", className: "searchengine_url setting-single-flex", type: "text", title: (0, p.default)("Search Engine Address"), placeholder: (0, p.default)("URL"), value: this.state.seUrl, onChange: this.changeValue.bind(this, "seUrl"), onBlur: this.changeFavicon, __source: { fileName: r, lineNumber: 434 } })), o.default.createElement("div", { className: "setting-flexgroup", __source: { fileName: r, lineNumber: 445 } }, o.default.createElement("input", { ref: "suggestInput", className: "searchengine_url setting-single-flex", type: "text", title: (0, p.default)("Suggest Address"), placeholder: (0, p.default)("Suggest URL"), value: this.state.seSuggestUrl, onChange: this.changeValue.bind(this, "seSuggestUrl"), __source: { fileName: r, lineNumber: 446 } })), o.default.createElement("div", { className: "setting-flexgroup", __source: { fileName: r, lineNumber: 456 } }, o.default.createElement("input", { className: "setting-single-flex", type: "text", ref: "nameInput", placeholder: (0, p.default)("Description"), value: this.state.seName, onChange: this.changeValue.bind(this, "seName"), __source: { fileName: r, lineNumber: 457 } }), o.default.createElement("input", { ref: "keywordInput", className: "searchengine_keyword setting-single-noflex", type: "text", title: (0, p.default)("Shortcut for Search Engine"), placeholder: (0, p.default)("Nickname"), value: this.state.seKeyword, onChange: this.changeValue.bind(this, "seKeyword"), __source: { fileName: r, lineNumber: 464 } })), o.default.createElement("div", { className: "setting-flexgroup", __source: { fileName: r, lineNumber: 474 } }, o.default.createElement("input", { type: "button", className: "setting-single-noflex primary", onClick: this.onSearchEngineChanged, value: (0, p.default)("OK"), __source: { fileName: r, lineNumber: 475 } }), o.default.createElement("input", { type: "button", className: "setting-single-noflex", onClick: this.cancel, value: (0, p.default)("Cancel"), __source: { fileName: r, lineNumber: 479 } })))), this.state.adding === !0 && o.default.createElement(h.default, { onClose: this.cancel, onCreate: this.createSearchEngine, __source: { fileName: r, lineNumber: 489 } }), this.state.adding === !1 && o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 495 } }, o.default.createElement("input", { type: "button", onClick: this.addNewSearchEngine, value: (0, p.default)("Add New Search Engine"), __source: { fileName: r, lineNumber: 496 } })), o.default.createElement("div", { className: "setting-single", __source: { fileName: r, lineNumber: 501 } }, o.default.createElement("input", { type: "button", onClick: this.confirmRestoreSearch, value: (0, p.default)("Restore Defaults"), __source: { fileName: r, lineNumber: 502 } })))); return this.state.foundSearchEngine ? e : (0, N.default)(e, this.props.filter) } }); e.exports = y }, function(e, t) { // ========================= // Function_674 // ========================= "use strict"; function n(e) { function t(e) { var t, a = 0, r = 0, s = 0, o = 0, l = 0, c = 0; for (t = 0; t < e.length; t++) "0" === e[t] ? l += 1 : "4" === e[t] && (l -= 1), l > a && (a = l), l < r && (r = l); for (t = 0; t < e.length; t++) "2" === e[t] ? c -= 1 : "6" === e[t] && (c += 1), c > s && (s = c), c < o && (o = c); return r > 0 && (r = 0), o > 0 && (o = 0), (i - 2 * n) / Math.max(Math.abs(a - r), Math.abs(s - o)) } var n = 40, i = 200, a = 8, r = "#006ed7", s = 50, o = 4, l = 4; this.points = [], this.points_buffer = [], this.stopped = !0, this.canvas = e, this.init_points = function() { this.points = [], this.points_buffer = []; var e = { x: n, y: n }; this.points.push(e); var r, s = t(this.sequence); for (r = 0; r < this.sequence.length; r++) { var o = {}; "0" === this.sequence[r] ? (o.x = this.points[r].x + s, o.y = this.points[r].y) : "2" === this.sequence[r] ? (o.x = this.points[r].x, o.y = this.points[r].y + s) : "4" === this.sequence[r] ? (o.x = this.points[r].x - s, o.y = this.points[r].y) : "6" === this.sequence[r] && (o.x = this.points[r].x, o.y = this.points[r].y - s), this.points.push(o) } var l = this.points[0].x, c = this.points[0].y, u = this.points[0].x, A = this.points[0].y; for (r = 1; r < this.points.length; r++) this.points[r].x < l && (l = this.points[r].x), this.points[r].x > u && (u = this.points[r].x), this.points[r].y < c && (c = this.points[r].y), this.points[r].y > A && (A = this.points[r].y); if (l < n) { for (r = 0; r < this.points.length; r++) this.points[r].x += -(l - n); u += -(l - n) } if (c < n) { for (r = 0; r < this.points.length; r++) this.points[r].y += -(c - n); A += -(c - n) } for (r = 0; r < this.points.length; r++) this.points[r].x += (i - n - u) / 2, this.points[r].y += (i - n - A - a) / 2; for (r = 0; r < this.points.length; r++) { var d = { x: this.points[r].x, y: this.points[r].y }; this.points_buffer.push(d) } }, this.reset_points = function() { var e; for (e = 0; e < this.points_buffer.length; e++) this.points[e].x = this.points_buffer[e].x, this.points[e].y = this.points_buffer[e].y }, this.draw_point = function(e) { this.ctx.beginPath(), this.ctx.arc(e.x, e.y, a, 0, 2 * Math.PI, !0), this.ctx.closePath(), this.ctx.fillStyle = r, this.ctx.fill() }, this.idx = 0, this.timeout = 0, this.draw_segment = function() { if (!this.stopped) { if (this.idx >= this.points.length) return this.timeout >= s ? (this.timeout = 0, this.idx = 0, this.reset_points(), void(this.requestId = window.requestAnimationFrame(this.draw_segment.bind(this)))) : (this.ctx.fillStyle = "rgba(255,255,255,0.15)", this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height), this.timeout++, void(this.requestId = window.requestAnimationFrame(this.draw_segment.bind(this)))); this.timeout = 0, this.ctx.fillStyle = "rgba(255,255,255,0.1)", this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height), this.draw_point(this.points[this.idx]), !this.points[this.idx + 1] || this.points[this.idx].x === this.points[this.idx + 1].x && this.points[this.idx].y === this.points[this.idx + 1].y ? (this.idx++, this.draw_segment()) : (this.points[this.idx].x < this.points[this.idx + 1].x ? this.points[this.idx].x += o : this.points[this.idx].x > this.points[this.idx + 1].x && (this.points[this.idx].x -= o), this.points[this.idx].y < this.points[this.idx + 1].y ? this.points[this.idx].y += l : this.points[this.idx].y > this.points[this.idx + 1].y && (this.points[this.idx].y -= l), this.requestId = window.requestAnimationFrame(this.draw_segment.bind(this))) } }, this.clear_canvas = function() { this.ctx.fillStyle = "rgb(255,255,255)", this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height) }, this.start = function(e) { this.sequence = e, this.ctx = this.canvas.getContext("2d"), this.ctx.lineWidth = 3, this.clear_canvas(), this.init_points(), this.stopped && (this.stopped = !1, this.requestId = window.requestAnimationFrame(this.draw_segment.bind(this))) }, this.stop = function() { this.stopped = !0, this.current_point_index = 0, this.timeout = 0, this.idx = 0, window.cancelAnimationFrame(this.requestId) } } e.exports = n }, function(e, t, n) { // ========================= // Function_675 // ========================= (function(t) { "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/MouseGestures.jsx", r = n(1), s = n(674), o = n(52), l = n(94), c = n(2), u = n(34), A = n(12), d = n(3), h = n(13), m = n(10), p = r.createClass({ displayName: "MouseGestures", mixins: [h], vivaldiSettingsKeys: ["MOUSE_GESTURES_ENABLED", "ALT_GESTURES_ENABLED"], selected: void 0, getDefaultProps: function() { return { filter: "" } }, getInitialState: function() { return { commandArray: o.getUserEditableCommands(), assignedArray: o.getCommandsGestures(), rockerGestures: d.getSync("vivaldi.rocker_gestures_enabled"), selectedCommand: null, addingGesture: 0, gestureExists: !1, angleMap: this.populateAngleMap(), confirmation: !1 } }, componentWillMount: function() { var e = this; this.state.selectedCommand || (this.setState({ selectedCommand: this._getTopCommand() }), "all" !== this.props.categoryTitle && t.nextTick(function() { return e.refs.gestureList.focus() })) }, componentDidMount: function() { o.addChangeListener(this._onCommandStoreChange) }, componentWillUnmount: function() { void 0 !== this.animation && this.animation.stop(), o.removeChangeListener(this._onCommandStoreChange) }, _onCommandStoreChange: function() { this.setState({ commandArray: o.getUserEditableCommands(), assignedArray: o.getCommandsGestures(), addingGesture: 0 }) }, _getCommandByGesture: function(e) { return this.state.commandArray.find(function(t) { if (t.gestures && t.gestures[0] === e) return t }) }, _getTopCommand: function() { return this.state.commandArray.find(function(e) { return e.gestures }) }, animation: void 0, onGestureListChange: function(e) { var t = this.state.selectedCommand, n = e && "focus" === e.type && t && t.gestures[0] ? t.gestures[0] : e.target.value, i = e && "focus" === e.type && t ? t : this._getCommandByGesture(n); n && "number" == typeof parseInt(n) && (this.animation || (this.animation = new s(this.refs.gestureCanvas)), this.animation.stop(), this.animation.start(n), this.setState({ addingGesture: 0, selectedCommand: i })) }, checkChange: function() { var e = { preferenceKey: "vivaldi.rocker_gestures_enabled", preferenceValue: { boolean: !this.state.rockerGestures }, preferenceType: "boolean" }; m.settings.setPreference(e), this.setState({ rockerGestures: !this.state.rockerGestures }) }, addGesture: function() { this.setState({ addingGesture: 1 }) }, onCancelGesture: function() { this.moves = [], this.clearAnimation(), this.setState({ addingGesture: 0, selectedCommand: this._getTopCommand() }) }, removeGesture: function() { var e = { gestures: null, shortcut: this.state.selectedCommand.shortcut, showInQC: this.state.selectedCommand.showInQC }; d.set(i({}, this.state.selectedCommand.name, e)), this.setState({ selectedCommand: null }) }, editGesture: function(e) { var t = this.state.selectedCommand; e.target[0] && (t = this.state.commandArray.filter(function(t) { if (t.name === e.target[0].value) return !0 })[0]), this.setState({ addingGesture: 2, selectedCommand: t }) }, restoreGestures: function() { l.restoreCommandGestures(), this.setState({ confirmation: !1 }) }, confirmRestore: function() { this.setState({ confirmation: !0 }) }, onCancel: function() { this.setState({ confirmation: !1 }) }, keyDownModal: function(e) { 27 === e.keyCode && this.onCancel() }, consolidateCommands: function() { var e = this.state.commandArray.filter(function(e) { return !e.gestures && e }); return e }, save: function() { var e = this, n = { gestures: [this.moves], shortcut: this.state.selectedCommand.shortcut, showInQC: this.state.selectedCommand.showInQC }; d.set(i({}, this.state.selectedCommand.name, n)), this.moves = [], t.nextTick(function() { return e.refs.gestureList.focus() }) }, saveVivaldiSettingFromEvent: function(e, t, n) { d.set(i({}, e, n.target[t])) }, paint: !1, lastX: !1, lastY: !1, moves: [], pointX: new Array, pointY: new Array, pointDrag: new Array, populateAngleMap: function() { var e = 2 * Math.PI / 4, t = 2 * Math.PI / 100, n = [], i = void 0, a = void 0; for (i = -e / 2; i <= 2 * Math.PI - e / 2; i += t) a = 2 * Math.floor((i + e / 2) / e), n.push(a); return n }, addPoint: function(e, t, n) { this.pointX.push(e), this.pointY.push(t), this.pointDrag.push(n) }, addMove: function(e, t) { var n = 2 * Math.PI / 4, i = Math.atan2(t, e) + n / 2; i < 0 && (i += 2 * Math.PI); var a = Math.floor(i / (2 * Math.PI) * 100); this.moves.push(this.state.angleMap[a]) }, redraw: function() { var e = this.refs.gestureCanvas, t = e.getContext("2d"); t.clearRect(0, 0, t.canvas.width, t.canvas.height), t.strokeStyle = "#df4b2b", t.lineJoin = "round", t.lineWidth = 16; for (var n = 0; n < this.pointX.length; n++) t.beginPath(), this.pointDrag[n] && n ? t.moveTo(this.pointX[n - 1], this.pointY[n - 1]) : t.moveTo(this.pointX[n] - 1, this.pointY[n]), t.lineTo(this.pointX[n], this.pointY[n]), t.closePath(), t.stroke() }, penDown: function(e) { if (!(2 !== this.state.addingGesture || e.button && 0 !== e.button)) { e.touches && (e = e.touches[0]), this.clearAnimation(), this.clearCanvas(), this.moves = [], this.paint = !0; var t = e.target.getBoundingClientRect(); this.addPoint(e.pageX - t.left, e.pageY - t.top), this.redraw() } }, penMove: function(e) { if (2 === this.state.addingGesture && (e.touches && (e = e.touches[0]), this.paint)) { var t = e.target.getBoundingClientRect(); if (this.addPoint(e.pageX - t.left, e.pageY - t.top, !0), this.lastX === !1) return this.lastX = e.pageX - t.left, void(this.lastY = e.pageY - t.top); var n = e.pageX - t.left - this.lastX, i = e.pageY - t.top - this.lastY, a = n * n + i * i, r = 10, s = r * r; a > s && (this.lastX = e.pageX - t.left, this.lastY = e.pageY - t.top, this.addMove(n, i)), this.redraw() } }, penUp: function() { if (2 === this.state.addingGesture && (this.paint = !1, !(this.moves && this.moves.length < 3))) { var e = this.moves.map(function(e, t, n) { if (e !== n[t - 1] && e === n[t + 1]) return e }).filter(function(e) { return void 0 !== e }); e.length > 5 && (e = e.splice(e.length - 5, e.length)), this.moves = e.toString().split(",").join(""), this.animation = new s(this.refs.gestureCanvas), this.animation.start(this.moves), this.setState({ gestureExists: Boolean(this.state.assignedArray[this.moves]) }) } }, penLeave: function() { this.paint && (this.paint = !1, this.moves = [], this.forceUpdate()) }, clearAnimation: function() { if (void 0 !== this.animation) { this.animation.stop(); var e = this.refs.gestureCanvas, t = e.getContext("2d"); t.clearRect(0, 0, e.width, e.height) } }, clearCanvas: function() { this.paint = !1, this.pointX = new Array, this.pointY = new Array, this.pointDrag = new Array; var e = this.refs.gestureCanvas, t = e.getContext("2d"); t.clearRect(0, 0, e.width, e.height) }, renderGesture: function() { return r.createElement("canvas", { ref: "gestureCanvas", width: "200", height: "200", onTouchStart: this.penDown, onTouchMove: this.penMove, onTouchEnd: this.penUp, onTouchCancel: this.penLeave, onMouseDown: this.penDown, onMouseMove: this.penMove, onMouseUp: this.penUp, onMouseLeave: this.penLeave, __source: { fileName: a, lineNumber: 373 } }) }, renderAvailableCommands: function() { var e = this.consolidateCommands(); return e.map(function(e) { return r.createElement("option", { key: "id-command-" + e.name, value: e.name, __source: { fileName: a, lineNumber: 392 } }, e.gestureOnLink ? e.label + " / " + e.gestureOnLink.replace(/\s*\(.*?\)\s*/g, "").trim() : e.label) }) }, renderCommands: function() { for (var e = [], t = 0; t < this.state.commandArray.length; t++) { var n = this.state.commandArray[t]; if (n.gestures && (n.actualLabel = n.label, e.push(n), n.gestureOnLink)) { var i = Object.create(n); i.actualLabel = i.gestureOnLink, i.duplicate = !0, e.push(i) } } return e.map(function(e) { return r.createElement("option", { key: "id-gesture-" + e.actualLabel.split(" ").join("_"), disabled: e.duplicate, value: e.duplicate ? e.gestures[0] + "i" : e.gestures[0], __source: { fileName: a, lineNumber: 424 } }, e.duplicate && "↳ ", e.actualLabel) }) }, renderModal: function() { return r.createElement(u, { dialogWidth: 400, __source: { fileName: a, lineNumber: 438 } }, r.createElement("div", { className: "dialog-restore-shortcuts", __source: { fileName: a, lineNumber: 439 } }, r.createElement("header", { className: "dialog-header", __source: { fileName: a, lineNumber: 440 } }, r.createElement("h1", { className: "dialog-title", __source: { fileName: a, lineNumber: 441 } }, c("Restore Gestures?"))), r.createElement("div", { className: "dialog-content", onKeyDown: this.keyDownModal, __source: { fileName: a, lineNumber: 445 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 446 } }, c("All command gestures will be restored to default settings."))), r.createElement("footer", { className: "dialog-footer", onKeyDown: this.keyDownModal, __source: { fileName: a, lineNumber: 450 } }, r.createElement("input", { type: "button", className: "danger", onClick: this.restoreGestures, value: c("Restore"), __source: { fileName: a, lineNumber: 451 } }), r.createElement("input", { type: "button", onClick: this.onCancel, value: c("Cancel"), autoFocus: !0, __source: { fileName: a, lineNumber: 456 } })))) }, render: function() { var e = this.state.selectedCommand, t = e && e.gestures ? e.gestures[0] : void 0, i = !this.moves.length > 0, s = r.createElement("div", { __source: { fileName: a, lineNumber: 473 } }, this.state.confirmation && this.renderModal(), r.createElement("h2", { __source: { fileName: a, lineNumber: 476 } }, c("Mouse")), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 477 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 478 } }, c("Gestures")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 480 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 481 } }, r.createElement("input", { type: "checkbox", checked: this.state.MOUSE_GESTURES_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "MOUSE_GESTURES_ENABLED", "checked"), __source: { fileName: a, lineNumber: 482 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 486 } }, c("Allow Gestures"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 488 } }, c("Hold down right mouse button and perform\n a gesture to issue related command."))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 492 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 493 } }, r.createElement("input", { type: "checkbox", checked: this.state.ALT_GESTURES_ENABLED, disabled: !this.state.MOUSE_GESTURES_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "ALT_GESTURES_ENABLED", "checked"), __source: { fileName: a, lineNumber: 494 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 499 } }, c("Perform Gestures with ALT Key"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 501 } }, c("Use gestures with trackpad or other input\n device."))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 505 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 506 } }, c("Gesture Mapping")), r.createElement("div", { className: "gesture-map setting-single", __source: { fileName: a, lineNumber: 507 } }, r.createElement("select", { ref: "gestureList", className: "gesture-list", value: t, onChange: this.onGestureListChange, onFocus: this.onGestureListChange, onBlur: this.clearAnimation, size: "9", __source: { fileName: a, lineNumber: 508 } }, this.renderCommands()), r.createElement("div", { className: 2 === this.state.addingGesture ? "active gesture" : "gesture", __source: { fileName: a, lineNumber: 518 } }, this.renderGesture())), r.createElement("div", { className: "setting-single record-gesture", __source: { fileName: a, lineNumber: 524 } }, 0 === this.state.addingGesture && r.createElement("div", { className: "toolbar icons", __source: { fileName: a, lineNumber: 526 } }, r.createElement("button", { className: "button-toolbar add", title: c("New gesture"), onClick: this.addGesture, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: a, lineNumber: 527 } }), r.createElement("button", { className: "button-toolbar delete", title: c("Remove gesture"), onClick: this.removeGesture, disabled: !e, dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: a, lineNumber: 532 } }), r.createElement("button", { className: "button-toolbar edit", title: c("Edit gesture"), onClick: this.editGesture, disabled: !e, dangerouslySetInnerHTML: { __html: n(217) }, __source: { fileName: a, lineNumber: 538 } }), r.createElement("input", { type: "button", value: c("Restore Default Gestures"), onClick: this.confirmRestore, __source: { fileName: a, lineNumber: 544 } })), 1 === this.state.addingGesture && r.createElement("form", { onSubmit: this.editGesture, __source: { fileName: a, lineNumber: 551 } }, r.createElement("h3", { className: "pad-top", __source: { fileName: a, lineNumber: 552 } }, c("Pick a Command")), r.createElement("select", { className: "command-list", autoFocus: !0, __source: { fileName: a, lineNumber: 553 } }, this.renderAvailableCommands()), r.createElement("input", { type: "submit", value: c("Next..."), __source: { fileName: a, lineNumber: 556 } }), r.createElement("input", { type: "button", onClick: this.onCancelGesture, value: c("Cancel"), __source: { fileName: a, lineNumber: 558 } })), 2 === this.state.addingGesture && r.createElement("div", { className: "add-gesture", __source: { fileName: a, lineNumber: 565 } }, r.createElement("div", { __source: { fileName: a, lineNumber: 566 } }, r.createElement("h3", { className: "pad-top", __source: { fileName: a, lineNumber: 567 } }, c("Recording “$1” Gesture", [e.gestureOnLink || e.label])), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 572 } }, c("Draw a new gesture in the\n highlighted gesture area above. Gesture may consist of\n horizontal and vertical lines, limited to maximum of five\n strokes. Once you are satisfied with the shape, add new\n gesture to your list."))), r.createElement("div", { className: "save", __source: { fileName: a, lineNumber: 578 } }, r.createElement("input", { type: "submit", value: c("Save Gesture"), onClick: this.save, disabled: i || this.state.gestureExists, __source: { fileName: a, lineNumber: 579 } }), r.createElement("input", { type: "button", onClick: this.onCancelGesture, value: c("Cancel"), __source: { fileName: a, lineNumber: 583 } }), this.state.gestureExists && r.createElement("p", { className: "alert", __source: { fileName: a, lineNumber: 587 } }, c("This gesture already exists.")))))), null !== this.state.rockerGestures && r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 599 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 600 } }, c("Rocker Gestures")), r.createElement("label", { __source: { fileName: a, lineNumber: 601 } }, r.createElement("input", { type: "checkbox", checked: this.state.rockerGestures, onChange: this.checkChange, __source: { fileName: a, lineNumber: 602 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 605 } }, c("Allow Rocker Gestures"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 607 } }, c("Press right mouse button followed by left\n mouse button click to go back in history. Press left mouse\n button followed by right click to advance forward in\n history."))))); return A(s, this.props.filter) } }); e.exports = p }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_676 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/StartPage.jsx", r = n(1), s = n(5), o = n(41), l = n(3), c = n(13), u = n(12), A = n(2), d = [{ name: A("Mist"), path: "../resources/bg.jpg" }, { name: A("Sunset"), path: "../resources/bg_alt_1.jpg" }, { name: A("Starry Night"), path: "../resources/bg_alt_2.jpg" }, { name: A("Pink Cloud"), path: "../resources/bg_alt_3.jpg" }, { name: A("Jellyfish"), path: "../resources/bg_alt_4.jpg" }, { name: A("Purple Lake"), path: "../resources/bg_alt_5.jpg" }, { name: A("Wave"), path: "../resources/bg_alt_6.jpg" }], h = [{ name: A("Default"), hexValue: "#cccccc" }, { name: A("Blue"), hexValue: "#bdd1de" }, { name: A("Pro"), hexValue: "#313b41" }], m = r.createClass({ displayName: "Appearance", mixins: [c], vivaldiSettingsKeys: ["STARTPAGE_SHOW_IMAGE", "STARTPAGE_IMAGE", "STARTPAGE_IMAGE_USER_DEFINED", "STARTPAGE_IMAGE_STRETCH", "STARTPAGE_IMAGE_REPEAT", "STARTPAGE_BG_COLOR", "STARTPAGE_BG_COLOR_USER_DEFINED", "SPEEDDIAL_TITLES_VISIBLE", "SPEEDDIAL_ADDBUTTON_VISIBLE", "SPEEDDIAL_COLS"], saveVivaldiSettingFromEvent: function(e, t, n) { l.set(i({}, e, n.target[t])) }, setStartpageImageStretch: function(e) { var t = e.target.checked; this.setState({ STARTPAGE_IMAGE_STRETCH: t, STARTPAGE_IMAGE_REPEAT: !t && this.state.STARTPAGE_IMAGE_REPEAT }), l.set({ STARTPAGE_IMAGE_STRETCH: t, STARTPAGE_IMAGE_REPEAT: !t && this.state.STARTPAGE_IMAGE_REPEAT }) }, setStartpageImageRepeat: function(e) { var t = e.target.checked; this.setState({ STARTPAGE_IMAGE_REPEAT: t, STARTPAGE_IMAGE_STRETCH: !t && this.state.STARTPAGE_IMAGE_STRETCH }), l.set({ STARTPAGE_IMAGE_REPEAT: t, STARTPAGE_IMAGE_STRETCH: !t && this.state.STARTPAGE_IMAGE_STRETCH }) }, setBackgroundImage: function(e) { l.set({ STARTPAGE_SHOW_IMAGE: !0, STARTPAGE_IMAGE: e }) }, setBackgroundColor: function(e) { l.set({ STARTPAGE_BG_COLOR: e, STARTPAGE_SHOW_IMAGE: !1 }) }, setStartpageShowImage: function(e) { var t = e.target.checked; this.setState({ STARTPAGE_SHOW_IMAGE: t }), l.set({ STARTPAGE_SHOW_IMAGE: t }) }, setStartpageUserDefinedBgColor: function(e) { var t = e.target.value; this.setState({ STARTPAGE_BG_COLOR_USER_DEFINED: t }), l.set({ STARTPAGE_BG_COLOR_USER_DEFINED: t }) }, setStartpageUserDefinedImage: function(e) { var t = e.target.files[0], n = new FileReader; n.onloadend = function(e) { this.setState({ STARTPAGE_IMAGE_USER_DEFINED: e.target.result }), l.set({ STARTPAGE_IMAGE_USER_DEFINED: e.target.result }) }.bind(this), n.readAsDataURL(t) }, handleColorClick: function() { this.refs.bgColorPicker.click() }, handleImageClick: function() { this.refs.bgImagePicker.click() }, render: function() { var e = this, t = s({ selectbox: !0, "selectbox-selected": "user_defined" === this.state.STARTPAGE_BG_COLOR }), n = r.createElement("div", { className: "settings-startpage", __source: { fileName: a, lineNumber: 163 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 164 } }, A("other", "Start Page")), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 166 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 167 } }, A("Background Color")), h.map(function(t) { var n = s({ selectbox: !0, "selectbox-selected": e.state.STARTPAGE_BG_COLOR.toLowerCase() === t.hexValue }); return r.createElement("button", { key: t.name, title: t.name, className: n, onClick: e.setBackgroundColor.bind(e, t.hexValue), __source: { fileName: a, lineNumber: 177 } }, r.createElement("div", { className: "selectbox-image", style: { backgroundColor: t.hexValue }, __source: { fileName: a, lineNumber: 182 } }, r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 184 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 186 } }))), r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 189 } }, t.name)) }), r.createElement("button", { title: A("Custom"), className: t, onClick: this.setBackgroundColor.bind(this, "user_defined"), __source: { fileName: a, lineNumber: 194 } }, r.createElement("div", { className: "selectbox-image", style: { backgroundColor: this.state.STARTPAGE_BG_COLOR_USER_DEFINED }, __source: { fileName: a, lineNumber: 198 } }, r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 200 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 202 } }))), "user_defined" === this.state.STARTPAGE_BG_COLOR ? r.createElement("input", { type: "button", className: "startpage-colorpicker-trigger", onClick: this.handleColorClick, title: A("Change the Background Color"), value: A("Change..."), __source: { fileName: a, lineNumber: 206 } }) : r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 212 } }, r.createElement("span", { __source: { fileName: a, lineNumber: 213 } }, A("Custom"))))), r.createElement("input", { ref: "bgColorPicker", type: "color", value: this.state.STARTPAGE_BG_COLOR_USER_DEFINED, onChange: this.setStartpageUserDefinedBgColor, style: { position: "absolute", visibility: "hidden" }, __source: { fileName: a, lineNumber: 220 } }), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 225 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 226 } }, A("Background Image")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 227 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 228 } }, r.createElement("input", { type: "checkbox", checked: this.state.STARTPAGE_SHOW_IMAGE, onChange: this.setStartpageShowImage, __source: { fileName: a, lineNumber: 229 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 232 } }, A("Show Background Image")))), d.map(function(t) { var n = s({ selectbox: !0, "selectbox-selected": t.path === e.state.STARTPAGE_IMAGE }); return r.createElement("button", { key: t.name, title: t.name, className: n, onClick: e.setBackgroundImage.bind(e, t.path), __source: { fileName: a, lineNumber: 244 } }, r.createElement("div", { className: "selectbox-image", style: { backgroundImage: "url(" + t.path + ")" }, __source: { fileName: a, lineNumber: 249 } }, r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 251 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 253 } }))), r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 256 } }, t.name)) }), r.createElement("button", { title: A("Custom"), className: "selectbox " + ("user_defined" === this.state.STARTPAGE_IMAGE ? "selectbox-selected" : ""), onClick: this.setBackgroundImage.bind(this, "user_defined"), __source: { fileName: a, lineNumber: 261 } }, r.createElement("div", { className: "selectbox-image", style: { backgroundImage: "url(" + this.state.STARTPAGE_IMAGE_USER_DEFINED + ")" }, __source: { fileName: a, lineNumber: 265 } }, r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 267 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 269 } }))), "user_defined" === this.state.STARTPAGE_IMAGE ? r.createElement("input", { type: "button", className: "startpage-colorpicker-trigger", onClick: this.handleImageClick, title: A("Change the Background Image"), value: A("Change..."), __source: { fileName: a, lineNumber: 273 } }) : r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 279 } }, r.createElement("span", { __source: { fileName: a, lineNumber: 280 } }, A("Custom")))), r.createElement("input", { type: "file", disabled: !this.state.STARTPAGE_SHOW_IMAGE, ref: "bgImagePicker", onChange: this.setStartpageUserDefinedImage, style: { position: "absolute", visibility: "hidden" }, __source: { fileName: a, lineNumber: 285 } })), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 291 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 292 } }, A("Background Image Options")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 293 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 294 } }, r.createElement("input", { type: "checkbox", disabled: !this.state.STARTPAGE_SHOW_IMAGE, checked: this.state.STARTPAGE_IMAGE_STRETCH, onChange: this.setStartpageImageStretch, __source: { fileName: a, lineNumber: 295 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 299 } }, A("Scale to Fit")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 302 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 303 } }, r.createElement("input", { type: "checkbox", disabled: !this.state.STARTPAGE_SHOW_IMAGE, checked: this.state.STARTPAGE_IMAGE_REPEAT, onChange: this.setStartpageImageRepeat, __source: { fileName: a, lineNumber: 304 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 308 } }, A("Repeat"))))), r.createElement("h2", { __source: { fileName: a, lineNumber: 314 } }, A("Speed Dial")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 316 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 317 } }, A("Show Speed Dial Titles")), r.createElement(o, { name: "SpeedDialTitles", value: this.state.SPEEDDIAL_TITLES_VISIBLE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SPEEDDIAL_TITLES_VISIBLE", "value"), __source: { fileName: a, lineNumber: 319 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 324 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 325 } }, r.createElement("input", { type: "radio", value: "always", __source: { fileName: a, lineNumber: 326 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 327 } }, A("Always")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 330 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 331 } }, r.createElement("input", { type: "radio", value: "hover", __source: { fileName: a, lineNumber: 332 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 333 } }, A("When Needed")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 336 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 337 } }, r.createElement("input", { type: "radio", value: "never", __source: { fileName: a, lineNumber: 338 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 339 } }, A("Never")))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 346 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 347 } }, A("Speed Dial Layout")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 348 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 349 } }, r.createElement("input", { type: "checkbox", checked: this.state.SPEEDDIAL_ADDBUTTON_VISIBLE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SPEEDDIAL_ADDBUTTON_VISIBLE", "checked"), __source: { fileName: a, lineNumber: 350 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 354 } }, A("Show “Add” button"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 356 } }, A("When disabled, new bookmarks can be added\n by double-clicking the Speed Dial background.")))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 362 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 363 } }, A("Maximum Columns")), r.createElement("select", { className: "max-columns", value: this.state.SPEEDDIAL_COLS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SPEEDDIAL_COLS", "value"), title: A("Number of Speed Dial columns"), __source: { fileName: a, lineNumber: 365 } }, r.createElement("option", { value: "1", __source: { fileName: a, lineNumber: 370 } }, "1"), r.createElement("option", { value: "2", __source: { fileName: a, lineNumber: 371 } }, "2"), r.createElement("option", { value: "3", __source: { fileName: a, lineNumber: 372 } }, "3"), r.createElement("option", { value: "4", __source: { fileName: a, lineNumber: 373 } }, "4"), r.createElement("option", { value: "5", __source: { fileName: a, lineNumber: 374 } }, "5"), r.createElement("option", { value: "6", __source: { fileName: a, lineNumber: 375 } }, "6")))); return u(n, this.props.filter) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_677 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/TabPage.jsx", a = n(1), r = n(72), s = n(3), o = n(12), l = n(41), c = n(20), u = c.urls, A = n(2), d = a.createClass({ displayName: "TabPageSetting", vivaldiSettingsKeys: ["DEFAULT_TAB_PAGE", "DEFAULT_TAB_CUSTOM_PAGE"], getInitialState: function() { return { tabPage: s.getSync("DEFAULT_TAB_PAGE") || u.internals.startpage, tabCustomPage: s.getSync("DEFAULT_TAB_CUSTOM_PAGE"), startpage: u.internals.startpage, blankpage: u.internals.blankpage, homepage: s.getSync(r.kVivaldiHomepage) } }, saveInternal: function(e) { var t = e.target.value; t !== this.state.DEFAULT_TAB_PAGE ? s.set({ DEFAULT_TAB_PAGE: t }) : "custom" === t && s.set({ DEFAULT_TAB_PAGE: this.state.tabCustomPage }), this.setState({ tabPage: t }) }, saveCustom: function() { var e = this.refs.tabCustomPage.value; "" === e.trim() || e.match(/^[a-zA-Z]+:\/\//) || e.startsWith("vivaldi:") || e.startsWith("chrome:") || e.startsWith("chrome-extension:") || e.startsWith("about:") || (e = "http://" + e), s.set({ DEFAULT_TAB_PAGE: e, DEFAULT_TAB_CUSTOM_PAGE: e }, this.setState({ tabPage: e, tabCustomPage: e })) }, tabCustomPageChanged: function() { this.setState({ tabCustomPage: this.refs.tabCustomPage.value }) }, render: function() { var e = this.state.tabPage, t = a.createElement("div", { className: "setting-group new-tab-page", __source: { fileName: i, lineNumber: 69 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 70 } }, A("other", "New Tab Page")), a.createElement(l, { name: "tabPageSettings", ref: "tabPageSettingsGroup", value: e, onChange: this.saveInternal, __source: { fileName: i, lineNumber: 71 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 75 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 76 } }, a.createElement("input", { type: "radio", value: this.state.startpage, __source: { fileName: i, lineNumber: 77 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 78 } }, A("noun", "Start Page")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 81 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 82 } }, a.createElement("input", { type: "radio", value: this.state.homepage, __source: { fileName: i, lineNumber: 83 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 84 } }, A("noun", "Homepage")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 87 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 88 } }, a.createElement("input", { type: "radio", value: this.state.blankpage, __source: { fileName: i, lineNumber: 89 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 90 } }, A("Blank Page")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 93 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 94 } }, a.createElement("input", { type: "radio", className: "pad-top", value: this.state.tabCustomPage, __source: { fileName: i, lineNumber: 95 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 98 } }, a.createElement("input", { type: "text", ref: "tabCustomPage", placeholder: A("Specific Page"), onChange: this.tabCustomPageChanged, disabled: this.state.tabPage !== this.state.tabCustomPage, value: this.state.tabCustomPage, onBlur: this.saveCustom, __source: { fileName: i, lineNumber: 99 } })))))); return o(t, this.props.filter) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_678 // ========================= (function(t) { "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/appearance.jsx", r = n(1), s = n(41), o = n(3), l = n(13), c = n(12), u = n(243), A = n(47), d = n(10), h = n(2), m = r.createClass({ displayName: "Appearance", mixins: [l], vivaldiSettingsKeys: ["CONTRAST_MINIMUM", "DIM_BLURRED", "LINUX_ALT_CONTROLS", "USE_NATIVE_WINDOW_DECORATIONS", "SHOW_VIVALDI_FOOTER", "MINIMALISTIC_UI_SHOW", "USE_ANIMATION", "USE_SETTINGS_WINDOW_AS_TAB", "USE_BUTTONS_IN_RANGE_CONTROLS"], getInitialState: function() { return { initialZoom: 1 } }, componentWillMount: function() { var e = this; d.zoom.getVivaldiUIZoom(function(t) { return e.setState({ initialZoom: t }) }) }, saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, reportStatusBar: function(e) { this.saveVivaldiSettingFromEvent("SHOW_VIVALDI_FOOTER", "value", e), "urls" === e.target.value && t.nextTick(function() { return A.setStatus(h("Status Info set to Overlay"), 2e3) }) }, handleZoomUpdated: function(e) { d.zoom.setVivaldiUIZoom(e), this.setState({ initialZoom: e }) }, render: function() { var e = r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 63 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 64 } }, h("Window Appearance")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 66 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 67 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 68 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_NATIVE_WINDOW_DECORATIONS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_NATIVE_WINDOW_DECORATIONS", "checked"), __source: { fileName: a, lineNumber: 69 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 73 } }, h("Use Native Window"))), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 75 } }, h("This setting requires a restart to take full effect."))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 80 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 81 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_SETTINGS_WINDOW_AS_TAB, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_SETTINGS_WINDOW_AS_TAB", "checked"), __source: { fileName: a, lineNumber: 82 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 87 } }, h("Open Settings in a Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 91 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 92 } }, r.createElement("input", { type: "checkbox", checked: this.state.MINIMALISTIC_UI_SHOW, onChange: this.saveVivaldiSettingFromEvent.bind(this, "MINIMALISTIC_UI_SHOW", "checked"), __source: { fileName: a, lineNumber: 93 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 97 } }, h("Show User Interface")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 101 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 102 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_ANIMATION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_ANIMATION", "checked"), __source: { fileName: a, lineNumber: 103 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 107 } }, h("Use Animation")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 111 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 112 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_BUTTONS_IN_RANGE_CONTROLS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_BUTTONS_IN_RANGE_CONTROLS", "checked"), __source: { fileName: a, lineNumber: 113 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 117 } }, h("Use Buttons in Range Controls"))))), "linux" === this.props.platform && r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 122 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 123 } }, h("Window Controls Position")), r.createElement(s, { className: "linuxAltControls", ref: "linuxAltControls", name: "linuxAltControls", value: this.state.LINUX_ALT_CONTROLS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "LINUX_ALT_CONTROLS", "value"), __source: { fileName: a, lineNumber: 124 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 130 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 131 } }, r.createElement("input", { type: "radio", value: !1, __source: { fileName: a, lineNumber: 132 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 133 } }, h("Right Side")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 136 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 137 } }, r.createElement("input", { type: "radio", value: !0, __source: { fileName: a, lineNumber: 138 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 139 } }, h("Left Side")))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 146 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 147 } }, h("Status Bar")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 148 } }, r.createElement(s, { name: "StatusBar", className: "group", value: this.state.SHOW_VIVALDI_FOOTER, onChange: this.reportStatusBar, __source: { fileName: a, lineNumber: 149 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 153 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 154 } }, r.createElement("input", { type: "radio", value: "on", __source: { fileName: a, lineNumber: 155 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 156 } }, h("Show Status Bar")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 159 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 160 } }, r.createElement("input", { type: "radio", value: "urls", __source: { fileName: a, lineNumber: 161 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 162 } }, h("Show Status Info Overlay")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 165 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 166 } }, r.createElement("input", { type: "radio", value: "off", __source: { fileName: a, lineNumber: 167 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 168 } }, h("Hide Status Bar"))))))), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 175 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 176 } }, h("User Interface Zoom")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 177 } }, r.createElement(u, { maxLevel: 2, minLevel: .5, step: .05, delay: !0, initialZoom: this.state.initialZoom, onZoomUpdated: this.handleZoomUpdated, __source: { fileName: a, lineNumber: 178 } }))), r.createElement("h2", { __source: { fileName: a, lineNumber: 188 } }, h("Color")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 190 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 191 } }, h("Contrast Adjustment")), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 192 } }, h("Rebalances the color palette. May cause\n dramatic color shifts.")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 194 } }, r.createElement(s, { name: "contrastMinimum", className: "group", value: this.state.CONTRAST_MINIMUM, onChange: this.saveVivaldiSettingFromEvent.bind(this, "CONTRAST_MINIMUM", "value"), __source: { fileName: a, lineNumber: 195 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 201 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 202 } }, r.createElement("input", { type: "radio", value: "0", __source: { fileName: a, lineNumber: 203 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 204 } }, h("No Modifications")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 207 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 208 } }, r.createElement("input", { type: "radio", value: "4.5", __source: { fileName: a, lineNumber: 209 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 210 } }, h("Medium (WCAG AA)")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 213 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 214 } }, r.createElement("input", { type: "radio", value: "7", __source: { fileName: a, lineNumber: 215 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 216 } }, h("High (WCAG AAA)")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 219 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 220 } }, r.createElement("input", { type: "radio", value: "12", __source: { fileName: a, lineNumber: 221 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 222 } }, h("Maximum"))))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 229 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 230 } }, h("Background Window Behavior")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 232 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 233 } }, r.createElement("input", { type: "checkbox", checked: this.state.DIM_BLURRED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "DIM_BLURRED", "checked"), __source: { fileName: a, lineNumber: 234 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 238 } }, h("Fade Foreground Colors")))))); return c(e, this.props.filter) } }); e.exports = m }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_679 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/bookmarkBar.jsx", r = n(1), s = n(54), o = n(350), l = n(41), c = n(3), u = n(13), A = n(2), d = n(12), h = r.createClass({ displayName: "BookmarkBar", mixins: [u], vivaldiSettingsKeys: ["BOOKMARK_BAR_POSITION", "BOOKMARK_BAR_VISIBLE", "BOOKMARK_BAR_DISPLAY"], handleShowBookmarkBar: function() { c.set({ BOOKMARK_BAR_VISIBLE: !this.state.BOOKMARK_BAR_VISIBLE }) }, saveVivaldiSettingFromEvent: function(e, t, n) { c.set(i({}, e, n.target[t])) }, onFolderChange: function(e) { s.setBookmarkBarFolder(e.target.value) }, render: function() { var e = r.createElement("div", { __source: { fileName: a, lineNumber: 36 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 37 } }, A("Bookmark Bar")), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 39 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 40 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 41 } }, r.createElement("input", { type: "checkbox", checked: this.state.BOOKMARK_BAR_VISIBLE, onChange: this.handleShowBookmarkBar, __source: { fileName: a, lineNumber: 42 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 45 } }, A("Show Bookmark Bar"))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 50 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 51 } }, A("Select Bookmark Bar Folder")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 52 } }, r.createElement(o, { onChange: this.onFolderChange, __source: { fileName: a, lineNumber: 53 } }))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 58 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 59 } }, A("Bookmark Bar Position")), r.createElement(l, { name: "bookmark-position", value: this.state.BOOKMARK_BAR_POSITION, ref: "bookmarkPositionGroup", onChange: this.saveVivaldiSettingFromEvent.bind(this, "BOOKMARK_BAR_POSITION", "value"), __source: { fileName: a, lineNumber: 60 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 65 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 66 } }, r.createElement("input", { type: "radio", value: "top", __source: { fileName: a, lineNumber: 67 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 68 } }, A("Top")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 71 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 72 } }, r.createElement("input", { type: "radio", value: "bottom", __source: { fileName: a, lineNumber: 73 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 74 } }, A("Bottom")))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 80 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 81 } }, A("Bookmark Bar Display")), r.createElement(l, { name: "bookmark_bar_display", ref: "bookmark_bar_display", value: this.state.BOOKMARK_BAR_DISPLAY, onChange: this.saveVivaldiSettingFromEvent.bind(this, "BOOKMARK_BAR_DISPLAY", "value"), __source: { fileName: a, lineNumber: 83 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 88 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 89 } }, r.createElement("input", { type: "radio", value: "default", __source: { fileName: a, lineNumber: 90 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 91 } }, A("Text and Icon")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 94 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 95 } }, r.createElement("input", { type: "radio", value: "text", __source: { fileName: a, lineNumber: 96 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 97 } }, A("Text Only")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 100 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 101 } }, r.createElement("input", { type: "radio", value: "icon", __source: { fileName: a, lineNumber: 102 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 103 } }, A("Icon Only")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 106 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 107 } }, r.createElement("input", { type: "radio", value: "iconexceptfolders", __source: { fileName: a, lineNumber: 108 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 109 } }, A("Bookmark Icon Only"))))))); return d(e, this.props.filter) } }); e.exports = h }, function(e, t, n) { // ========================= // Function_680 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/homePageSetting.jsx", a = n(4), r = n(1), s = n(12), o = n(10), l = n(2), c = n(72), u = n(3), A = "about:blank", d = r.createClass({ displayName: "HomePageSetting", getInitialState: function() { return { homePage: u.getSync(c.kVivaldiHomepage), initialPage: u.getSync(c.kVivaldiHomepage), updating: !1 } }, saveHomePage: function() { var e = this.state.homePage; "" === e ? e = A : e.match(/^[a-zA-Z]+:\/\//) || e.match(/^vivaldi:/) || e.match(/^about:/) || (e = "http://" + e); var t = { preferenceKey: c.kVivaldiHomepage, preferenceValue: { string: e }, preferenceType: "string" }; o.settings.setPreference(t), a.runtime.lastError && console.warn("Error storing home page: " + a.runtime.lastError), this.setState({ initialPage: this.refs.homePage.value, updating: !1 }) }, homePageChange: function(e) { var t = e.target.value; this.setState({ homePage: t, updating: t !== this.state.saved }) }, render: function() { var e = r.createElement("div", { className: "setting-group homepage", __source: { fileName: i, lineNumber: 56 } }, r.createElement("h3", { __source: { fileName: i, lineNumber: 57 } }, l("other", "Homepage")), r.createElement("form", { className: "setting-single", onSubmit: this.saveHomePage, __source: { fileName: i, lineNumber: 58 } }, r.createElement("input", { type: "text", ref: "homePage", placeholder: l("Address"), onChange: this.homePageChange, value: this.state.homePage, __source: { fileName: i, lineNumber: 60 } }), r.createElement("input", { type: "submit", value: l("Save"), disabled: !this.state.updating, __source: { fileName: i, lineNumber: 65 } }))); return s(e, this.props.filter) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_681 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/menuType.jsx", r = n(1), s = n(41), o = n(3), l = n(13), c = n(2), u = n(12), A = r.createClass({ displayName: "MenuType", mixins: [l], vivaldiSettingsKeys: ["VIVALDI_MENU_POSITION"], saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("span", { __source: { fileName: a, lineNumber: 22 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 23 } }, c("Menu")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 24 } }, r.createElement(s, { name: "menuPosition", ref: "menuPositionGroup", value: this.state.VIVALDI_MENU_POSITION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "VIVALDI_MENU_POSITION", "value"), className: "group", __source: { fileName: a, lineNumber: 25 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 31 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 32 } }, r.createElement("input", { type: "radio", value: "top", __source: { fileName: a, lineNumber: 33 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 34 } }, c("Horizontal Menu")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 37 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 38 } }, r.createElement("input", { type: "radio", value: "vivaldi", __source: { fileName: a, lineNumber: 39 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 40 } }, c("Vivaldi Button"))))))); return u(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_682 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/networkSettings.jsx", a = n(1), r = n(10), s = n(2), o = n(12), l = a.createClass({ displayName: "NetworkSettings", onClick: function() { r.importData.launchNetworkSettings(function(e) {}) }, render: function() { var e = a.createElement("span", { __source: { fileName: i, lineNumber: 13 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 15 } }, s("Network")), a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 17 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 18 } }, s("Proxies")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 20 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 21 } }, a.createElement("input", { type: "button", value: s("Proxy Settings"), onClick: this.onClick, __source: { fileName: i, lineNumber: 22 } }))))); return o(e, this.props.filter) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_683 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/panels.jsx", r = n(1), s = n(41), o = n(3), l = n(13), c = n(2), u = n(12), A = r.createClass({ displayName: "Panels", mixins: [l], vivaldiSettingsKeys: ["SHOW_PANEL_SWITCH", "PANEL_POSITION", "SHOW_NOTESPANEL_FOR_NEW_NOTES", "NOTES_ADD_SCREENSHOT", "TAB_COUNTER_DETECTION"], saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("span", { __source: { fileName: a, lineNumber: 25 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 26 } }, c("Panels")), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 27 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 28 } }, c("Panel Position")), r.createElement(s, { name: "panelPosition", ref: "panelPositionGroup", value: this.state.PANEL_POSITION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "PANEL_POSITION", "value"), className: "group", __source: { fileName: a, lineNumber: 29 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 35 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 36 } }, r.createElement("input", { type: "radio", value: "left", __source: { fileName: a, lineNumber: 37 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 38 } }, c("Left Side")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 42 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 43 } }, r.createElement("input", { type: "radio", value: "right", __source: { fileName: a, lineNumber: 44 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 45 } }, c("Right Side")))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 52 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 53 } }, c("Panel Options")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 54 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 55 } }, r.createElement("input", { type: "checkbox", title: c("Display a panel toggle button along the side"), checked: this.state.SHOW_PANEL_SWITCH, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_PANEL_SWITCH", "checked"), __source: { fileName: a, lineNumber: 56 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 61 } }, c("Show Panel Toggle"))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 66 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 67 } }, c("Notes")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 68 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 69 } }, r.createElement("input", { type: "checkbox", title: c("Show panel content when adding a note from a page"), checked: this.state.SHOW_NOTESPANEL_FOR_NEW_NOTES, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_NOTESPANEL_FOR_NEW_NOTES", "checked"), __source: { fileName: a, lineNumber: 70 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 75 } }, c("Open Panel Automatically")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 79 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 80 } }, r.createElement("input", { type: "checkbox", title: c("Add a screenshot when adding a note from a page"), checked: this.state.NOTES_ADD_SCREENSHOT, onChange: this.saveVivaldiSettingFromEvent.bind(this, "NOTES_ADD_SCREENSHOT", "checked"), __source: { fileName: a, lineNumber: 81 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 86 } }, c("Fetch Screenshot for New Notes")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 90 } }, r.createElement("label", { title: c("Detect and display numeric notification from page title in Tabs and Web Panels"), __source: { fileName: a, lineNumber: 91 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_COUNTER_DETECTION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_COUNTER_DETECTION", "checked"), __source: { fileName: a, lineNumber: 92 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 96 } }, c("Detect Page Title Notifications")))))); return u(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_684 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/quickCommands.jsx", r = n(1), s = n(3), o = n(2), l = n(13), c = n(12), u = r.createClass({ displayName: "QuickCommands", mixins: [l], vivaldiSettingsKeys: ["QUICK_COMMAND_OPEN_URL_IN_NEW_TAB", "QC_LAUNCH_BOOKMARK_ON_NICK_MATCH"], saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("span", { __source: { fileName: a, lineNumber: 22 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 23 } }, o("Quick Commands")), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 24 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 25 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 26 } }, r.createElement("input", { type: "checkbox", checked: this.state.QUICK_COMMAND_OPEN_URL_IN_NEW_TAB, onChange: this.saveVivaldiSettingFromEvent.bind(this, "QUICK_COMMAND_OPEN_URL_IN_NEW_TAB", "checked"), __source: { fileName: a, lineNumber: 27 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 32 } }, o("Open Pages in New Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 35 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 36 } }, r.createElement("input", { type: "checkbox", checked: this.state.QC_LAUNCH_BOOKMARK_ON_NICK_MATCH, onChange: this.saveVivaldiSettingFromEvent.bind(this, "QC_LAUNCH_BOOKMARK_ON_NICK_MATCH", "checked"), __source: { fileName: a, lineNumber: 37 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 42 } }, o("Open Bookmarks on Nickname Match")))))); return c(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_685 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/setVivaldiDefaultBrowserDlg.jsx", a = n(1), r = n(371), s = n(34), o = n(2), l = a.createClass({ displayName: "SetVivaldiDefaultBrowserDlg", getInitialState: function() { return { msg: "", shown: !0, modalShown: !1 } }, handleClick: function() { var e = { dialogText: this.state.value }; this.state.shown && this.props.onClose(e), this.setState({ shown: !this.state.shown }) }, componentWillReceiveProps: function() { this.setState({ shown: !0 }) }, render: function() { return this.state.shown ? a.createElement(s, { onRequestClose: this.handleClick, viewMode: "default-browser slide", __source: { fileName: i, lineNumber: 31 } }, a.createElement("header", { className: "dialog-header", __source: { fileName: i, lineNumber: 32 } }, a.createElement("h1", { className: "dialog-title", __source: { fileName: i, lineNumber: 33 } }, o("Default Browser"))), a.createElement("div", { className: "dialog-content", __source: { fileName: i, lineNumber: 36 } }, a.createElement(r, { onClose: this.handleClick, startup: !0, __source: { fileName: i, lineNumber: 37 } })), a.createElement("footer", { className: "dialog-footer", __source: { fileName: i, lineNumber: 41 } }, a.createElement("input", { type: "button", value: o("Cancel"), onClick: this.handleClick, __source: { fileName: i, lineNumber: 42 } }))) : null } }); e.exports = l }, function(e, t, n) { // ========================= // Function_686 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/specificSession.jsx", r = n(1), s = n(4), o = n(12), l = n(687), c = n(45), u = n(2), A = n(10), d = n(20), h = d.urls, m = n(73), p = r.createClass({ displayName: "SpecificSession", getInitialState: function() { return { STARTUP_SESSION_URLS: [], hasUrlInInput: !1 } }, componentWillMount: function() { var e = this; A.settings.getPreference("session.startup_urls", function(t) { var n = t.preferenceValue.array, i = n.map(function(e, t) { return { url: e, id: t } }); e.setState({ STARTUP_SESSION_URLS: i }) }) }, handleInputChange: function(e) { if (e.target.value.length > 2 ? this.setState({ hasUrlInInput: !0 }) : this.setState({ hasUrlInInput: !1 }), e.keyCode === c.KEY_ESCAPE) e.target.value = "", this.setState({ hasUrlInInput: !1 }); else { if (e.keyCode !== c.KEY_RETURN && e.keyCode !== c.KEY_ENTER) return; e.target.value.length > 2 && this.addUrl() } }, saveChanges: function() { for (var e = [], t = this.state.STARTUP_SESSION_URLS, n = 0; n < t.length; n++) e.push(t[n].url); var i = { preferenceKey: "session.startup_urls", preferenceValue: { array: e }, preferenceType: "array" }; A.settings.setPreference(i) }, addUrl: function() { var e = this.refs.createUrlField.value.trim(); e.indexOf("://") === -1 && (e = "http://" + e), this.refs.createUrlField.value = "", this.setState({ hasUrlInInput: !1 }); var t = 0; this.state.STARTUP_SESSION_URLS.length > 0 && (t = Math.max.apply(Math, this.state.STARTUP_SESSION_URLS.map(function(e) { return e.id ? e.id : 0 }))), this.state.STARTUP_SESSION_URLS.push({ url: e, id: t + 1 }), this.saveChanges() }, save: function(e) { for (var t = this.state.STARTUP_SESSION_URLS, n = 0; n < t.length; n++) if (t[n].id === e.id) { var i = e.url; i.indexOf(":") === -1 && (i = "http://" + i), t[n].url = i; break } this.setState({ STARTUP_SESSION_URLS: t }, function() { this.saveChanges() }.bind(this)) }, deleteUrl: function(e) { for (var t = this.state.STARTUP_SESSION_URLS, n = 0; n < t.length; n++) if (t[n].url === e.url) { t.splice(n, 1); break } this.setState({ STARTUP_SESSION_URLS: t }, function() { this.saveChanges() }.bind(this)) }, useCurrentPages: function() { var e = this; s.tabs.query({ windowType: "normal" }, function(t) { var n = t.map(function(e) { return m.tabToPage(e) }).filter(function(e) { return !h.isInternalPage(e) }).map(function(e, t) { return { id: t + 1, url: e.get("url") } }); e.setState({ STARTUP_SESSION_URLS: n }), e.saveChanges() }) }, render: function() { var e = this.state.STARTUP_SESSION_URLS.map(function(e) { return r.createElement(l, i({ urlItem: e, key: e.id, onDelete: this.deleteUrl.bind(this, e), onSave: this.save }, this.props, { __source: { fileName: a, lineNumber: 145 } })) }.bind(this)), t = r.createElement("div", { className: "setting-group setting-startup-specific-pages", __source: { fileName: a, lineNumber: 154 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 155 } }, u("Startup Pages")), e, r.createElement("div", { className: "setting-flexgroup", __source: { fileName: a, lineNumber: 158 } }, r.createElement("input", { className: "setting-single-flex", type: "text", ref: "createUrlField", value: this.props.url, onKeyUp: this.handleInputChange, placeholder: u("Enter page URL"), __source: { fileName: a, lineNumber: 159 } }), r.createElement("input", { className: "setting-single-noflex", type: "button", onClick: this.addUrl, disabled: !this.state.hasUrlInInput, value: u("Add"), __source: { fileName: a, lineNumber: 164 } })), r.createElement("input", { type: "button", onClick: this.useCurrentPages, value: u("Use Current Pages"), __source: { fileName: a, lineNumber: 169 } })); return o(t, this.props.filter) } }); e.exports = p }, function(e, t, n) { // ========================= // Function_687 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/specificSessionItem.jsx", a = n(1), r = n(12), s = n(2), o = a.createClass({ displayName: "SpecificSessionItem", handleUrlChange: function(e) { var t = this.props.urlItem; t.url = e.target.value, this.props.onSave(t) }, render: function() { var e = a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 16 } }, a.createElement("input", { className: "edit", type: "text", ref: "editField", value: this.props.urlItem.url, onChange: this.handleUrlChange, __source: { fileName: i, lineNumber: 17 } }), a.createElement("input", { type: "button", tabIndex: "-1", className: "circular clearkey", onClick: this.props.onDelete, title: s("Remove page"), __source: { fileName: i, lineNumber: 20 } })); return r(e, this.props.filter) } }); e.exports = o }, function(e, t, n) { // ========================= // Function_688 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/startupSetting.jsx", r = n(2), s = n(25), o = n(12), l = n(9), c = n(41), u = n(1), A = n(686), d = n(10), h = n(72), m = [h.kDeferredTabLoadingAfterRestore, h.kAlwaysLoadPinnedTabAfterRestore], p = u.createClass({ displayName: "StartupSetting", mixins: [l], getInitialState: function() { return { STARTUP_OPTIONS: "last" } }, componentWillMount: function() { d.importData.getStartupAction(function(e) { this.setState({ STARTUP_OPTIONS: e }) }.bind(this)) }, toggleDeferredTabLoading: function() { d.settings.togglePreference(h.kDeferredTabLoadingAfterRestore), this.setState({ deferredTabLoadingAfterRestore: !this.state.deferredTabLoadingAfterRestore }) }, togglePinnedTabLoading: function() { d.settings.togglePreference(h.kAlwaysLoadPinnedTabAfterRestore), this.setState({ alwaysLoadPinnedAfterRestore: !this.state.alwaysLoadPinnedAfterRestore }) }, saveStartup: function(e) { var t = e.target.value; d.importData.setStartupAction(t, function(e) { this.setState({ STARTUP_OPTIONS: e }) }.bind(this)) }, render: function() { var e = "urls" === this.state.STARTUP_OPTIONS ? u.createElement(A, i({}, this.props, { __source: { fileName: a, lineNumber: 62 } })) : null, t = u.createElement("span", { __source: { fileName: a, lineNumber: 65 } }, u.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 66 } }, u.createElement("h3", { __source: { fileName: a, lineNumber: 67 } }, r("Startup with")), u.createElement(c, { name: "startupSettings", ref: "startupSettingsGroup", value: this.state.STARTUP_OPTIONS, onChange: this.saveStartup, __source: { fileName: a, lineNumber: 69 } }, u.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 73 } }, u.createElement("label", { __source: { fileName: a, lineNumber: 74 } }, u.createElement("input", { type: "radio", value: "last", __source: { fileName: a, lineNumber: 75 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 76 } }, r("Last Session")))), u.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 79 } }, u.createElement("label", { __source: { fileName: a, lineNumber: 80 } }, u.createElement("input", { type: "radio", value: "homepage", __source: { fileName: a, lineNumber: 81 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 82 } }, r("radio", "Homepage")))), u.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 85 } }, u.createElement("label", { __source: { fileName: a, lineNumber: 86 } }, u.createElement("input", { type: "radio", value: "speeddial", __source: { fileName: a, lineNumber: 87 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 88 } }, r("radio", "Start Page")))), u.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 91 } }, u.createElement("label", { __source: { fileName: a, lineNumber: 92 } }, u.createElement("input", { type: "radio", value: "urls", __source: { fileName: a, lineNumber: 93 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 94 } }, r("Specific Pages"))))), u.createElement("div", { className: "setting-group pad-top", __source: { fileName: a, lineNumber: 99 } }, u.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 100 } }, u.createElement("label", { title: r("Wait to load restored session content until tab is activated."), __source: { fileName: a, lineNumber: 101 } }, u.createElement("input", { type: "checkbox", checked: this.props.vivaldiSettings[h.kDeferredTabLoadingAfterRestore], onChange: this.toggleDeferredTabLoading, __source: { fileName: a, lineNumber: 103 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 107 } }, r("Lazy Load Restored Tabs")))), u.createElement("div", { className: "setting-single pad-left", __source: { fileName: a, lineNumber: 110 } }, u.createElement("label", { title: r("Load pinned tabs before they are activated."), __source: { fileName: a, lineNumber: 111 } }, u.createElement("input", { type: "checkbox", disabled: !this.props.vivaldiSettings[h.kDeferredTabLoadingAfterRestore], checked: this.props.vivaldiSettings[h.kAlwaysLoadPinnedTabAfterRestore], onChange: this.togglePinnedTabLoading, __source: { fileName: a, lineNumber: 113 } }), u.createElement("span", { __source: { fileName: a, lineNumber: 119 } }, r("Always Load Pinned Tabs")))))), e); return o(t, this.props.filter) } }); e.exports = s(p, m) }, function(e, t, n) { // ========================= // Function_689 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/startupSettingSection.jsx", r = n(1), s = n(11), o = n(2), l = n(688), c = n(371), u = n(680), A = r.createClass({ displayName: "StartupSettingSection", componentDidUpdate: function() { s.findDOMNode(this.refs.startUp).style.display = s.findDOMNode(this.refs.defaultBrowser) || s.findDOMNode(this.refs.homepageSettings) || s.findDOMNode(this.refs.startupSettings) ? "inline" : "none" }, render: function() { return r.createElement("span", { ref: "startUp", __source: { fileName: a, lineNumber: 16 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 17 } }, o("Startup")), r.createElement(c, i({}, this.props, { ref: "defaultBrowser", __source: { fileName: a, lineNumber: 18 } })), r.createElement(u, i({}, this.props, { ref: "homepageSettings", __source: { fileName: a, lineNumber: 19 } })), r.createElement(l, i({}, this.props, { ref: "startupSettings", __source: { fileName: a, lineNumber: 20 } }))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_690 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabActivation.jsx", r = n(1), s = n(41), o = n(3), l = n(25), c = n(2), u = n(12), A = ["TAB_ACTIVATION_PREFER_RELATED", "TAB_CLOSE_ACTIVATION", "TAB_POSITION", "TAB_CLOSE_ALIGN_NEXT", "USE_TAB_CLOSE_ON_DOUBLECLICK", "TAB_NEVER_CLOSE_LAST"], d = r.createClass({ displayName: "TabActivation", saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, isHorizontal: function() { var e = this.props.vivaldiSettings.TAB_POSITION; return "top" === e || "bottom" === e }, render: function() { var e = this.props.vivaldiSettings, t = r.createElement("span", { __source: { fileName: a, lineNumber: 31 } }, r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 32 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 33 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 34 } }, c("Close Tab Activation")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 36 } }, r.createElement("label", { title: c("Activate tabs related by origin first"), __source: { fileName: a, lineNumber: 37 } }, r.createElement("input", { type: "checkbox", checked: e.TAB_ACTIVATION_PREFER_RELATED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_ACTIVATION_PREFER_RELATED", "checked"), __source: { fileName: a, lineNumber: 39 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 45 } }, c("Always Activate Related Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 49 } }, r.createElement(s, { name: "tabActivate", ref: "newTabActivation", value: e.TAB_CLOSE_ACTIVATION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CLOSE_ACTIVATION", "value"), __source: { fileName: a, lineNumber: 50 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 57 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 58 } }, r.createElement("input", { type: "radio", value: "activation_order", __source: { fileName: a, lineNumber: 59 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 60 } }, c("Activate in Recently Used Order")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 64 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 65 } }, r.createElement("input", { type: "radio", value: "left", __source: { fileName: a, lineNumber: 66 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 67 } }, c(this.isHorizontal() ? "Activate Left in Tab Order" : "Activate Above in Tab Order")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 73 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 74 } }, r.createElement("input", { type: "radio", value: "right", __source: { fileName: a, lineNumber: 75 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 76 } }, c(this.isHorizontal() ? "Activate Right in Tab Order" : "Activate Below in Tab Order")))))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 86 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 87 } }, c("Tab Handling")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 88 } }, r.createElement("label", { title: c("Align the close buttons to easily close multiple tabs"), __source: { fileName: a, lineNumber: 89 } }, r.createElement("input", { type: "checkbox", checked: e.TAB_CLOSE_ALIGN_NEXT, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CLOSE_ALIGN_NEXT", "checked"), __source: { fileName: a, lineNumber: 91 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 97 } }, c("Align Next Close Button")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 101 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 102 } }, r.createElement("input", { type: "checkbox", checked: e.USE_TAB_CLOSE_ON_DOUBLECLICK, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_TAB_CLOSE_ON_DOUBLECLICK", "checked"), __source: { fileName: a, lineNumber: 103 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 108 } }, c("Close Tab on Double Click")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 112 } }, r.createElement("label", { title: c("Prevents window closing along with last tab."), __source: { fileName: a, lineNumber: 113 } }, r.createElement("input", { type: "checkbox", checked: e.TAB_NEVER_CLOSE_LAST, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_NEVER_CLOSE_LAST", "checked"), __source: { fileName: a, lineNumber: 114 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 118 } }, c("Don’t Close Window with Last Tab")))))); return u(t, this.props.filter) } }); e.exports = l(d, A) }, function(e, t, n) { // ========================= // Function_691 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabCycling.jsx", r = n(1), s = n(41), o = n(3), l = n(2), c = n(12), u = n(13), A = r.createClass({ displayName: "TabCycling", mixins: [u], vivaldiSettingsKeys: ["TAB_SWITCH_VISUAL", "TAB_CYCLING_ORDER", "MOUSE_WHEEL_TAB_SWITCHING", "TAB_CLICK_ACTIVE_OPENS_PREVIOUS"], getInitialState: function() { return { tabCyclingOrderSetting: "recently used" } }, saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 30 } }, r.createElement("h3", { htmlFor: "tabSelection", __source: { fileName: a, lineNumber: 31 } }, l("Tab Cycling")), r.createElement(s, { name: "tabCyclingOrder", ref: "tabSelGroup", value: this.state.TAB_CYCLING_ORDER, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CYCLING_ORDER", "value"), __source: { fileName: a, lineNumber: 33 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 38 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 39 } }, r.createElement("input", { type: "radio", value: "recently used", __source: { fileName: a, lineNumber: 40 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 41 } }, l("Cycle in Recently Used Order")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 44 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 45 } }, r.createElement("input", { type: "radio", value: "tab order", __source: { fileName: a, lineNumber: 46 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 47 } }, l("Cycle in Tab Order"))))), r.createElement("div", { className: "setting-single pad-top", __source: { fileName: a, lineNumber: 52 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 53 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_SWITCH_VISUAL, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_SWITCH_VISUAL", "checked"), __source: { fileName: a, lineNumber: 54 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 58 } }, l("Show Tab Cycler")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 62 } }, r.createElement("label", { title: l("Scroll over Tab Bar to switch tabs by order, or scroll anywhere else while holding ALT key to switch tabs per Tab Cycling setting."), __source: { fileName: a, lineNumber: 63 } }, r.createElement("input", { type: "checkbox", checked: this.state.MOUSE_WHEEL_TAB_SWITCHING, onChange: this.saveVivaldiSettingFromEvent.bind(this, "MOUSE_WHEEL_TAB_SWITCHING", "checked"), __source: { fileName: a, lineNumber: 66 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 70 } }, l("Switch Tabs by Scrolling")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 74 } }, r.createElement("label", { title: l("Click active tab to hide it and switch to previous tab."), __source: { fileName: a, lineNumber: 75 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_CLICK_ACTIVE_OPENS_PREVIOUS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CLICK_ACTIVE_OPENS_PREVIOUS", "checked"), __source: { fileName: a, lineNumber: 76 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 80 } }, l("Minimize Active Tab"))))); return c(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_692 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabOpen.jsx", r = n(1), s = n(41), o = n(3), l = n(13), c = n(2), u = n(12), A = r.createClass({ displayName: "TabOpen", mixins: [l], vivaldiSettingsKeys: ["TAB_NEW_PLACEMENT", "TAB_CLONE_PLACEMENT"], saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("span", { __source: { fileName: a, lineNumber: 22 } }, r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 23 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 24 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 25 } }, c("New Tab Position")), r.createElement(s, { name: "tabOpen", value: this.state.TAB_NEW_PLACEMENT, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_NEW_PLACEMENT", "value"), __source: { fileName: a, lineNumber: 26 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 30 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 31 } }, r.createElement("input", { type: "radio", value: "rightofcurrent", __source: { fileName: a, lineNumber: 32 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 33 } }, c("After Related Tabs")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 36 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 37 } }, r.createElement("input", { type: "radio", value: "directrightofcurrent", __source: { fileName: a, lineNumber: 38 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 39 } }, c("After Active Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 42 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 43 } }, r.createElement("input", { type: "radio", value: "alwayslast", __source: { fileName: a, lineNumber: 44 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 45 } }, c("As Last Tab"))))))), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 52 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 53 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 54 } }, c("Clone Tab Position")), r.createElement(s, { name: "tabClone", value: this.state.TAB_CLONE_PLACEMENT, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CLONE_PLACEMENT", "value"), __source: { fileName: a, lineNumber: 55 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 59 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 60 } }, r.createElement("input", { type: "radio", value: "rightofcurrent", __source: { fileName: a, lineNumber: 61 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 62 } }, c("After Cloned Tab")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 65 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 66 } }, r.createElement("input", { type: "radio", value: "alwayslast", __source: { fileName: a, lineNumber: 67 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 68 } }, c("As Last Tab")))))))); return u(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_693 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabOptions.jsx", r = n(1), s = n(3), o = n(13), l = n(2), c = n(12), u = r.createClass({ displayName: "TabPosition", mixins: [o], vivaldiSettingsKeys: ["SWITCH_TABS_AT_WINDOW_EDGE", "TAB_CLOSEBUTTON_ENABLED", "TAB_COUNTER_DETECTION", "TAB_UNREAD_ENABLED", "TAB_THUMBNAILS_ENABLED", "USE_TOOLTIP"], saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 26 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 27 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 28 } }, l("Tab Options")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 30 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 31 } }, r.createElement("input", { type: "checkbox", checked: this.state.USE_TOOLTIP, onChange: this.saveVivaldiSettingFromEvent.bind(this, "USE_TOOLTIP", "checked"), __source: { fileName: a, lineNumber: 32 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 37 } }, l("Show Popup Thumbnails")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 41 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 42 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_THUMBNAILS_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_THUMBNAILS_ENABLED", "checked"), __source: { fileName: a, lineNumber: 43 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 48 } }, l("Show Tab Thumbnails")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 52 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 53 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_CLOSEBUTTON_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_CLOSEBUTTON_ENABLED", "checked"), __source: { fileName: a, lineNumber: 54 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 58 } }, l("Display Close Button")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 62 } }, r.createElement("label", { title: l("Detect and display numeric notification from page title in Tabs and Web Panels"), __source: { fileName: a, lineNumber: 63 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_COUNTER_DETECTION, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_COUNTER_DETECTION", "checked"), __source: { fileName: a, lineNumber: 64 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 68 } }, l("Detect Page Title Notifications")))), "mac" !== this.props.platform && r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 74 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 75 } }, r.createElement("input", { type: "checkbox", checked: this.state.SWITCH_TABS_AT_WINDOW_EDGE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SWITCH_TABS_AT_WINDOW_EDGE", "checked"), disabled: "left" === this.state.TAB_POSITION || "right" === this.state.TAB_POSITION, __source: { fileName: a, lineNumber: 76 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 84 } }, l("Remove Tab Spacing in Maximized Windows")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 91 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 92 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_UNREAD_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_UNREAD_ENABLED", "checked"), __source: { fileName: a, lineNumber: 93 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 97 } }, l("Use Unread Indicators")))))); return c(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_694 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabPinning.jsx", r = n(1), s = n(41), o = n(3), l = n(13), c = n(2), u = n(12), A = r.createClass({ displayName: "TabPinning", mixins: [l], vivaldiSettingsKeys: ["CLOSABLE_PINNED_TABS"], saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 21 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 22 } }, c("Pinned Tabs")), r.createElement(s, { name: "closablePinnedTabs", value: this.state.CLOSABLE_PINNED_TABS, onChange: this.saveVivaldiSettingFromEvent.bind(this, "CLOSABLE_PINNED_TABS", "value"), __source: { fileName: a, lineNumber: 23 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 27 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 28 } }, r.createElement("input", { type: "radio", value: "off", __source: { fileName: a, lineNumber: 29 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 30 } }, c("Don’t Close Pinned Tabs")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 33 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 34 } }, r.createElement("input", { type: "radio", value: "bury", __source: { fileName: a, lineNumber: 35 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 36 } }, c("Minimize Instead of Close")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 39 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 40 } }, r.createElement("input", { type: "radio", value: "on", __source: { fileName: a, lineNumber: 41 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 42 } }, c("Close as Other Tabs")))))); return u(e, this.props.filter) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_695 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabPosition.jsx", r = n(1), s = n(3), o = n(25), l = n(354), c = n(2), u = n(12), A = "top", d = "left", h = "right", m = "bottom", p = ["TAB_POSITION", "SHOW_TAB_BAR"], f = r.createClass({ displayName: "TabPosition", saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, setTabPosition: function(e) { s.set({ TAB_POSITION: e }) }, render: function() { var e = this.props.vivaldiSettings, t = e.TAB_POSITION, n = r.createElement("div", { style: { display: "inline" }, __source: { fileName: a, lineNumber: 33 } }, r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 34 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 35 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 36 } }, r.createElement("input", { type: "checkbox", checked: e.SHOW_TAB_BAR, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_TAB_BAR", "checked"), __source: { fileName: a, lineNumber: 37 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 41 } }, c("Show Tab Bar"))))), r.createElement("div", { className: "setting-group unlimited", __source: { fileName: a, lineNumber: 45 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 46 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 47 } }, c("Tab Bar Position")), r.createElement(l, { position: "top", selected: t === A, tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onClick: this.setTabPosition.bind(this, A), __source: { fileName: a, lineNumber: 49 } }), r.createElement(l, { position: "left", selected: t === d, tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onClick: this.setTabPosition.bind(this, d), __source: { fileName: a, lineNumber: 54 } }), r.createElement(l, { position: "right", selected: t === h, tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onClick: this.setTabPosition.bind(this, h), __source: { fileName: a, lineNumber: 59 } }), r.createElement(l, { position: "bottom", selected: t === m, tabIndex: this.props.vivaldiSettings.KEY_ACCESS, onClick: this.setTabPosition.bind(this, m), __source: { fileName: a, lineNumber: 64 } })))); return u(n, this.props.filter) } }); e.exports = o(f, p) }, function(e, t, n) { // ========================= // Function_696 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabSelection.jsx", r = n(1), s = n(3), o = n(13), l = n(59), c = n(2), u = n(12), A = "mac" === l(), d = r.createClass({ displayName: "TabSelection", mixins: [o], vivaldiSettingsKeys: ["TAB_SELECTION_ENABLED", "TAB_SELECTION_INCLUDE_ACTIVE"], saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 23 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 24 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 25 } }, c("Tab Selection")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 27 } }, r.createElement("label", { title: c(A ? "Select multiple tabs with ⌘ and ⇧" : "Select multiple tabs with Ctrl and Shift"), __source: { fileName: a, lineNumber: 28 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_SELECTION_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_SELECTION_ENABLED", "checked"), __source: { fileName: a, lineNumber: 32 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 38 } }, c("Enable Tab Selection")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 42 } }, r.createElement("label", { title: c("The active tab will always be part of the initial tab selection"), __source: { fileName: a, lineNumber: 43 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_SELECTION_INCLUDE_ACTIVE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_SELECTION_INCLUDE_ACTIVE", "checked"), __source: { fileName: a, lineNumber: 47 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 53 } }, c("Include Active Tab in Initial Selection")))))); return u(e, this.props.filter) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_697 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabStacking.jsx", r = n(1), s = n(3), o = n(13), l = n(2), c = n(12), u = r.createClass({ displayName: "TabStacking", mixins: [o], vivaldiSettingsKeys: ["TAB_STACKING", "TAB_STACKING_OPEN_IN_CURRENT", "TAB_STACKING_ALLOW_RENAME"], saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, handleChange: function(e) { s.set({ TAB_STACKING: e.target.checked ? "on" : "off" }) }, render: function() { var e = r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 28 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 29 } }, l("Tab Stacking")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 31 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 32 } }, r.createElement("input", { type: "checkbox", checked: "on" === this.state.TAB_STACKING, onChange: this.handleChange, __source: { fileName: a, lineNumber: 33 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 36 } }, l("Enable Tab Stacking")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 40 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 41 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_STACKING_OPEN_IN_CURRENT, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_STACKING_OPEN_IN_CURRENT", "checked"), __source: { fileName: a, lineNumber: 42 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 46 } }, l("Open Tabs in Current Tab Stack")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 49 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 50 } }, r.createElement("input", { type: "checkbox", checked: this.state.TAB_STACKING_ALLOW_RENAME, onChange: this.saveVivaldiSettingFromEvent.bind(this, "TAB_STACKING_ALLOW_RENAME", "checked"), __source: { fileName: a, lineNumber: 51 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 55 } }, l("Allow Tab Stack Renaming"))))); return c(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_698 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/startup/tabsSettingSection.jsx", r = n(1), s = n(11), o = n(2), l = n(690), c = n(691), u = n(692), A = n(694), d = n(695), h = n(696), m = n(697), p = n(693), f = n(677), g = r.createClass({ displayName: "TabsSettingSection", componentDidUpdate: function() { s.findDOMNode(this.refs.start).style.display = s.findDOMNode(this.refs.tabposition) || s.findDOMNode(this.refs.tabpage) || s.findDOMNode(this.refs.tabopen) || s.findDOMNode(this.refs.tabactivation) || s.findDOMNode(this.refs.taboptions) || s.findDOMNode(this.refs.tabcycling) || s.findDOMNode(this.refs.tabselection) || s.findDOMNode(this.refs.tabstacking) || s.findDOMNode(this.refs.tabpinning) ? "inline" : "none" }, render: function() { return r.createElement("div", { ref: "start", __source: { fileName: a, lineNumber: 32 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 33 } }, o("Tabs")), r.createElement(d, i({}, this.props, { ref: "tabposition", __source: { fileName: a, lineNumber: 34 } })), r.createElement(f, i({}, this.props, { ref: "tabpage", __source: { fileName: a, lineNumber: 35 } })), r.createElement(u, i({}, this.props, { ref: "tabopen", __source: { fileName: a, lineNumber: 36 } })), r.createElement(l, i({}, this.props, { ref: "tabactivation", __source: { fileName: a, lineNumber: 37 } })), r.createElement("h2", { __source: { fileName: a, lineNumber: 39 } }, o("Tab Display")), r.createElement(p, i({}, this.props, { ref: "taboptions", __source: { fileName: a, lineNumber: 40 } })), r.createElement("h2", { __source: { fileName: a, lineNumber: 42 } }, o("Tab Features")), r.createElement(c, i({}, this.props, { ref: "tabcycling", __source: { fileName: a, lineNumber: 43 } })), r.createElement(h, i({}, this.props, { ref: "tabselection", __source: { fileName: a, lineNumber: 44 } })), r.createElement(m, i({}, this.props, { ref: "tabstacking", __source: { fileName: a, lineNumber: 45 } })), r.createElement(A, i({}, this.props, { ref: "tabpinning", __source: { fileName: a, lineNumber: 46 } }))) } }); e.exports = g }, function(e, t, n) { // ========================= // Function_699 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/sync/sync.jsx", a = n(1), r = n(2), s = n(3), o = n(12), l = a.createClass({ displayName: "Sync", getInitialState: function() { return { syncServices: [] } }, changeSelection: function(e) { var t = this.state.syncServices.map(function(t) { return { id: t.id, name: t.name, selected: t.id === e ? !t.selected : t.selected } }); this.setState({ syncServices: t }, function() { s.set({ SYNC_SETTINGS: t }) }) }, componentWillMount: function() { s.get(["SYNC_SETTINGS"], function(e) { this.setState({ syncServices: e.SYNC_SETTINGS }) }.bind(this)) }, selectAll: function() { var e = this.refs.selectAllRef.checked, t = this.state.syncServices.map(function(t) { return { id: t.id, selected: e, name: t.name } }); this.setState({ syncServices: t }, function() { s.set({ SYNC_SETTINGS: t }) }) }, render: function() { var e = this.state.syncServices.map(function(e) { return a.createElement("div", { key: e.id, className: "setting-single", __source: { fileName: i, lineNumber: 52 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 53 } }, a.createElement("input", { type: "checkbox", checked: e.selected, onChange: this.changeSelection.bind(this, e.id), __source: { fileName: i, lineNumber: 54 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 57 } }, e.name))) }.bind(this)), t = a.createElement("span", { __source: { fileName: i, lineNumber: 64 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 66 } }, r("Sync settings")), a.createElement("div", { className: "setting-group", __source: { fileName: i, lineNumber: 68 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 69 } }, r("Sync data across devices")), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 71 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 72 } }, a.createElement("input", { type: "checkbox", ref: "selectAllRef", onChange: this.selectAll, __source: { fileName: i, lineNumber: 73 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 74 } }, r("All")))), e)); return o(t, this.props.filter) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_700 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/themes/HueIntegration.jsx", r = n(1), s = n(3), o = n(25), l = n(12), c = n(7), u = c.sortBy, A = n(2), d = ["HUE_ENABLED", "HUE_BRIDGE_IP", "HUE_USERNAME", "HUE_GROUPS", "HUE_LIGHTS", "HUE_LIGHTS_SELECTED"], h = r.createClass({ displayName: "HueIntegration", getInitialState: function() { return { validBridge: !1, validUsername: !1, waitingForButtonPress: !1, givenUp: !1 } }, componentWillMount: function() { this.props.vivaldiSettings.HUE_ENABLED && this.props.vivaldiSettings.HUE_BRIDGE_IP && this.verifyBridge() }, saveVivaldiSettingFromEvent: function(e, t, n) { s.set(i({}, e, n.target[t])) }, verifyBridge: function() { var e = this, t = this.props.vivaldiSettings, n = t.HUE_BRIDGE_IP; n ? fetch("http://" + n + "/description.xml").then(function(t) { t.ok ? e.setState({ validBridge: !0 }, e.verifyUsername) : e.getBridge() }).catch(function(t) { e.getBridge() }) : this.getBridge() }, getBridge: function() { var e = this; fetch("https://www.meethue.com/api/nupnp").then(function(t) { t.ok ? t.json().then(function(t) { t && t[0] && t[0].internalipaddress ? s.set({ HUE_BRIDGE_IP: t[0].internalipaddress }, e.verifyBridge) : e.setState({ givenUp: !0 }) }) : e.setState({ givenUp: !0 }) }).catch(function(t) { e.setState({ givenUp: !0 }) }) }, verifyUsername: function() { var e = this, t = this.props.vivaldiSettings, n = t.HUE_BRIDGE_IP, i = t.HUE_USERNAME; i ? fetch("http://" + n + "/api/" + i + "/").then(function(t) { t.ok ? t.json().then(function(t) { t[0] && t[0].error ? (s.set({ HUE_USERNAME: "" }), e.getUsername) : t && t && t.config && ! function() { var n = Object.keys(t.lights).map(function(e) { var n = t.lights[e], i = n.type.toLowerCase(); return i.includes("color light") ? n : null }), i = Object.keys(t.groups).map(function(e) { return t.groups[e] }).filter(function(e) { if ("Room" === e.type && e.lights.length > 0 && (e.lights = e.lights.filter(function(e) { return n[e - 1] }), e.lights.some(function(e) { return e }))) return e }); s.set({ HUE_GROUPS: u(i, "name"), HUE_LIGHTS: n }), e.setState({ validUsername: !0, waitingForButtonPress: !1 }) }() }) : e.setState({ givenUp: !0 }) }).catch(function(t) { e.setState({ givenUp: !0 }) }) : this.getUsername() }, getUsername: function() { var e = this, t = this.props.vivaldiSettings, n = t.HUE_BRIDGE_IP; fetch("http://" + n + "/api", { method: "POST", body: JSON.stringify({ devicetype: "vivaldi_browser#desktop_hue" }) }).then(function(t) { t.ok ? t.json().then(function(t) { t[0] && t[0].success && t[0].success.username ? s.set({ HUE_USERNAME: t[0].success.username }, e.verifyUsername) : t && t[0] && t[0].error && 101 === t[0].error.type && (e.setState({ waitingForButtonPress: !0 }), setTimeout(function() { e.isMounted() && e.getUsername() }, 1e3)) }) : e.setState({ givenUp: !0 }) }).catch(function(t) { e.setState({ givenUp: !0 }) }) }, hueToggleLamp: function(e, t) { var n = this.props.vivaldiSettings, i = n.HUE_BRIDGE_IP, a = n.HUE_USERNAME, r = n.HUE_LIGHTS, o = !1, l = n.HUE_LIGHTS_SELECTED.filter(function(t) { return t !== e ? t : void(o = !0) }); r.forEach(function(t, n) { t && t.uniqueid === e && fetch("http://" + i + "/api/" + a + "/lights/" + (n + 1) + "/state", { method: "put", body: JSON.stringify({ alert: "select" }) }) }), o || l.push(e), s.set({ HUE_LIGHTS_SELECTED: l }) }, hueBridgeReset: function() { var e = this; s.set({ HUE_BRIDGE_IP: "" }, function() { e.setState(e.getInitialState()) }) }, render: function() { var e = this, t = this.props.vivaldiSettings.HUE_ENABLED, i = this.state.validBridge, s = this.state.validUsername, o = this.state.waitingForButtonPress, c = this.props.vivaldiSettings.HUE_GROUPS, u = this.props.vivaldiSettings.HUE_LIGHTS, d = this.props.vivaldiSettings.HUE_LIGHTS_SELECTED, h = r.createElement("div", { __source: { fileName: a, lineNumber: 253 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 254 } }, A("Philips Hue Theme Integration")), o && r.createElement("div", { className: "hue-press-button", dangerouslySetInnerHTML: { __html: "" + n(961) + A("Press the button on your Bridge") }, __source: { fileName: a, lineNumber: 257 } }), r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 262 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 263 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 264 } }, r.createElement("input", { type: "checkbox", checked: t, onChange: this.saveVivaldiSettingFromEvent.bind(this, "HUE_ENABLED", "checked"), __source: { fileName: a, lineNumber: 265 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 269 } }, A("Enable Hue"))), t && i ? r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 272 } }, A("Connected to Hue Bridge at $1.", [this.props.vivaldiSettings.HUE_BRIDGE_IP])) : r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 277 } }, A("Requires a Philips Hue lighting system on the local network.")))), t && r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 286 } }, r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 287 } }, i ? r.createElement("input", { type: "button", className: "danger", value: A("Reset Bridge"), onClick: this.hueBridgeReset, __source: { fileName: a, lineNumber: 289 } }) : r.createElement("input", { type: "button", className: "primary", value: A("Find Bridge"), onClick: this.getBridge, __source: { fileName: a, lineNumber: 294 } }))), t && s && c && u && c.length > 0 && u.length > 0 && c.map(function(t, n) { return r.createElement("div", { className: "setting-group", key: n, __source: { fileName: a, lineNumber: 307 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 308 } }, t.name), t.lights.map(function(t) { var n = u[t - 1], i = n.state.reachable ? "" : " (" + A("Unreachable") + ")", s = d && d.some(function(e) { return e === n.uniqueid }); return r.createElement("div", { className: "setting-single", key: n.uniqueid, __source: { fileName: a, lineNumber: 318 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 319 } }, r.createElement("input", { type: "checkbox", checked: s, onChange: e.hueToggleLamp.bind(e, n.uniqueid), __source: { fileName: a, lineNumber: 320 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 324 } }, "" + n.name + i))) })) })); return l(h, this.props.filter) } }); e.exports = o(h, d) }, function(e, t, n) { // ========================= // Function_701 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/themes/ThemeEditor.jsx", r = n(1), s = n(569), o = n(25), l = n(2), c = n(180), u = n(7), A = u.cloneDeep, d = u.isEqual, h = u.debounce, m = n(3), p = ["TABCOLOR_BEHIND_TABS", "THEME_CURRENT", "THEMES_SYSTEM", "THEMES_USER", "BROWSER_COLOR_BG", "BROWSER_COLOR_FG", "BROWSER_COLOR_HIGHLIGHT_BG", "BROWSER_COLOR_ACCENT_BG", "USE_TAB_TRANSPARENT_TABS", "USE_TABCOLOR", "BORDER_RADIUS"], f = { baseBg: "BROWSER_COLOR_BG", baseFg: "BROWSER_COLOR_FG", highlightBg: "BROWSER_COLOR_HIGHLIGHT_BG", accentBg: "BROWSER_COLOR_ACCENT_BG" }, g = { baseBg: l("Background"), baseFg: l("Foreground"), highlightBg: l("Highlight"), accentBg: l("Accent") }, _ = r.createClass({ displayName: "ThemeEditor", getInitialState: function() { return { themeObject: null, baseBgShowPicker: !1, baseFgShowPicker: !1, highlightBgShowPicker: !1, accentBgShowPicker: !1 } }, componentWillMount: function() { if (this.props.themeObject && this.props.vivaldiSettings) { var e = this.props.vivaldiSettings; this.setState({ themeObject: { name: e.THEME_CURRENT, version: .1, colors: { baseBg: e.BROWSER_COLOR_BG, baseFg: e.BROWSER_COLOR_FG, highlightBg: e.BROWSER_COLOR_HIGHLIGHT_BG, accentBg: e.BROWSER_COLOR_ACCENT_BG }, settings: { accentOnWindow: e.TABCOLOR_BEHIND_TABS, accentFromPage: e.USE_TABCOLOR, tabsTransparent: e.USE_TAB_TRANSPARENT_TABS, borderRadius: e.BORDER_RADIUS } } }) } }, componentWillReceiveProps: function(e) { !e.themeObject || null !== this.state.themeObject && this.state.themeObject.name === e.themeObject.name || this.setState({ themeObject: e.themeObject }) }, setColorSetting: h(function(e, t) { m.set(i({}, e, t)) }, 100, { leading: !1 }), saveThemeSetting: function(e, t, n, a) { var r = A(this.state.themeObject); r.settings[t] = a.target[n], this.setState({ themeObject: r }), m.set(i({}, e, a.target[n])) }, renameTheme: function(e) { var t = A(this.state.themeObject); t.name = e.target.value, this.setState({ themeObject: t }) }, getTheme: function(e) { if (this.props.vivaldiSettings) for (var t = this.props.vivaldiSettings, n = t.THEMES_SYSTEM.concat(t.THEMES_USER), i = 0; i < n.length; i++) { var a = n[i]; if (a.name === e) return a } }, resetTheme: function() { if (this.props.vivaldiSettings) { var e = this.getTheme(this.props.vivaldiSettings.THEME_CURRENT); m.set({ BROWSER_COLOR_BG: e.colors.baseBg, BROWSER_COLOR_FG: e.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: e.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: e.colors.accentBg, TABCOLOR_BEHIND_TABS: e.settings.accentOnWindow, USE_TABCOLOR: e.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: e.settings.tabsTransparent, BORDER_RADIUS: e.settings.borderRadius }), this.refs.baseBgInputHex.value = e.colors.baseBg, this.refs.baseFgInputHex.value = e.colors.baseFg, this.refs.highlightBgInputHex.value = e.colors.highlightBg, this.refs.accentBgInputHex.value = e.colors.accentBg, this.setState({ themeObject: e }) } }, saveTheme: function() { if (this.props.vivaldiSettings) { for (var e = this.props.vivaldiSettings, t = A(e.THEMES_USER), n = t.concat(e.THEMES_SYSTEM), i = this.refs.themeNameInput.value, a = 0; a < n.length; a++) if (n[a].name.toLowerCase() === i.toLowerCase()) { i = e.THEME_CURRENT, this.refs.themeNameInput.value = i; break } for (var r = 0; r < t.length; r++) { var s = t[r]; if (s.name === e.THEME_CURRENT) return Object.assign(s, this.state.themeObject), s.name = i, void m.set({ THEMES_USER: t, THEME_CURRENT: s.name, BROWSER_COLOR_BG: s.colors.baseBg, BROWSER_COLOR_FG: s.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: s.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: s.colors.accentBg, TABCOLOR_BEHIND_TABS: s.settings.accentOnWindow, USE_TABCOLOR: s.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: s.settings.tabsTransparent, BORDER_RADIUS: s.settings.borderRadius }) } } }, setColor: function(e, t) { var n = !(arguments.length > 2 && void 0 !== arguments[2]) || arguments[2], a = A(this.state.themeObject); a.colors[t] = e, this.setState({ themeObject: a }), this.refs[t + "InputHex"].value = e, n ? this.setColorSetting(f[t], e) : m.set(i({}, f[t], e)) }, hexInputEvents: function(e) { var t = e.currentTarget.dataset.colorname; if ("change" === e.type || "keydown" === e.type && "Enter" === e.key) { var n = A(this.state.themeObject), i = c(e.currentTarget.value).hex(); n.colors[t] = i, this.setState({ themeObject: n }), this.refs[t + "InputHex"].value = i, this.setColorSetting(f[t], i) } }, nameInputKeyDown: function(e) { "Enter" === e.key && this.saveTheme() }, showColorPicker: function(e) { var t = e.currentTarget.dataset.pickername; this.state[t] || this.setState(i({}, t, !0)) }, hideColorPicker: function(e) { var t = e + "ShowPicker"; this.state[t] && (this.setState(i({}, t, !1)), this.refs[e + "ColorToggle"].focus()) }, render: function() { var e = this, t = this.state.themeObject; if (!t || !this.props.themeObject) return null; var n = d(this.props.themeObject, t), i = Number(t.settings.borderRadius), o = void 0; return o = i < 0 ? l("Disabled") : 0 === i ? l("Default") : i + "px", r.createElement("div", { className: "themes-edit", __source: { fileName: a, lineNumber: 288 } }, r.createElement("div", { className: "setting-group unlimited theme-metadata", __source: { fileName: a, lineNumber: 290 } }, r.createElement("input", { className: "theme-name", type: "text", ref: "themeNameInput", onChange: this.renameTheme, onKeyDown: this.nameInputKeyDown, value: t.name, __source: { fileName: a, lineNumber: 291 } }), r.createElement("input", { type: "button", className: "primary", onClick: this.saveTheme, value: l("Save"), disabled: n, __source: { fileName: a, lineNumber: 299 } }), r.createElement("input", { type: "button", onClick: this.resetTheme, value: l("Reset"), disabled: n, __source: { fileName: a, lineNumber: 301 } })), r.createElement("div", { className: "setting-group unlimited theme-colors", __source: { fileName: a, lineNumber: 305 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 306 } }, l("Color Editor")), Object.keys(f).map(function(t) { var n = e.state.themeObject.colors[t], i = c(n).hex(); return r.createElement("div", { key: t, className: "theme-color-container", __source: { fileName: a, lineNumber: 313 } }, r.createElement("div", { className: "color-name", __source: { fileName: a, lineNumber: 314 } }, g[t]), r.createElement("button", { className: "color-preview ignore-onclickoutside-" + t, tabIndex: 0, ref: t + "ColorToggle", onClick: e.showColorPicker, "data-pickername": t + "ShowPicker", style: { backgroundColor: i }, __source: { fileName: a, lineNumber: 315 } }), e.state[t + "ShowPicker"] && r.createElement(s, { key: t, name: t, color: n, setColor: e.setColor, hide: e.hideColorPicker, __source: { fileName: a, lineNumber: 324 } }), r.createElement("input", { type: "text", ref: t + "InputHex", className: "color-hex", value: i, "data-colorname": t, onChange: e.hexInputEvents, __source: { fileName: a, lineNumber: 332 } })) })), r.createElement("div", { className: "setting-group unlimited theme-settings", __source: { fileName: a, lineNumber: 343 } }, r.createElement("div", { className: "setting-group pad-top", __source: { fileName: a, lineNumber: 345 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 346 } }, l("Theme Preferences")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 347 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 348 } }, r.createElement("input", { type: "checkbox", tabIndex: this.props.keyAccess, onChange: this.saveThemeSetting.bind(this, "USE_TABCOLOR", "accentFromPage", "checked"), checked: t.settings.accentFromPage, __source: { fileName: a, lineNumber: 349 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 354 } }, l("Accent Color from Active Page")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 358 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 359 } }, r.createElement("input", { type: "checkbox", tabIndex: this.props.keyAccess, onChange: this.saveThemeSetting.bind(this, "TABCOLOR_BEHIND_TABS", "accentOnWindow", "checked"), checked: t.settings.accentOnWindow, __source: { fileName: a, lineNumber: 360 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 365 } }, l("Apply Accent Color to Window")))), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 369 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 370 } }, r.createElement("input", { type: "checkbox", tabIndex: this.props.keyAccess, onChange: this.saveThemeSetting.bind(this, "USE_TAB_TRANSPARENT_TABS", "tabsTransparent", "checked"), checked: t.settings.tabsTransparent, __source: { fileName: a, lineNumber: 371 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 376 } }, l("Transparent Tabs"))))), r.createElement("div", { className: "setting-group pad-top", __source: { fileName: a, lineNumber: 381 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 382 } }, l("Corner Rounding")), r.createElement("div", { className: "setting-single border-radius", __source: { fileName: a, lineNumber: 383 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 384 } }, r.createElement("input", { type: "range", title: l("Adjust interface corner rounding"), min: -1, max: 14, value: i, onChange: this.saveThemeSetting.bind(this, "BORDER_RADIUS", "borderRadius", "value"), tabIndex: this.props.keyAccess, __source: { fileName: a, lineNumber: 385 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 392 } }, o)))))) } }); e.exports = o(_, p) }, function(e, t, n) { // ========================= // Function_702 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/themes/ThemeScheduling.jsx", r = n(1), s = n(12), o = n(3), l = n(45), c = n(5), u = n(7), A = u.cloneDeep, d = n(2), h = ["THEMES_SYSTEM", "THEMES_USER", "THEMES_SCHEDULE", "THEMES_SCHEDULE_ENABLED"], m = r.createClass({ displayName: "ThemeScheduling", getInitialState: function() { return { dragging: !1, id: void 0 } }, componentWillMount: function() { for (var e = A(o.getKeysSync(h)), t = e.THEMES_SYSTEM.concat(e.THEMES_USER), n = e.THEMES_SCHEDULE, i = 0; i < n.length; i++) { for (var a = !1, r = 0; r < t.length; r++) if (n[i].themeName === t[r].name) { a = !0; break } a || (n[i].themeName = t[t.length - 1].name) } this.setState(e) }, componentDidMount: function() { var e = this; window.addEventListener("mouseup", this.stopMouseReschedule), window.addEventListener("touchend", this.stopMouseReschedule), h.forEach(function(t) { return o.addListener(t, e.vivaldiSettingHandler); }) }, componentWillUnmount: function() { var e = this; window.removeEventListener("mouseup", this.stopMouseReschedule), window.removeEventListener("touchend", this.stopMouseReschedule), h.forEach(function(t) { return o.removeListener(t, e.vivaldiSettingHandler) }) }, saveVivaldiSettingFromEvent: function(e, t, n) { o.set(i({}, e, n.target[t])) }, vivaldiSettingHandler: function(e, t, n) { if (e !== t && this.state[n] !== t) if ("THEMES_USER" === n) { for (var a = t.concat(this.state.THEMES_SYSTEM), r = A(this.state.THEMES_SCHEDULE), s = !0, l = 0; l < r.length; l++) { for (var c = !1, u = 0; u < a.length; u++) if (r[l].themeName === a[u].name) { c = !0; break } c || (s = !1, r[l].themeName = a[a.length - 1].name) } s ? this.setState(i({}, n, t)) : o.set({ THEMES_SCHEDULE: r }) } else this.setState(i({}, n, t)) }, startMouseReschedule: function(e, t) { t.persist(), t.preventDefault(), this.setState({ dragging: !0, id: e }, this.handleMouseReschedule.bind(this, t)) }, mouseReschedule: function(e) { e.preventDefault(), this.state.dragging && this.handleMouseReschedule(e) }, stopMouseReschedule: function(e) { this.setState({ dragging: !1 }) }, handleMouseReschedule: function(e) { var t = A(this.state.THEMES_SCHEDULE), n = this.refs.scheduleTimeline.getBoundingClientRect(), i = e.touches ? e.touches[0] : e, a = i.clientX - n.left, r = 5 * Math.floor(1439 / n.width * a / 5); if (!(r < 0 || r > 1439)) { for (var s = 0; s < t.length; s++) { var l = t[s]; if (l.id === this.state.id) { l.hours = Math.floor(r / 60), l.minutes = r - 60 * l.hours; break } } o.set({ THEMES_SCHEDULE: t }) } }, addSchedule: function() { for (var e = A(this.state.THEMES_SCHEDULE), t = [], n = void 0, i = 0; i < e.length; i++) t.push(e[i].id); t.sort(function(e, t) { return e - t }); for (var a = 0; a < t.length; a++) if (!t.includes(a)) { n = a; break } void 0 === n && (n = t[t.length - 1] + 1), e.push({ id: n, minutes: 0, hours: 12, themeName: "Light", undeletable: !1 }), o.set({ THEMES_SCHEDULE: e }), this.setState({ id: n }) }, removeScheduleOnDelete: function(e) { e.keyCode !== l.KEY_BACK_SPACE && e.keyCode !== l.KEY_DELETE || this.removeSchedule() }, handleKeyboardReschedule: function(e, t) { if (t.keyCode === l.KEY_LEFT || t.keyCode === l.KEY_RIGHT) { for (var n = A(this.state.THEMES_SCHEDULE), i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) { var r = 60 * a.hours + a.minutes; t.shiftKey ? t.keyCode === l.KEY_LEFT && r > 29 ? r -= 30 : t.keyCode === l.KEY_RIGHT && r < 1409 && (r += 30) : t.keyCode === l.KEY_LEFT && r > 4 ? r -= 5 : t.keyCode === l.KEY_RIGHT && r < 1434 && (r += 5), a.hours = Math.floor(r / 60), a.minutes = r - 60 * a.hours, this.setState({ id: e }); break } } o.set({ THEMES_SCHEDULE: n }) } else t.keyCode !== l.KEY_BACK_SPACE && t.keyCode !== l.KEY_DELETE || this.removeSchedule() }, updateScheduleName: function(e, t) { for (var n = A(this.state.THEMES_SCHEDULE), i = 0; i < n.length; i++) { var a = n[i]; if (a.id === e) { a.themeName = t.target.value; break } } o.set({ THEMES_SCHEDULE: n }) }, removeSchedule: function() { for (var e = A(this.state.THEMES_SCHEDULE), t = this.state.id, n = 0; n < e.length; n++) { var i = e[n]; if (i.undeletable === !1 && i.id === t) { e.splice(n, 1); break } } o.set({ THEMES_SCHEDULE: e }), this.setState({ id: void 0 }) }, getTheme: function(e) { for (var t = this.state, n = t.THEMES_SYSTEM.concat(t.THEMES_USER), i = 0; i < n.length; i++) { var a = n[i]; if (a.name === e) return a } }, indicatorFocus: function(e, t) { t.stopPropagation(), this.setState({ id: e }) }, indicatorBlur: function(e) { this.setState({ id: void 0 }) }, render: function() { var e = this, t = A(this.state.THEMES_SCHEDULE), i = new Date, o = i.getMinutes() + 60 * i.getHours(), l = o / 14.4 + "%", u = this.state.THEMES_SCHEDULE_ENABLED ? "" : "schedule-disabled", h = !0; t.sort(function(e, t) { return 60 * e.hours + e.minutes - (60 * t.hours + t.minutes) }), t.unshift(A(t[t.length - 1])), t[0].minutes = 0, t[0].hours = 0; for (var m = 0; m < t.length; m++) { var p = t[m + 1]; p ? t[m].endMinutes = 60 * p.hours + p.minutes : t[m].endMinutes = 1440, this.state.id === t[m].id && t[m].undeletable && (h = !1), t[m].renderId = m } var f = r.createElement("div", { className: "setting-group unlimited", onMouseMove: this.mouseReschedule, onTouchMove: this.mouseReschedule, __source: { fileName: a, lineNumber: 355 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 359 } }, d("Scheduled Themes")), r.createElement("p", { className: "info", __source: { fileName: a, lineNumber: 360 } }, d("Drag the sliders below to adjust theme schedule time. Change the theme by selecting its name.")), r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 364 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 365 } }, r.createElement("input", { type: "checkbox", checked: this.state.THEMES_SCHEDULE_ENABLED, onChange: this.saveVivaldiSettingFromEvent.bind(this, "THEMES_SCHEDULE_ENABLED", "checked"), __source: { fileName: a, lineNumber: 366 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 370 } }, d("Schedule Theme to Change")))), r.createElement("div", { className: "theme-schedule-timeline " + u, ref: "scheduleTimeline", __source: { fileName: a, lineNumber: 374 } }, r.createElement("span", { className: "theme-schedule-now-indicator", style: { left: l }, __source: { fileName: a, lineNumber: 376 } }, d("Now")), t.map(function(n) { var i = (60 * n.hours + n.minutes) / 14.4, s = e.getTheme(n.themeName), o = n.hours > 9 ? n.hours : "0" + n.hours, l = n.minutes > 9 ? n.minutes : "0" + n.minutes; return r.createElement("div", { key: n.renderId, className: c({ "theme-schedule-timeslice": !0, "timeslice-selected": e.state.id === n.id }), style: { backgroundImage: "linear-gradient(0deg,\n " + s.colors.accentBg + " 6px," + s.colors.baseBg + " 6px)", width: n.endMinutes / 14.4 - i + "%", left: i + "%" }, __source: { fileName: a, lineNumber: 389 } }, n !== t[0] && r.createElement("div", { title: n.themeName, className: "timeslice-bubble", onFocus: e.indicatorFocus.bind(e, n.id), onBlur: e.indicatorBlur.bind(e, n.id), disabled: !e.state.THEMES_SCHEDULE_ENABLED, onMouseDown: e.startMouseReschedule.bind(e, n.id), onTouchStart: e.startMouseReschedule.bind(e, n.id), onKeyDown: e.handleKeyboardReschedule.bind(e, n.id), __source: { fileName: a, lineNumber: 402 } }, r.createElement("div", { __source: { fileName: a, lineNumber: 414 } }, o + ":" + l)), n !== t[0] && r.createElement("div", { className: "theme-schedule-timeslice-indicator", __source: { fileName: a, lineNumber: 418 } }, r.createElement("input", { type: "button", className: "theme-schedule-timeslice-draghandle", title: n.themeName, onFocus: e.indicatorFocus.bind(e, n.id), onBlur: e.indicatorBlur.bind(e, n.id), disabled: !e.state.THEMES_SCHEDULE_ENABLED, onMouseDown: e.startMouseReschedule.bind(e, n.id), onTouchStart: e.startMouseReschedule.bind(e, n.id), onKeyDown: e.handleKeyboardReschedule.bind(e, n.id), __source: { fileName: a, lineNumber: 419 } })), r.createElement("div", { className: "theme-schedule-timeslice-container", __source: { fileName: a, lineNumber: 435 } }, r.createElement("div", { className: "theme-schedule-timeslice-text", style: { color: s.colors.baseFg }, __source: { fileName: a, lineNumber: 436 } }, n.themeName)), r.createElement("select", { disabled: !e.state.THEMES_SCHEDULE_ENABLED, value: n.themeName, onFocus: e.indicatorFocus.bind(e, n.id), onKeyDown: e.removeScheduleOnDelete, onChange: e.updateScheduleName.bind(e, n.id), __source: { fileName: a, lineNumber: 442 } }, e.state.THEMES_SYSTEM.concat(e.state.THEMES_USER).map(function(e) { return r.createElement("option", { key: e.name, value: e.name, __source: { fileName: a, lineNumber: 450 } }, e.name) }))) })), r.createElement("div", { className: "setting-group schedule-selector", __source: { fileName: a, lineNumber: 460 } }, r.createElement("div", { className: "toolbar icons", __source: { fileName: a, lineNumber: 461 } }, r.createElement("button", { disabled: !this.state.THEMES_SCHEDULE_ENABLED, onClick: this.addSchedule, className: "button-toolbar", __source: { fileName: a, lineNumber: 462 } }, r.createElement("span", { dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: a, lineNumber: 466 } }), r.createElement("span", { className: "buttontext", __source: { fileName: a, lineNumber: 468 } }, d("Add"))), r.createElement("button", { disabled: !this.state.THEMES_SCHEDULE_ENABLED || !h || void 0 === this.state.id, onClick: this.removeSchedule, className: "button-toolbar", __source: { fileName: a, lineNumber: 472 } }, r.createElement("span", { dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: a, lineNumber: 477 } }), r.createElement("span", { className: "buttontext", __source: { fileName: a, lineNumber: 479 } }, d("Remove")))))); return s(f, this.props.filter) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_703 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/themes/Themes.jsx", a = n(1), r = n(700), s = n(701), o = n(372), l = n(702), c = n(12), u = n(74), A = n(3), d = n(25), h = n(45), m = n(7), p = m.cloneDeep, f = m.compact, g = n(26), _ = n(5), v = n(2), b = ["THEMES_SYSTEM", "THEMES_USER", "THEME_CURRENT"], N = a.createClass({ displayName: "Themes", getInitialState: function() { return { editTheme: !1, featureHueEnabled: u.isEnabled(u.kHueIntegration) } }, _setTheme: function(e) { .1 === e.version && (this.state.editTheme && this._isSystemTheme(e) && this.setState({ editTheme: !1 }), A.set({ THEME_CURRENT: e.name, BROWSER_COLOR_BG: e.colors.baseBg, BROWSER_COLOR_FG: e.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: e.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: e.colors.accentBg, TABCOLOR_BEHIND_TABS: e.settings.accentOnWindow, USE_TABCOLOR: e.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: e.settings.tabsTransparent, BORDER_RADIUS: e.settings.borderRadius })) }, _getTheme: function(e) { for (var t = this.props.vivaldiSettings, n = t.THEMES_SYSTEM.concat(t.THEMES_USER), i = 0; i < n.length; i++) { var a = n[i]; if (a.name === e) return a } }, _addTheme: function() { for (var e = this.props.vivaldiSettings, t = p(e.THEMES_USER), n = v("New Theme"), i = 1; this._isUserThemeNameInUse(n + " " + i);) i += 1; t.push({ version: .1, name: n + " " + i, colors: { baseBg: A.getSync("BROWSER_COLOR_BG"), baseFg: A.getSync("BROWSER_COLOR_FG"), highlightBg: A.getSync("BROWSER_COLOR_HIGHLIGHT_BG"), accentBg: A.getSync("BROWSER_COLOR_ACCENT_BG") }, settings: { accentOnWindow: A.getSync("TABCOLOR_BEHIND_TABS"), accentFromPage: A.getSync("USE_TABCOLOR"), tabsTransparent: A.getSync("USE_TAB_TRANSPARENT_TABS"), borderRadius: A.getSync("BORDER_RADIUS") } }), this.state.editTheme || this.setState({ editTheme: !0 }), A.set({ THEMES_USER: t, THEME_CURRENT: n + " " + i }) }, _deleteTheme: function() { for (var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.props.vivaldiSettings.THEME_CURRENT, t = this.props.vivaldiSettings, n = t.THEMES_SYSTEM, i = p(t.THEMES_USER), a = 0; a < i.length; a++) { var r = void 0; if (i[a].name === e) return i[a] = null, i = f(i), e === this.props.vivaldiSettings.THEME_CURRENT && (i[a] ? r = a : i[a - 1] && (r = a - 1), i.length > 0 ? this._setTheme(i[r]) : this._setTheme(n[n.length - 1])), void A.set({ THEMES_USER: i }) } }, _toggleEdit: function() { this.setState({ editTheme: !this.state.editTheme }) }, _isSystemTheme: function(e) { for (var t = 0; t < this.props.vivaldiSettings.THEMES_SYSTEM.length; t++) if (this.props.vivaldiSettings.THEMES_SYSTEM[t].name === e.name) return !0; return !1 }, _isCurrentTheme: function(e) { return e.name === this.props.vivaldiSettings.THEMES_CURRENT }, _isUserThemeNameInUse: function(e) { for (var t = this.props.vivaldiSettings.THEMES_USER, n = 0; n < t.length; n++) if (t[n].name === e) return !0; return !1 }, getThemeMenu: function(e) { return [{ name: v("Apply $1", [e.name]), visible: !this._isCurrentTheme(e), handler: this._setTheme.bind(this, e) }, { name: v("Delete $1", [e.name]), visible: !this._isSystemTheme(e), handler: this._deleteTheme.bind(this, e.name) }] }, handleKeyDown: function(e, t) { this._isSystemTheme(e) || t.keyCode !== h.KEY_BACK_SPACE && t.keyCode !== h.KEY_DELETE || this._deleteTheme(e.name) }, render: function() { var e = this, t = this.props.vivaldiSettings, u = this._getTheme(t.THEME_CURRENT); if (!u || !u.colors) return null; var A = this._isSystemTheme(u), d = _({ active: this.state.editTheme, "button-toolbar": !0, edit: !0 }), h = a.createElement("div", { __source: { fileName: i, lineNumber: 243 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 244 } }, v("Themes")), a.createElement("p", { className: "info", __source: { fileName: i, lineNumber: 245 } }, v("Select one of the pre-defined themes. You may change it to your\n liking, or create a new theme using the tools below.")), a.createElement("div", { className: "setting-group-unlimited", __source: { fileName: i, lineNumber: 249 } }, t.THEMES_SYSTEM.map(function(t) { return a.createElement(o, { key: t.name, themeObject: t, onContextMenu: g(e.getThemeMenu(t)), onClick: e._setTheme.bind(e, t), onKeyDown: e.handleKeyDown.bind(e, t), __source: { fileName: i, lineNumber: 251 } }) }), t.THEMES_USER.map(function(t) { return a.createElement(o, { key: t.name, themeObject: t, onContextMenu: g(e.getThemeMenu(t)), onClick: e._setTheme.bind(e, t), onKeyDown: e.handleKeyDown.bind(e, t), __source: { fileName: i, lineNumber: 261 } }) }), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 270 } }, a.createElement("button", { className: "button-toolbar add", title: v("New Theme"), onClick: this._addTheme, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 271 } }), a.createElement("button", { className: "button-toolbar delete", title: v("Remove Theme"), disabled: A, onClick: this._deleteTheme.bind(this, void 0), dangerouslySetInnerHTML: { __html: n(92) }, __source: { fileName: i, lineNumber: 277 } }), a.createElement("button", { className: d, title: v("Edit Theme"), onClick: A ? this._addTheme : this._toggleEdit, dangerouslySetInnerHTML: { __html: n(217) }, __source: { fileName: i, lineNumber: 284 } })), this.state.editTheme && a.createElement(s, { themeObject: u, __source: { fileName: i, lineNumber: 293 } })), a.createElement(l, { __source: { fileName: i, lineNumber: 298 } }), this.state.featureHueEnabled && a.createElement(r, { filter: this.props.filter, __source: { fileName: i, lineNumber: 301 } })); return c(h, this.props.filter) } }); e.exports = d(N, b) }, function(e, t, n) { // ========================= // Function_704 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/webpages/TabToFocus.jsx", a = n(1), r = n(12), s = n(41), o = n(10), l = n(3), c = n(2), u = a.createClass({ displayName: "TabToLinksSetting", getInitialState: function() { return { tabsToLinks: l.getSync("vivaldi.tabs_to_links") } }, checkChange: function(e) { var t = Boolean("true" === e.target.value), n = { preferenceKey: "vivaldi.tabs_to_links", preferenceValue: { boolean: t }, preferenceType: "boolean" }; o.settings.setPreference(n), this.setState({ tabsToLinks: t }) }, render: function() { var e = a.createElement("div", { className: "setting-group unlimited", __source: { fileName: i, lineNumber: 28 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 29 } }, a.createElement("h3", { __source: { fileName: i, lineNumber: 30 } }, c("Webpage Focus")), a.createElement("p", { className: "info", __source: { fileName: i, lineNumber: 31 } }, c("This setting takes effect in new tabs or windows only.")), a.createElement(s, { name: "tabToFocusSetting", ref: "keyAccessGroup", className: "setting-single", value: this.state.tabsToLinks, onChange: this.checkChange, __source: { fileName: i, lineNumber: 34 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 39 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 40 } }, a.createElement("input", { type: "radio", value: !1, __source: { fileName: i, lineNumber: 41 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 42 } }, c("Focus Forms Only")))), a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 45 } }, a.createElement("label", { className: "setting-single", __source: { fileName: i, lineNumber: 46 } }, a.createElement("input", { type: "radio", value: !0, __source: { fileName: i, lineNumber: 47 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 48 } }, c("Focus All Controls and Links"))))))); return r(e, this.props.filter) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_705 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/webpages/fullscreen.jsx", r = n(1), s = n(59), o = n(10), l = n(3), c = n(13), u = n(2), A = n(12), d = r.createClass({ displayName: "FullscreenSettings", mixins: [c], vivaldiSettingsKeys: ["SHOW_FULLSCREEN_BUBBLE", "vivaldi.hide_mouse_in_fullscreen"], saveVivaldiSettingFromEvent: function(e, t, n) { if ("vivaldi.hide_mouse_in_fullscreen" === e) { var a = { preferenceKey: e, preferenceValue: { boolean: n.target[t] }, preferenceType: "boolean" }; o.settings.setPreference(a) } l.set(i({}, e, n.target[t])) }, render: function() { var e = r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 33 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 34 } }, r.createElement("input", { type: "checkbox", checked: this.state.SHOW_FULLSCREEN_BUBBLE, onChange: this.saveVivaldiSettingFromEvent.bind(this, "SHOW_FULLSCREEN_BUBBLE", "checked"), __source: { fileName: a, lineNumber: 35 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 40 } }, u("Show Fullscreen Reminder")))), t = "mac" !== s(), n = t ? r.createElement("div", { className: "setting-single", __source: { fileName: a, lineNumber: 48 } }, r.createElement("label", { __source: { fileName: a, lineNumber: 49 } }, r.createElement("input", { type: "checkbox", checked: this.state["vivaldi.hide_mouse_in_fullscreen"], onChange: this.saveVivaldiSettingFromEvent.bind(this, "vivaldi.hide_mouse_in_fullscreen", "checked"), __source: { fileName: a, lineNumber: 50 } }), r.createElement("span", { __source: { fileName: a, lineNumber: 55 } }, u("Hide the mouse cursor for page-initiated fullscreen")))) : null, i = r.createElement("span", { __source: { fileName: a, lineNumber: 61 } }, r.createElement("div", { className: "setting-group", __source: { fileName: a, lineNumber: 62 } }, r.createElement("h3", { __source: { fileName: a, lineNumber: 63 } }, u("Fullscreen Mode")), e, n)); return A(i, this.props.filter) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_706 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/webpages/smoothscrolling.jsx", a = n(1), r = n(10), s = n(25), o = n(2), l = n(12), c = ["smooth_scrolling_enabled"], u = a.createClass({ displayName: "SmoothScrollingSetting", checkChange: function(e) { var t = e.target.checked, n = { preferenceKey: "smooth_scrolling_enabled", preferenceValue: { boolean: t }, preferenceType: "boolean" }; r.settings.setPreference(n) }, render: function() { var e = a.createElement("div", { className: "setting-group unlimited", __source: { fileName: i, lineNumber: 25 } }, a.createElement("div", { className: "setting-single", __source: { fileName: i, lineNumber: 26 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 27 } }, a.createElement("input", { type: "checkbox", checked: this.props.vivaldiSettings.smooth_scrolling_enabled, onChange: this.checkChange, __source: { fileName: i, lineNumber: 28 } }), a.createElement("span", { __source: { fileName: i, lineNumber: 31 } }, o("Smooth Scrolling"))), a.createElement("p", { className: "info", __source: { fileName: i, lineNumber: 33 } }, o("This setting requires a restart to take full effect.")))); return l(e, this.props.filter) } }); e.exports = s(u, c) }, function(e, t, n) { // ========================= // Function_707 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/settings/webpages/webpagesSettingSection.jsx", r = n(1), s = n(11), o = n(2), l = n(706), c = n(704), u = n(705), A = r.createClass({ displayName: "WebpagesSettingSection", componentDidUpdate: function() { s.findDOMNode(this.refs.webpages).style.display = s.findDOMNode(this.refs.smoothScrolling) || s.findDOMNode(this.refs.tabToLinks) || s.findDOMNode(this.refs.fullscreenInfo) ? "inline" : "none" }, render: function() { return r.createElement("div", { ref: "webpages", __source: { fileName: a, lineNumber: 20 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 21 } }, o("Webpages")), r.createElement(l, i({}, this.props, { ref: "smoothScrolling", __source: { fileName: a, lineNumber: 22 } })), r.createElement(c, i({}, this.props, { ref: "tabToLinks", __source: { fileName: a, lineNumber: 23 } })), r.createElement(u, i({}, this.props, { ref: "fullscreenInfo", __source: { fileName: a, lineNumber: 24 } }))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_708 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDial.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(384), d = i(A), h = n(40), m = i(h), p = n(54), f = i(p), g = n(21), _ = i(g), v = n(598), b = i(v), N = n(373), E = i(N), S = n(15), T = i(S), y = n(47), C = i(y), I = n(170), O = i(I), w = n(96), D = i(w), k = n(2), M = i(k), L = n(4), P = i(L), R = n(5), x = i(R), B = n(26), U = i(B), F = n(30), H = i(F), V = function(e) { function t(e) { a(this, t); var n = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return n.draggableMoveHandler = n.draggableMoveHandler.bind(n), n.getContextMenuItems = n.getContextMenuItems.bind(n), n.handleMouseEnter = n.handleMouseEnter.bind(n), n.handleMouseLeave = n.handleMouseLeave.bind(n), n.handleRemoveDial = n.handleRemoveDial.bind(n), n.handleCutDial = n.handleCutDial.bind(n), n.handleCopyDial = n.handleCopyDial.bind(n), n.handlePasteDial = n.handlePasteDial.bind(n), n.handleRename = n.handleRename.bind(n), n.handleUpdateThumbnail = n.handleUpdateThumbnail.bind(n), n.mouseDownHandler = n.mouseDownHandler.bind(n), n.mouseUpHandler = n.mouseUpHandler.bind(n), n.cancelEvent = n.cancelEvent.bind(n), n.onBackgroundTaskStoreChange = n.onBackgroundTaskStoreChange.bind(n), n.openSpeedDialNode = n.openSpeedDialNode.bind(n), n.openSpeedDialNodeHandler = n.openSpeedDialNodeHandler.bind(n), n.onCut = n.onCut.bind(n), n.onCopy = n.onCopy.bind(n), n.onPaste = n.onPaste.bind(n), n.focusedElement = null, n.state = { updating: D.default.isBookmarkThumbnailCapture(e.node.id), mouseIsDown: !1 }, n } return s(t, e), l(t, [{ key: "componentWillMount", value: function() { d.default.addChangeListener(this.onBackgroundTaskStoreChange) } }, { key: "componentWillUnmount", value: function() { d.default.removeChangeListener(this.onBackgroundTaskStoreChange) } }, { key: "isFolder", value: function() { return !this.props.node.url } }, { key: "isBookmark", value: function() { return !this.isFolder() } }, { key: "handleRemoveDial", value: function(e) { e && e.stopPropagation(), f.default.removeBookmark(this.props.node) } }, { key: "handleCutDial", value: function(e) { e && e.stopPropagation(), window.document.addEventListener("cut", this.onCut), window.document.execCommand("cut"), window.document.removeEventListener("cut", this.onCut) } }, { key: "handleCopyDial", value: function(e) { e && e.stopPropagation(), window.document.addEventListener("copy", this.onCopy), window.document.execCommand("copy"), window.document.removeEventListener("copy", this.onCopy) } }, { key: "handlePasteDial", value: function(e) { e && e.stopPropagation(), window.document.addEventListener("paste", this.onPaste), window.document.execCommand("paste"), window.document.removeEventListener("paste", this.onPaste) } }, { key: "handleRename", value: function(e) { e && e.stopPropagation(), this.refs.title.enableEditing() } }, { key: "handleUpdateThumbnail", value: function(e) { e && "function" == typeof e.stopPropagation && e.stopPropagation(), D.default.updateBookmarkThumbnail(this.props.node) } }, { key: "onBackgroundTaskStoreChange", value: function() { this.setState({ updating: D.default.isBookmarkThumbnailCapture(this.props.node.id) }) } }, { key: "openSpeedDialNodeHandler", value: function(e) { var t = "MacIntel" === navigator.platform ? e.metaKey : e.ctrlKey, n = !1, i = !1; if (e.shiftKey && !e.altKey && t) return void T.default.openWindow(this.props.node.url, { incognito: !1 }); if (!e.shiftKey || e.altKey || t) if (e.shiftKey || e.altKey || !t) { if (1 === e.button) n = !0, i = !0; else if (2 === e.button) return } else n = !0, i = !0; else n = !0; this.openSpeedDialNode(this.props.node, { openInBackground: i, openInNewTab: n }) } }, { key: "openSpeedDialNode", value: function(e, t) { this.props.openSpeedDialNode(e, t) } }, { key: "handleMouseEnter", value: function() { C.default.setStatus(this.props.node.url) } }, { key: "handleMouseLeave", value: function() { C.default.clearStatus() } }, { key: "draggableMoveHandler", value: function(e, t, n) { n = n || {}, n.isOver || P.default.bookmarks.get(t, function(i) { i && i[0] && i[0].parentId && P.default.bookmarks.getChildren(i[0].parentId, function(i) { var a = void 0; for (a = 0; a < i.length && i[a].id !== t; a++); n.isLeftOf || a++, P.default.bookmarks.move(e, { index: a }, function(e) { P.default.runtime.lastError && console.warn("Error moving bookmark: ", P.default.runtime.lastError) }) }) }) } }, { key: "mouseDownHandler", value: function(e) { 1 === e.button && (navigator.platform.indexOf("Linux") !== -1 ? this.focusedElement = document.activeElement : this.cancelEvent(e)), 2 === e.button && "MacIntel" === navigator.platform && e.ctrlKey || this.setState({ mouseIsDown: !0 }) } }, { key: "mouseUpHandler", value: function(e) { var t = this; this.state.mouseIsDown && (this.openSpeedDialNodeHandler(e), this.setState({ mouseIsDown: !1 }), this.focusedElement && setTimeout(function() { t.focusedElement && t.focusedElement.focus(), t.focusedElement = null }, 1)) } }, { key: "cancelEvent", value: function(e) { e.preventDefault(), e.stopPropagation() } }, { key: "getContextMenuItems", value: function(e) { return [Object.assign({ handler: this.openSpeedDialNode.bind(this, e), visible: this.isBookmark() }, (0, H.default)("Open")), Object.assign({ handler: this.openSpeedDialNode.bind(this, e, { openInNewTab: !0 }), visible: this.isBookmark() }, (0, H.default)("Open in New Tab")), Object.assign({ handler: this.openSpeedDialNode.bind(this, e, { openInNewTab: !0, openInBackground: !0 }), visible: this.isBookmark() }, (0, H.default)("Open in Background Tab")), { name: "---" }, Object.assign({ handler: this.openSpeedDialNode.bind(this, e, { openInNewWindow: !0 }), visible: this.isBookmark() }, (0, H.default)("Open in New Window")), Object.assign({ handler: this.openSpeedDialNode.bind(this, e, { openInNewWindow: !0, incognito: !0 }), visible: this.isBookmark() }, (0, H.default)("Open in Private Window")), { name: "---" }, Object.assign({ handler: this.openSpeedDialNode.bind(this, e, { openInBackground: !0 }), visible: this.isFolder() }, (0, H.default)("Open All Bookmarks")), { name: "---" }, Object.assign({ handler: this.handleUpdateThumbnail, visible: this.isBookmark() }, (0, H.default)("Reload")), { name: "---" }, Object.assign({ handler: this.handleRename }, (0, H.default)("Rename")), { name: "---" }, Object.assign({ handler: this.handleCutDial }, "MacIntel" === navigator.platform ? (0, H.default)("mac", "Cut") : (0, H.default)("win_linux", "Cut")), Object.assign({ handler: this.handleCopyDial }, "MacIntel" === navigator.platform ? (0, H.default)("mac", "Copy") : (0, H.default)("win_linux", "Copy")), Object.assign({ handler: this.handlePasteDial }, "MacIntel" === navigator.platform ? (0, H.default)("mac", "Paste") : (0, H.default)("win_linux", "Paste")), { name: "---" }, Object.assign({ handler: this.handleRemoveDial }, (0, H.default)("other", "Delete"))] } }, { key: "onDragOver", value: function(e) { var t = m.default.getMimeType(); e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || e === t }) && (e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = m.default.isCopyModifierPressed(e) ? "copy" : "move") } }, { key: "onDrop", value: function(e) { var t = this; e.preventDefault(), e.stopPropagation(); var n = m.default.getMimeType(); if (e.dataTransfer.types.findIndex(function(e) { return e === n }) !== -1) { var i = JSON.parse(e.nativeEvent.dataTransfer.getData(n)); m.default.isCopyModifierPressed(e) ? f.default.copyBookmarks(i, this.props.node.id, 0) : f.default.moveBookmarksPromise(i, this.props.node.id, 0) } else m.default.getUrlsFromEventPromise(e, !1).then(function(e) { return f.default.createBookmarks(e, t.props.node.id, 0) }) } }, { key: "shouldComponentUpdate", value: function(e, t) { return (0, _.default)(this, e, t) } }, { key: "onCut", value: function(e) { f.default.cut(e, [this.props.node.id]), e.stopPropagation(), e.preventDefault() } }, { key: "onCopy", value: function(e) { f.default.copy(e, [this.props.node.id]), e.stopPropagation(), e.preventDefault() } }, { key: "onPaste", value: function(e) { f.default.pastePromise(e, this.props.node.id), e.stopPropagation(), e.preventDefault() } }, { key: "render", value: function() { var e = this.props.node, t = "off" === this.props.settings.SHOW_VIVALDI_FOOTER; return u.default.createElement(b.default, { tabIndex: "0", ref: "draggable", className: (0, x.default)({ draggable: !0, dial: !0, clicked: this.state.mouseIsDown, folder: Boolean(this.props.node.children) }), style: this.props.style, dragId: this.props.node.id, onDraggableMove: this.draggableMoveHandler, onContextMenu: (0, U.default)(this.getContextMenuItems.bind(this, e)), dragImageSrc: "/resources/drag-and-drop.png", onDoubleClick: this.cancelEvent, __source: { fileName: o, lineNumber: 405 } }, u.default.createElement("span", { className: "thumbnail", __source: { fileName: o, lineNumber: 421 } }, this.props.node.children ? u.default.createElement("div", { className: "thumbnail-image dial-folder-icon", title: t ? this.props.node.url : null, onMouseEnter: t ? null : this.handleMouseEnter, onMouseLeave: t ? null : this.handleMouseLeave, onMouseDown: this.mouseDownHandler, onMouseUp: this.mouseUpHandler, onDragOver: this.onDragOver.bind(this), onDrop: this.onDrop.bind(this), key: e.id, dangerouslySetInnerHTML: { __html: n(466) }, __source: { fileName: o, lineNumber: 432 } }) : u.default.createElement(O.default, { title: t ? this.props.node.url : null, onMouseEnter: t ? null : this.handleMouseEnter, onMouseLeave: t ? null : this.handleMouseLeave, onMouseDown: this.mouseDownHandler, onMouseUp: this.mouseUpHandler, key: e.id, src: e.thumbnail, __source: { fileName: o, lineNumber: 424 } }), e.url && u.default.createElement("button", { tabIndex: "-1", onClick: this.handleUpdateThumbnail, className: (0, x.default)({ circular: !0, "update-thumbnail": !0, updating: this.state.updating }), disabled: !!this.state.updating, title: (0, M.default)("Update thumbnail"), dangerouslySetInnerHTML: { __html: n(474) }, __source: { fileName: o, lineNumber: 448 } }), u.default.createElement("button", { tabIndex: "-1", onClick: this.handleRemoveDial, title: (0, M.default)("other", "Delete"), className: "close circular", dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: o, lineNumber: 461 } })), "never" !== this.props.settings.SPEEDDIAL_TITLES_VISIBLE && u.default.createElement(E.default, { ref: "title", howToEdit: "click", className: "button-title", setSpeedDialAwaitingEdit: this.props.setSpeedDialAwaitingEdit, needsInitialEdit: this.props.awaitingInitialEditId === this.props.node.id, getContextMenuItems: this.getContextMenuItems, bookmark: this.props.node, __source: { fileName: o, lineNumber: 471 } })) } }]), t }(u.default.Component); e.exports = V }, function(e, t, n) { // ========================= // Function_709 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDialAddButton.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(5), d = i(A), h = function(e) { function t() { return a(this, t), r(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments)) } return s(t, e), l(t, [{ key: "render", value: function() { var e = (0, d.default)({ dial: !0, add: !0, active: this.props.drawerIsOpen }); return u.default.createElement("div", { className: e, style: this.props.style, __source: { fileName: o, lineNumber: 12 } }, u.default.createElement("button", { ref: "openAddSpeedDial", className: "thumbnail-image", title: this.props.title, onDragOver: this.props.onDragOver, onDrop: this.props.onDrop, onClick: this.props.handleClick, __source: { fileName: o, lineNumber: 15 } })) } }]), t }(u.default.Component); e.exports = h }, function(e, t, n) { // ========================= // Function_710 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t); } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDialDrawer.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(11), d = i(A), h = n(136), m = i(h), p = n(97), f = i(p), g = n(711), _ = i(g), v = n(46), b = n(96), N = i(b), E = n(4), S = i(E), T = n(10), y = i(T), C = n(2), I = i(C), O = function(e) { function t(e, n) { a(this, t); var i = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return i._onUrlbarStoreChanged = i._onUrlbarStoreChanged.bind(i), i.addSpeedDialFolder = i.addSpeedDialFolder.bind(i), i.drawerSubmitHandler = i.drawerSubmitHandler.bind(i), i.onUrlFieldChanged = i.onUrlFieldChanged.bind(i), i.toggleStartpageDrawer = i.toggleStartpageDrawer.bind(i), i.state = { addSpeedDialTitle: "", isSpeedDialURLValid: !1 }, i } return s(t, e), l(t, [{ key: "componentDidMount", value: function() { d.default.findDOMNode(this.refs.urlField).focus(), f.default.addChangeListener(this._onUrlbarStoreChanged) } }, { key: "componentWillUnmount", value: function() { f.default.removeChangeListener(this._onUrlbarStoreChanged) } }, { key: "_onUrlbarStoreChanged", value: function() { var e = f.default.getUrlfieldStateFromId("speedDialDrawer"); this.setState(e), this.onUrlFieldChanged() } }, { key: "addSpeedDialFolder", value: function() { var e = this, t = { parentId: this.props.node.id, title: (0, I.default)("New Folder") }; S.default.bookmarks.create(t, function(t) { S.default.runtime.lastError && console.warn("The computer tried to create a speed dial folder, but The Bookmark API said no. ", S.default.runtime.lastError.message), e.props.setSpeedDialAwaitingEdit(t.id), e.toggleStartpageDrawer(!1) }) } }, { key: "toggleStartpageDrawer", value: function(e) { this.props.toggleStartpageDrawer(!1) } }, { key: "drawerSubmitHandler", value: function(e) { e.stopPropagation(), e.preventDefault(); var t = (this.state.editUrl || this.state.url || "").trim(); 0 !== t.length && (t = (0, v.ensureURLProtocol)(t), this.addSpeedDial(this.state.editUrl, this.state.editUrl), this.setState({ editUrl: "" })) } }, { key: "addSpeedDial", value: function(e, t) { var n = { parentId: this.props.node.id, title: e, url: (0, v.ensureURLProtocol)(t) }, i = "chrome://thumb/" + (0, v.ensureURLProtocol)(t); y.default.thumbnails.isThumbnailAvailable("", i, function(e) { e.hasThumbnail && (n.thumbnail = e.thumbnailUrl), S.default.bookmarks.create(n, function(e) { S.default.runtime.lastError && console.warn("The computer tried to create a speed dial, but The Bookmark API said no. ", S.default.runtime.lastError.message), e && N.default.updateBookmarkThumbnail(e) }) }), this.toggleStartpageDrawer(!1) } }, { key: "isSpeedDialURLValid", value: function() { var e = this.refs.urlField && d.default.findDOMNode(this.refs.urlField) && d.default.findDOMNode(this.refs.urlField).value.trim(); return (0, v.isValidURL)((0, v.ensureURLProtocol)(e)) } }, { key: "onUrlFieldChanged", value: function(e) { this.setState({ isSpeedDialURLValid: this.isSpeedDialURLValid() }) } }, { key: "render", value: function() { return u.default.createElement("aside", { key: "drawer", className: "startpage-drawer", __source: { fileName: o, lineNumber: 114 } }, u.default.createElement("section", { className: "drawer-adddial", __source: { fileName: o, lineNumber: 115 } }, u.default.createElement("header", { __source: { fileName: o, lineNumber: 116 } }, u.default.createElement("h2", { __source: { fileName: o, lineNumber: 117 } }, (0, I.default)("Add Bookmark"))), u.default.createElement("form", { className: "drawer-addform", onSubmit: this.drawerSubmitHandler, __source: { fileName: o, lineNumber: 119 } }, u.default.createElement(m.default, { ref: "urlField", className: "address", editUrl: this.state.editUrl, autocompletionEnabled: !0, selectionStart: this.state.selectionStart, selectionEnd: this.state.selectionEnd, pageId: "speedDialDrawer", onUrlFieldChanged: this.onUrlFieldChanged, title: (0, I.default)("Enter page address"), triggerTypedHistory: !1, __source: { fileName: o, lineNumber: 121 } }), u.default.createElement("input", { className: "add-dial-submit primary", type: "submit", disabled: !this.state.isSpeedDialURLValid, value: (0, I.default)("Add"), __source: { fileName: o, lineNumber: 131 } })), u.default.createElement("div", { className: "toolbar icons", __source: { fileName: o, lineNumber: 137 } }, u.default.createElement("button", { className: "button-toolbar folder flex", onClick: this.addSpeedDialFolder, __source: { fileName: o, lineNumber: 138 } }, u.default.createElement("span", { dangerouslySetInnerHTML: { __html: n(216) }, __source: { fileName: o, lineNumber: 140 } }), u.default.createElement("span", { className: "buttontext", __source: { fileName: o, lineNumber: 142 } }, (0, I.default)("New Folder"))))), u.default.createElement(_.default, { toggleStartpageDrawer: this.toggleStartpageDrawer, node: this.props.node, __source: { fileName: o, lineNumber: 147 } })) } }]), t }(u.default.Component); e.exports = O }, function(e, t, n) { // ========================= // Function_711 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDialSuggestSection.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(4), d = i(A), h = n(10), m = i(h), p = n(46), f = n(96), g = i(f), _ = n(2), v = i(_), b = function(e) { function t(e, n) { a(this, t); var i = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, n)); return i.addSpeedDial = i.addSpeedDial.bind(i), i.toggleStartpageDrawer = i.toggleStartpageDrawer.bind(i), i.state = { suggestions: [] }, i } return s(t, e), l(t, [{ key: "componentWillMount", value: function() { this.updateSuggestions() } }, { key: "updateSuggestions", value: function(e) { var t = this; d.default.topSites.get(function(e) { t.setState({ suggestions: e.filter(function(e) { return !((0, p.isInternalURL)(e.url) || (0, p.isIgnoredURL)(e.url)) }) }) }) } }, { key: "addSpeedDial", value: function(e, t) { var n = { parentId: this.props.node.id, title: e, url: (0, p.ensureURLProtocol)(t) }, i = "chrome://thumb/" + (0, p.ensureURLProtocol)(t); m.default.thumbnails.isThumbnailAvailable("", i, function(e) { e.hasThumbnail && (n.thumbnail = e.thumbnailUrl), d.default.bookmarks.create(n, function(e) { d.default.runtime.lastError && console.warn("The computer tried to create a speed dial, but The Bookmark API said no. ", d.default.runtime.lastError.message), e && g.default.updateBookmarkThumbnail(e) }) }), this.toggleStartpageDrawer(!1) } }, { key: "toggleStartpageDrawer", value: function(e) { this.props.toggleStartpageDrawer(e) } }, { key: "render", value: function() { return u.default.createElement("section", { className: "drawer-suggestions", __source: { fileName: o, lineNumber: 63 } }, u.default.createElement("header", { __source: { fileName: o, lineNumber: 64 } }, u.default.createElement("h2", { __source: { fileName: o, lineNumber: 65 } }, (0, v.default)("Suggestions")), u.default.createElement("button", { className: "close", tabIndex: "-1", dangerouslySetInnerHTML: { __html: n(81) }, onClick: this.toggleStartpageDrawer.bind(this, !1), __source: { fileName: o, lineNumber: 66 } })), u.default.createElement("div", { className: "dials dial-suggestions", __source: { fileName: o, lineNumber: 72 } }, this.state.suggestions && this.state.suggestions.length ? this.state.suggestions.map(function(e, t) { return u.default.createElement("button", { key: t, className: "dial", title: e.title, onClick: this.addSpeedDial.bind(this, e.title, e.url), "data-dialurl": e.url, __source: { fileName: o, lineNumber: 77 } }, u.default.createElement("div", { className: "dial-image", style: { backgroundImage: "url(chrome://thumb/" + (0, p.ensureURLProtocol)(e.url) + ")" }, __source: { fileName: o, lineNumber: 82 } }), u.default.createElement("div", { className: "dial-title", __source: { fileName: o, lineNumber: 85 } }, e.title)) }, this) : u.default.createElement("p", { __source: { fileName: o, lineNumber: 89 } }, (0, v.default)("No history to choose from yet.")))) } }]), t }(u.default.Component); b.propTypes = { node: u.default.PropTypes.object.isRequired }, e.exports = b }, function(e, t, n) { // ========================= // Function_712 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/speeddial/SpeedDialView.jsx", l = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), c = n(1), u = i(c), A = n(11), d = i(A), h = n(40), m = i(h), p = n(54), f = i(p), g = n(409), _ = i(g), v = n(21), b = i(v), N = n(708), E = i(N), S = n(709), T = i(S), y = n(2), C = i(y), I = n(5), O = i(I), w = n(4), D = i(w), k = n(7), M = n(6), L = i(M), P = n(87), R = i(P), x = n(96), B = i(x), U = n(25), F = i(U), H = ["SPEEDDIAL_TITLES_VISIBLE", "SPEEDDIAL_ADDBUTTON_VISIBLE", "SPEEDDIAL_COLS", "USE_ANIMATION", "SPEEDDIAL_TITLES_VISIBLE", "SHOW_VIVALDI_FOOTER"], V = 220, W = 15, G = null, K = function(e) { function t(e) { a(this, t); var n = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return n._onWebpageViewStoreChanged = n._onWebpageViewStoreChanged.bind(n), n.openParentNode = n.openParentNode.bind(n), n.onDragOverAddButton = n.onDragOverAddButton.bind(n), n.onDropOnAddButton = n.onDropOnAddButton.bind(n), n._temporaryAnimationEl = null, n._animateBackward = !1, n.state = { showDialOverlay: !1 }, n } return s(t, e), l(t, [{ key: "componentWillMount", value: function() { var e = this; R.default.addChangeListener(this._onWebpageViewStoreChanged), this._io = new IntersectionObserver(function(t) { e.isVisible(t) }) } }, { key: "componentDidMount", value: function() { this.attachIntersectionObserver() } }, { key: "componentWillUnmount", value: function() { this._io.disconnect(), R.default.removeChangeListener(this._onWebpageViewStoreChanged) } }, { key: "_onWebpageViewStoreChanged", value: function(e) { e.type === L.default.PAGE_RELOAD && this.handleUpdateThumbnailFolder(this.props.speedDialNode.id) } }, { key: "componentDidUpdate", value: function() { var e = this, t = function t(n) { "transform" === n.propertyName && e._temporaryAnimationEl && (e._temporaryAnimationEl.removeEventListener("webkitTransitionEnd", t), d.default.unmountComponentAtNode(e._temporaryAnimationEl), e._temporaryAnimationEl && e._temporaryAnimationEl.parentNode && e._temporaryAnimationEl.parentNode.removeChild(e._temporaryAnimationEl), e._temporaryAnimationEl = null, e._animateBackward = !1) }; this._temporaryAnimationEl && (this._temporaryAnimationEl.addEventListener("webkitTransitionEnd", t), this._animateBackward === !0 ? d.default.findDOMNode(this).classList.add("pause-animations", "animateFront") : d.default.findDOMNode(this).classList.add("pause-animations", "animateBack"), setTimeout(function() { e._temporaryAnimationEl && (e._animateBackward === !0 ? (d.default.findDOMNode(e).classList.remove("pause-animations", "animateFront"), e._temporaryAnimationEl && e._temporaryAnimationEl.firstChild && e._temporaryAnimationEl.firstChild.classList && e._temporaryAnimationEl.firstChild.classList.add("animateBack")) : (d.default.findDOMNode(e).classList.remove("pause-animations", "animateBack"), e._temporaryAnimationEl && e._temporaryAnimationEl.firstChild && e._temporaryAnimationEl.firstChild.classList && e._temporaryAnimationEl.firstChild.classList.add("animateFront"))) }, 5)), this.attachIntersectionObserver() } }, { key: "attachIntersectionObserver", value: function() { this.refs.toParentFolder && null === this._io.root && this._io.observe(d.default.findDOMNode(this.refs.toParentFolder)) } }, { key: "isVisible", value: function(e) { var t = e[0]; 0 === t.intersectionRatio ? t.target.classList.add("out-of-view") : t.target.classList.remove("out-of-view") } }, { key: "componentWillReceiveProps", value: function(e) { var t = this; this.props.speedDialSetNode && this.props.speedDialNode && e.speedDialSetNode && e.speedDialNode && this.props.speedDialSetNode.id === e.speedDialSetNode.id && this.props.speedDialNode.id !== e.speedDialNode.id && this.props.settings.USE_ANIMATION && (this.props.speedDialNode.id === e.speedDialNode.parentId ? this._saveCloneForAnimation() : e.speedDialNode.children && e.speedDialNode.children.find(function(e) { return e.id === t.props.speedDialNode.id }) && (this._saveCloneForAnimation(), this._animateBackward = !0)) } }, { key: "_saveCloneForAnimation", value: function() { if (d.default.findDOMNode(this) && (G && !this.refs.rootElement && (this.refs.rootElement = G), this.refs.rootElement)) { var e = Object.keys(this.refs.rootElement).find(function(e) { return e.startsWith("__reactInternalInstance") }), t = this.refs.rootElement[e]; if (t) { var n = t._currentElement; n && G !== n && (G = this.refs.rootElement); var i = u.default.cloneElement(n, n.props); this._temporaryAnimationEl = document.createElement("div"), d.default.render(i, this._temporaryAnimationEl), d.default.findDOMNode(this).parentNode.appendChild(this._temporaryAnimationEl) } } } }, { key: "onDragOverHandler", value: function(e) { e.preventDefault(), e.stopPropagation() } }, { key: "openSpeedDialNode", value: function(e, t) { this.props.openSpeedDialNode(e, t) } }, { key: "openParentNode", value: function(e) { var t = this; this.props.speedDialNode.parentId && D.default.bookmarks.getSubTree(this.props.speedDialNode.parentId, function(e) { if (!D.default.runtime.lastError) { var n = e[0]; n && t.openSpeedDialNode(n) } }) } }, { key: "isTopLevel", value: function() { return !this.props.speedDialNode || !this.props.speedDialSetNode || this.props.speedDialNode.id === this.props.speedDialSetNode.id } }, { key: "renderNavigation", value: function() { return this.isTopLevel() ? null : u.default.createElement("nav", { className: "startpage-folder-navigation", ref: "toParentFolder", __source: { fileName: o, lineNumber: 278 } }, u.default.createElement("button", { onClick: this.openParentNode, title: (0, C.default)("Show Parent Folder"), "data-name": "up-button", className: "button-startpage up", __source: { fileName: o, lineNumber: 279 } }, u.default.createElement("span", { dangerouslySetInnerHTML: { __html: n(459) }, __source: { fileName: o, lineNumber: 284 } }), this.props.speedDialNode.title)) } }, { key: "handleUpdateThumbnailFolder", value: function(e) { D.default.bookmarks.getChildren(e, function(e) { return e.forEach(B.default.updateBookmarkThumbnail.bind(B.default)) }) } }, { key: "getSpeedDialColumns", value: function() { var e = V + 2 * W, t = 6 * W, n = this.props.settings.SPEEDDIAL_COLS; return this.props.maxWidth >= 6 * e + t && n > 5 ? 6 : this.props.maxWidth >= 5 * e + t && n > 4 ? 5 : this.props.maxWidth >= 4 * e + t && n > 3 ? 4 : this.props.maxWidth >= 3 * e + t && n > 2 ? 3 : this.props.maxWidth >= 2 * e + t && n > 1 ? 2 : 1 } }, { key: "onDragOverAddButton", value: function(e) { var t = m.default.getMimeType(); e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || e === t }) && (e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy") } }, { key: "onDropOnAddButton", value: function(e) { var t = this.props.speedDialNode, n = m.default.getMimeType(); if (e.dataTransfer.types.findIndex(function(e) { return e === n }) !== -1) { var i = JSON.parse(e.nativeEvent.dataTransfer.getData(n)); f.default.copyBookmarks(i, t.id, 0) } else m.default.getUrlsFromEventPromise(e, !1).then(function(e) { return f.default.createBookmarks(e, t.id, t.children ? t.children.length : 0) }) } }, { key: "shouldComponentUpdate", value: function(e, t) { return (0, b.default)(this, e, t) } }, { key: "createFlexBoxLayout", value: function(e, t, n) { var i = e && e.children || [], a = { style: { flexDirection: "row", width: n, flexWrap: "wrap" }, children: i.map(function(e) { return { type: "bookmark", key: e.id, node: e, style: { width: t, height: .9 * t, marginRight: W, marginBottom: 2 * W, marginLeft: W } } }).concat({ type: "button", key: "button", style: { width: t, height: .9 * t, marginRight: W, marginBottom: 2 * W, marginLeft: W } }) }; return (0, _.default)(a), a } }, { key: "getStyles", value: function(e) { return (e.children || []).map(function(e) { return { style: e.layout, data: { type: e.type, node: e.node }, key: e.key } }) } }, { key: "render", value: function() { var e = this, t = this.props, n = t.open, i = t.settings, a = t.maxWidth, r = t.maxHeight, s = t.speedDialSet; if (n === !1 || !a || !r) return null; var l = this.createFlexBoxLayout(this.props.speedDialNode, V, (V + 2 * W) * this.getSpeedDialColumns()), c = this.getStyles(l), A = (0, O.default)({ dials: !0, speeddial: !0, "sd-titles-onhover": "hover" === i.SPEEDDIAL_TITLES_VISIBLE }), d = { width: (0, k.get)(l, ["layout", "width"], 0), marginLeft: "auto", marginRight: "auto" }, h = s.length > 0; return u.default.createElement("span", { __source: { fileName: o, lineNumber: 426 } }, this.renderNavigation(), u.default.createElement("div", { className: A, style: d, ref: "rootElement", __source: { fileName: o, lineNumber: 428 } }, c.map(function(t, n) { var a = t.key, r = t.style, s = t.data; return "bookmark" === s.type ? u.default.createElement(E.default, { key: n + "-" + s.node.id + "-" + (s.node.dateGroupModified || ""), style: r, node: s.node, settings: i, openSpeedDialNode: e.props.openSpeedDialNode, awaitingInitialEditId: e.props.awaitingInitialEditId, setSpeedDialAwaitingEdit: e.props.setSpeedDialAwaitingEdit, __source: { fileName: o, lineNumber: 436 } }) : "button" === s.type && i.SPEEDDIAL_ADDBUTTON_VISIBLE ? u.default.createElement(T.default, { key: a, style: r, onDragOver: e.onDragOverAddButton, onDrop: e.onDropOnAddButton, drawerIsOpen: e.props.drawerIsOpen, title: h ? (0, C.default)("Add Bookmark") : (0, C.default)("First add a new Speed Dial folder"), handleClick: h ? e.props.toggleStartpageDrawer : e.props.createSpeedDialSet, __source: { fileName: o, lineNumber: 449 } }) : void 0 }).filter(Boolean))) } }]), t }(u.default.Component); e.exports = (0, F.default)(K, H, [], "settings") }, function(e, t, n) { // ========================= // Function_713 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/startpage/StartPage.jsx", a = n(1), r = n(11), s = n(475), o = n(54), l = n(51), c = n(565), u = n(605), A = n(610), d = n(25), h = n(50), m = n(37), p = n(15), f = n(9), g = n(374), _ = n(710), v = n(712), b = n(714), N = n(2), E = n(4), S = n(26), T = n(30), y = "1", C = ["STARTPAGE_BG_COLOR", "STARTPAGE_BG_COLOR_USER_DEFINED", "STARTPAGE_SHOW_IMAGE", "STARTPAGE_IMAGE", "STARTPAGE_IMAGE_USER_DEFINED", "STARTPAGE_IMAGE_STRETCH", "STARTPAGE_IMAGE_REPEAT", "SPEEDDIAL_ADDBUTTON_VISIBLE", "BOOKMARKS_CONFIRM_BEFORE_OPEN", "BOOKMARKS_CONFIRM_THRESHOLD", "KEY_ACCESS"], I = a.createClass({ displayName: "StartPage", mixins: [f], getInitialState: function() { var e = l.getSpeeddialNodes(), t = e && e[0] || null, n = void 0; return n = "bookmarks" === this.props.view ? g.Bookmarks : "history" === this.props.view ? g.History : g.SpeedDial, { section: n, speeddialNodes: e, menuSpeeddial: t, currentSpeeddial: t, bookmarkRoot: l.getBookmarksRootNode(), drawerIsOpen: !1, awaitingInitialEditId: null } }, componentWillMount: function() { l.addChangeListener(this._onStoreChange) }, componentDidMount: function() { this._setStartpageStyle() }, componentWillUnmount: function() { l.removeChangeListener(this._onStoreChange), m.unbind("esc", this.closeDrawerOnEsc) }, componentDidUpdate: function(e, t) { this._setStartpageStyle() }, componentWillReceiveProps: function(e) { if (e.view !== this.props.view) { var t = void 0; t = "bookmarks" === e.view ? g.Bookmarks : "history" === e.view ? g.History : g.SpeedDial, this.setState({ section: t }) } }, onFocus: function() { m.bind("esc", this.closeDrawerOnEsc) }, onBlur: function() { m.unbind("esc", this.closeDrawerOnEsc) }, _onStoreChange: function() { var e = l.getSpeeddialNodes(), t = e.length ? e[0] : null, n = t, i = void 0, a = !0, r = !1, s = void 0; try { for (var o, c = e[Symbol.iterator](); !(a = (o = c.next()).done); a = !0) i = o.value, this.getUpdatedNode(i, this.state.currentSpeeddial) && (n = this.getUpdatedNode(i, this.state.currentSpeeddial)), this.getUpdatedNode(i, this.state.menuSpeeddial) && (t = this.getUpdatedNode(i, this.state.menuSpeeddial)) } catch (e) { r = !0, s = e } finally { try { !a && c.return && c.return() } finally { if (r) throw s } } this.setState({ speeddialNodes: e, menuSpeeddial: t, currentSpeeddial: n }) }, getUpdatedNode: function e(t, n) { if (t && t.id && n && n.id) { if (t.id === n.id) return t; if (t.children) { for (var i = 0; i < t.children.length; i++) { var a = e(t.children[i], n); if (a && a.id === n.id) return a } return null } return null } return null }, closeDrawerOnEsc: function(e) { e.preventDefault(), e.stopPropagation(), this.state.drawerIsOpen && this.toggleStartpageDrawer(!1) }, addBookmarkOnDblClick: function(e) { e.target === r.findDOMNode(this.refs.sdWrapper) && this.toggleStartpageDrawer() }, toggleStartpageDrawer: function(e) { var t = "boolean" == typeof e ? e : !this.state.drawerIsOpen; this.setState({ drawerIsOpen: t }) }, handlePaste: function() { document.addEventListener("paste", this.onPaste), document.execCommand("paste"), document.removeEventListener("paste", this.onPaste) }, onPaste: function(e) { o.pastePromise(e, this.state.currentSpeeddial.id, !0), e.stopPropagation(), e.preventDefault() }, createSpeedDialSet: function() { E.bookmarks.create({ parentId: y, title: N("New Folder") }, function(e) { E.bookmarks.update(e.id, { speeddial: !0 }, function(e) { this.setState({ initialEditSpeedDialSet: e.id }), this.openMenuItem(g.SpeedDial, e) }.bind(this)) }.bind(this)) }, openMenuItem: function(e, t, n) { this.props.updatePageThumbnailWithActiveWebview(this.props.page, 1e3); var i = t && t.id && t; this.setState({ section: e, menuSpeeddial: i, currentSpeeddial: i }) }, isFolder: function(e) { return !e.url }, openFolder: function(e, t) { if (t = t || {}, t.openInBackground === !0) { if (this.props.vivaldiSettings.BOOKMARKS_CONFIRM_BEFORE_OPEN && e.children.length > this.props.vivaldiSettings.BOOKMARKS_CONFIRM_THRESHOLD) { var n = { bookmarks: e.children, inBackground: t.openInBackground, newTab: t.openInNewTab }; return void h.showConfirmOpenBookmarkDialog(n) } E.bookmarks.getChildren(e.id, function(e) { e.forEach(function(e) { p.openURL(e.url, { inCurrent: !1, inBackground: !0 }) }) }) } else this.setState({ currentSpeeddial: e }), r.findDOMNode(this.refs.sdWrapper).scrollTop = 0 }, openSpeedDialNode: function(e, t) { t = t || {}, this.isFolder(e) ? this.openFolder(e, t) : t.openInNewWindow ? p.openWindow(e.url, { incognito: t.incognito }) : p.openURL(e.url, { inCurrent: !t.openInNewTab, inBackground: t.openInBackground, bookmarkId: e.id, addOpenerTabId: !0 }) }, setSpeedDialAwaitingEdit: function(e) { this.setState({ awaitingInitialEditId: e }) }, _setStartpageStyle: function() { if (this.props && this.props.open && this.props.vivaldiSettings) { var e = this.props.vivaldiSettings, t = this.refs.startpage.style, n = e.STARTPAGE_IMAGE_STRETCH ? "cover" : "auto", i = e.STARTPAGE_IMAGE_REPEAT ? "repeat" : "no-repeat", a = "user_defined" === e.STARTPAGE_BG_COLOR ? e.STARTPAGE_BG_COLOR_USER_DEFINED : e.STARTPAGE_BG_COLOR, r = void 0; r = e.STARTPAGE_SHOW_IMAGE ? "user_defined" === e.STARTPAGE_IMAGE ? "url(" + e.STARTPAGE_IMAGE_USER_DEFINED + ")" : "url(" + e.STARTPAGE_IMAGE + ")" : "url(data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=)", t.backgroundColor = a, t.backgroundImage = r, t.backgroundSize = n, t.backgroundRepeat = i } }, renderSpeedDial: function() { return a.createElement(v, { open: !0, isActive: !0, speedDialNode: this.state.currentSpeeddial, speedDialSetNode: this.state.menuSpeeddial, speedDialSet: this.state.speeddialNodes, drawerIsOpen: this.state.drawerIsOpen, maxWidth: this.props.contentWidth, maxHeight: this.props.contentHeight, openSpeedDialNode: this.openSpeedDialNode, toggleStartpageDrawer: this.toggleStartpageDrawer, createSpeedDialSet: this.createSpeedDialSet, setSpeedDialAwaitingEdit: this.setSpeedDialAwaitingEdit, awaitingInitialEditId: this.state.awaitingInitialEditId, __source: { fileName: i, lineNumber: 317 } }) }, renderSection: function() { return this.state.section === g.Bookmarks ? a.createElement(c, { __source: { fileName: i, lineNumber: 337 } }) : this.state.section === g.History ? a.createElement(u, { page: this.props.page, __source: { fileName: i, lineNumber: 339 } }) : this.state.section === g.SpeedDial ? this.renderSpeedDial() : this.state.section === g.HistoryNew ? a.createElement(A, { page: this.props.page, __source: { fileName: i, lineNumber: 343 } }) : (console.warn("Unknown Startpage Section: ", this.state.section), null) }, getContextMenuItems: function() { var e = this.state.drawerIsOpen === !1 && null !== this.state.currentSpeeddial; return [Object.assign({ handler: this.toggleStartpageDrawer, visible: e }, T("Add Bookmark to Speed Dial")), { name: "---" }, Object.assign({ handler: this.handlePaste, visible: e }, "MacIntel" === navigator.platform ? T("mac", "Paste") : T("win_linux", "Paste")), { name: "---" }, Object.assign({ handler: h.fullScreen }, T("Fullscreen"))] }, render: function() { if (!this.props.open) return null; var e = this.state.speeddialNodes.length > 0 ? this.addBookmarkOnDblClick : this.createSpeedDialSet; return a.createElement("div", { key: this.props.id, ref: "startpage", tabIndex: "0", onFocus: this.onFocus, onBlur: this.onBlur, className: "startpage", __source: { fileName: i, lineNumber: 381 } }, a.createElement(b, { openMenuItem: this.openMenuItem, section: this.state.section, speedDialSet: this.state.speeddialNodes, speedDialSetNode: this.state.menuSpeeddial, createSpeedDialSet: this.createSpeedDialSet, initialEditSpeedDialSet: this.state.initialEditSpeedDialSet, keyAccess: this.props.vivaldiSettings.KEY_ACCESS, __source: { fileName: i, lineNumber: 389 } }), a.createElement("div", { ref: "startpageContent", className: "startpage-content", onContextMenu: this.state.section === g.SpeedDial && S(this.getContextMenuItems), onDoubleClick: this.state.section === g.SpeedDial && !this.props.vivaldiSettings.SPEEDDIAL_ADDBUTTON_VISIBLE && e, __source: { fileName: i, lineNumber: 398 } }, a.createElement("div", { className: "sdwrapper", ref: "sdWrapper", __source: { fileName: i, lineNumber: 406 } }, this.renderSection())), a.createElement(s, { transitionEnterTimeout: 500, transitionLeaveTimeout: 200, transitionName: "startpage-drawer-transition", component: "div", className: "startpage-drawer-wrapper", __source: { fileName: i, lineNumber: 413 } }, this.state.drawerIsOpen && a.createElement(_, { key: "drawer-" + this.props.id, node: this.state.currentSpeeddial, setSpeedDialAwaitingEdit: this.setSpeedDialAwaitingEdit, toggleStartpageDrawer: this.toggleStartpageDrawer, __source: { fileName: i, lineNumber: 420 } }))) } }); e.exports = d(I, C) }, function(e, t, n) { // ========================= // Function_714 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/startpage/startpage-topmenu.jsx", a = n(1), r = n(374), s = n(373), o = n(74), l = n(2), c = n(5), u = n(30), A = a.createClass({ displayName: "StartPageTopMenu", getInitialState: function() { return { useNewHistory: o.isEnabled(o.kNewHistoryPage) } }, propTypes: { openMenuItem: a.PropTypes.func, createSpeedDialSet: a.PropTypes.func, section: a.PropTypes.string, speedDialSet: a.PropTypes.array, speedDialSetNode: a.PropTypes.object }, openMenuItem: function(e, t, n) { this.props.openMenuItem(e, t, n) }, getContextMenuItems: function(e, t) { return [Object.assign({ handler: this.handleRename.bind(this, e) }, u("Rename")), { name: "---" }, Object.assign({ handler: this.handleRemove.bind(this, e) }, u("Remove from Speed Dial"))] }, handleRename: function(e) { this.refs[e].enableEditing() }, handleRemove: function(e) { this.refs[e].removeSpeedDial() }, render: function() { return a.createElement("nav", { className: "startpage-navigation", __source: { fileName: i, lineNumber: 53 } }, a.createElement("div", { className: "startpage-navigation-group", __source: { fileName: i, lineNumber: 54 } }, this.props.speedDialSet.map(function(e, t) { var n = this.props.section === r.SpeedDial && this.props.speedDialSetNode && this.props.speedDialSetNode.id === e.id, o = "title" + t; return a.createElement(s, { className: c({ active: n, "button-startpage": !0 }), ref: o, key: e.id, bookmark: e, howToEdit: "doubleClick", getContextMenuItems: this.getContextMenuItems.bind(this, o), keyAccess: this.props.keyAccess, onSelect: this.openMenuItem.bind(this, r.SpeedDial, e), needsInitialEdit: this.props.initialEditSpeedDialSet === e.id, __source: { fileName: i, lineNumber: 63 } }) }, this), a.createElement("button", { onClick: this.props.createSpeedDialSet, className: "button-startpage add-set", title: l("Add new Speed Dial folder"), tabIndex: this.props.keyAccess, dangerouslySetInnerHTML: { __html: n(1009) }, __source: { fileName: i, lineNumber: 81 } })), a.createElement("div", { className: "startpage-navigation-group", __source: { fileName: i, lineNumber: 89 } }, a.createElement("button", { onClick: this.openMenuItem.bind(this, r.Bookmarks, null), title: l("Bookmarks"), tabIndex: this.props.keyAccess, className: c({ "button-startpage": !0, active: this.props.section === r.Bookmarks }), __source: { fileName: i, lineNumber: 90 } }, l("Bookmarks")), a.createElement("button", { onClick: this.openMenuItem.bind(this, r.History, null), title: l("History"), tabIndex: this.props.keyAccess, className: c({ "button-startpage": !0, active: this.props.section === r.History }), __source: { fileName: i, lineNumber: 98 } }, l("History")), this.state.useNewHistory === !0 ? a.createElement("button", { onClick: this.openMenuItem.bind(this, r.HistoryNew, null), title: l("History"), tabIndex: this.props.keyAccess, className: c({ "button-startpage": !0, active: this.props.section === r.HistoryNew }), __source: { fileName: i, lineNumber: 108 } }, l("History in the Making")) : null)) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_715 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/statusbar/CaptureImages.jsx", a = n(176), r = n(5), s = n(39), o = n(9), l = n(1), c = n(2), u = n(177), A = u.showNotification, d = l.createClass({ displayName: "CaptureImages", mixins: [s, o], getInitialState: function() { return { drawerOpen: !1, captureInProgress: !1, compressionFormat: "png", activeCapturePage: "fullpage", saveLocation: "file" } }, componentDidUpdate: function(e, t) { t.drawerOpen === !0 && this.state.drawerOpen === !1 ? this.disableOnClickOutside() : t.drawerOpen === !1 && this.state.drawerOpen === !0 && this.enableOnClickOutside() }, onToggleCaptureImagesActions: function() { this.setState({ drawerOpen: !this.state.drawerOpen }) }, onCaptureFullpage: function() { var e = this; this.setState({ captureInProgress: !0 }), a.captureFullpage(this.props.pageId, this.state.compressionFormat, this.state.saveLocation, function(t) { "clipboard" === e.state.saveLocation && A({ title: c("Page Captured"), body: c("Image stored in the clipboard.") }), e.setState({ drawerOpen: !1, captureInProgress: !1 }) }) }, onCaptureArea: function() { var e = this; this.setState({ drawerOpen: !1 }), a.captureArea(this.state.compressionFormat, this.state.saveLocation, !1, function(t) { t ? e.setState({ drawerOpen: !0 }) : "clipboard" === e.state.saveLocation && A({ title: c("Area Captured"), body: c("Image stored in the clipboard.") }) }) }, handleClickOutside: function() { this.setState({ drawerOpen: !1 }) }, onSelectPNG: function() { this.setState({ compressionFormat: "png", saveLocation: "file" }) }, onSelectJPEG: function() { this.setState({ compressionFormat: "jpg", saveLocation: "file" }) }, onSelectClipboard: function() { this.setState({ saveLocation: "clipboard" }) }, onSelectPageCapture: function() { "fullpage" !== this.state.activeCapturePage && this.setState({ activeCapturePage: "fullpage" }) }, onSelectAreaCapture: function() { "area" !== this.state.activeCapturePage && this.setState({ activeCapturePage: "area" }) }, renderFormatPicker: function() { return l.createElement("ul", { className: "capture-controls", __source: { fileName: i, lineNumber: 103 } }, l.createElement("li", { __source: { fileName: i, lineNumber: 104 } }, l.createElement("label", { __source: { fileName: i, lineNumber: 104 } }, l.createElement("input", { type: "radio", name: "capture-images-group", checked: "png" === this.state.compressionFormat && "file" === this.state.saveLocation, onChange: this.onSelectPNG, __source: { fileName: i, lineNumber: 105 } }), c("Save as PNG"))), l.createElement("li", { __source: { fileName: i, lineNumber: 112 } }, l.createElement("label", { __source: { fileName: i, lineNumber: 112 } }, l.createElement("input", { type: "radio", name: "capture-images-group", checked: "jpg" === this.state.compressionFormat && "file" === this.state.saveLocation, onChange: this.onSelectJPEG, __source: { fileName: i, lineNumber: 113 } }), c("Save as JPEG"))), l.createElement("li", { __source: { fileName: i, lineNumber: 120 } }, l.createElement("label", { __source: { fileName: i, lineNumber: 120 } }, l.createElement("input", { type: "radio", name: "capture-images-group", checked: "clipboard" === this.state.saveLocation, onChange: this.onSelectClipboard, __source: { fileName: i, lineNumber: 121 } }), c("Copy to Clipboard")))) }, render: function() { var e = this.props.isInternalPage === !1 ? this.state.activeCapturePage : "area", t = r({ "button-toolbar-small": !0, "capture-action": !0, disabled: this.props.disabled }), a = r({ "capture-tab": !0, active: "fullpage" === e }), s = r({ "capture-tab": !0, active: "area" === e }); return l.createElement("span", { className: "captureactions", __source: { fileName: i, lineNumber: 151 } }, l.createElement("button", { title: c("Capture Page"), className: t, tabIndex: this.props.keyAccess, onClick: this.onToggleCaptureImagesActions, dangerouslySetInnerHTML: { __html: n(472) }, __source: { fileName: i, lineNumber: 152 } }), this.state.drawerOpen && l.createElement("div", { className: "callout", __source: { fileName: i, lineNumber: 161 } }, l.createElement("header", { __source: { fileName: i, lineNumber: 162 } }, l.createElement("h2", { __source: { fileName: i, lineNumber: 163 } }, c("Capture"))), l.createElement("div", { className: "capture-container", __source: { fileName: i, lineNumber: 165 } }, l.createElement("div", { className: a, onClick: this.onSelectPageCapture, tabIndex: this.props.keyAccess && !this.props.isInternalPage, style: { opacity: this.props.isInternalPage ? .5 : 1 }, __source: { fileName: i, lineNumber: 166 } }, l.createElement("h2", { __source: { fileName: i, lineNumber: 170 } }, c("Full Page"))), l.createElement("div", { className: s, onClick: this.onSelectAreaCapture, tabIndex: this.props.keyAccess, __source: { fileName: i, lineNumber: 172 } }, l.createElement("h2", { __source: { fileName: i, lineNumber: 175 } }, c("Selection"))), "fullpage" === e && this.props.isInternalPage === !1 && l.createElement("form", { className: "capture-content", onSubmit: this.onCaptureFullpage, __source: { fileName: i, lineNumber: 179 } }, l.createElement("div", { className: "capture-images-text", __source: { fileName: i, lineNumber: 181 } }, c("Capture the full page, including non-visible parts.")), this.renderFormatPicker(), l.createElement("div", { className: "capture-button", __source: { fileName: i, lineNumber: 185 } }, this.state.captureInProgress === !1 && l.createElement("input", { type: "submit", value: c("Capture Page"), autoFocus: !0, __source: { fileName: i, lineNumber: 187 } }), this.state.captureInProgress === !0 && l.createElement("div", { className: "capture-progress", __source: { fileName: i, lineNumber: 192 } }, l.createElement("p", { className: "in-progress", __source: { fileName: i, lineNumber: 193 } }, c("Capture in progress..."))))), "area" === e && l.createElement("form", { className: "capture-content", onSubmit: this.onCaptureArea, __source: { fileName: i, lineNumber: 202 } }, l.createElement("div", { className: "capture-images-text", __source: { fileName: i, lineNumber: 204 } }, c("Capture a selection of a web page or user interface.")), this.renderFormatPicker(), l.createElement("div", { className: "capture-button", __source: { fileName: i, lineNumber: 208 } }, l.createElement("input", { type: "submit", value: c("Select Area"), autoFocus: !0, __source: { fileName: i, lineNumber: 209 } })))))) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_716 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/statusbar/StatusToolbar.jsx", a = n(1), r = n(9), s = n(17), o = n(111), l = n(645), c = n(243), u = n(717), A = n(718), d = n(715), h = n(4), m = n(20), p = m.urls, f = n(50), g = function() { return { pages: s.getPages(), activePage: s.getActivePage(), isSelecting: s.isSelecting(), pageSelection: s.getSelection() } }, _ = a.createClass({ displayName: "StatusToolbar", mixins: [r], getInitialState: function() { return Object.assign({}, g()) }, componentDidMount: function() { s.addChangeListener(this._onPageStoreChange) }, componentWillUnmount: function() { s.removeChangeListener(this._onPageStoreChange) }, _onPageStoreChange: function() { this.setState(g()) }, onPageZoomUpdated: function(e) { o.getActiveWebView() && (p.isInternalPage(s.getActivePage()) || h.tabs.setZoom(e)) }, doActionZoomReset: function() { f.zoomReset() }, render: function() { var e = p.isInternalPage(this.state.activePage); return a.createElement("div", { className: "status-toolbar", __source: { fileName: i, lineNumber: 58 } }, a.createElement(d, { key: "capture-images", ref: "captureimages", keyAccess: this.props.keyAccess, disableOnClickOutside: !0, pageId: this.state.activePage.get("id"), isInternalPage: e, __source: { fileName: i, lineNumber: 60 } }), this.state.activePage && a.createElement(A, { key: "toggle-tiling", ref: "tilingtoggle", keyAccess: this.props.keyAccess, disableOnClickOutside: !0, page: this.state.activePage, groupPages: s.getGroup(this.state.activePage.getIn(["extData", "group"]), this.state.pages), tilePages: s.getTiles(this.state.activePage.getIn(["extData", "tiling", "id"]), this.state.pages), isSelecting: this.state.isSelecting, pageSelection: this.state.pageSelection, __source: { fileName: i, lineNumber: 69 } }), a.createElement(u, { key: "toggle-images", ref: "imagetoggle", keyAccess: this.props.keyAccess, disableOnClickOutside: !0, pageId: this.state.activePage.get("id"), disabled: !1, __source: { fileName: i, lineNumber: 84 } }), a.createElement(l, { key: "pageaction-chooser", keyAccess: this.props.keyAccess, pageId: this.state.activePage.get("id"), disableOnClickOutside: !0, disabled: !1, __source: { fileName: i, lineNumber: 92 } }), a.createElement(c, { key: "zoomslider", ref: "zoomslider", inFooter: "true", keyAccess: this.props.keyAccess, buttonClass: "button-toolbar-small", page: this.state.activePage, onZoomUpdated: this.onPageZoomUpdated, onZoomReset: this.doActionZoomReset, defaultZoomLevel: this.state.defaultPageZoomLevel, maxLevel: 5, minLevel: .2, step: .1, disabled: e, __source: { fileName: i, lineNumber: 99 } })) } }); e.exports = _ }, function(e, t, n) { // ========================= // Function_717 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/statusbar/ToggleImages.jsx", a = n(1), r = n(9), s = n(39), o = n(5), l = n(2), c = n(10), u = n(4), A = a.createClass({ displayName: "ToggleImages", mixins: [s, r], getInitialState: function() { return { showImages: !0, loadFromCacheOnly: !1, drawerOpen: !1 } }, componentWillReceiveProps: function(e) { e.pageId !== this.props.pageId && this.onWebviewPageIDChanged(e.pageId) }, componentDidUpdate: function(e, t) { t.drawerOpen === !0 && this.state.drawerOpen === !1 ? this.disableOnClickOutside() : t.drawerOpen === !1 && this.state.drawerOpen === !0 && this.enableOnClickOutside() }, onWebviewPageIDChanged: function(e) { var t = this; e && c.tabsPrivate.get(e, function(n) { u.runtime.lastError || n && t.setState({ showImages: n.showImages, loadFromCacheOnly: n.loadFromCacheOnly, pageId: e }) }) }, onShowAll: function() { this.updatePageImageState(!0, !1, !0), this.setState({ drawerOpen: !1 }) }, onShowCached: function() { this.updatePageImageState(!0, !0, !0), this.setState({ drawerOpen: !1 }) }, onHideAll: function() { this.updatePageImageState(!1, !1, !1), this.setState({ drawerOpen: !1 }) }, updatePageImageState: function(e, t, n) { this.setState({ showImages: e, loadFromCacheOnly: t }), c.tabsPrivate.update(this.props.pageId, { showImages: e, loadFromCacheOnly: t, enablePlugins: n }) }, handleClickOutside: function() { this.setState({ drawerOpen: !1 }) }, onToggleOpenImageActions: function() { this.setState({ drawerOpen: !this.state.drawerOpen }) }, render: function() { var e = this.state.showImages && !this.state.loadFromCacheOnly, t = !this.state.showImages && !this.state.loadFromCacheOnly, r = this.state.showImages && this.state.loadFromCacheOnly, s = o({ "button-toolbar-small": !0, "image-action": !0, disabled: this.props.disabled, noimages: t && !this.props.disabled, cachedimages: r && !this.props.disabled }); return a.createElement("span", { title: l("Toggle images"), className: "imageactions", ref: "imageactions", __source: { fileName: i, lineNumber: 101 } }, a.createElement("button", { className: s, tabIndex: this.props.keyAccess, onClick: this.onToggleOpenImageActions, disabled: this.props.disabled, dangerouslySetInnerHTML: { __html: n(962) }, __source: { fileName: i, lineNumber: 105 } }), this.state.drawerOpen && a.createElement("div", { className: "callout", __source: { fileName: i, lineNumber: 114 } }, a.createElement("header", { __source: { fileName: i, lineNumber: 115 } }, a.createElement("h2", { __source: { fileName: i, lineNumber: 116 } }, l("Load Images"))), a.createElement("form", { __source: { fileName: i, lineNumber: 118 } }, a.createElement("ul", { __source: { fileName: i, lineNumber: 119 } }, a.createElement("li", { __source: { fileName: i, lineNumber: 120 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 120 } }, a.createElement("input", { type: "radio", name: "toggle-images-group", checked: e, autoFocus: e, onChange: this.onShowAll, __source: { fileName: i, lineNumber: 121 } }), l("Always"))), a.createElement("li", { __source: { fileName: i, lineNumber: 128 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 128 } }, a.createElement("input", { type: "radio", name: "toggle-images-group", checked: r, autoFocus: r, onChange: this.onShowCached, __source: { fileName: i, lineNumber: 129 } }), l("From Cache"))), a.createElement("li", { __source: { fileName: i, lineNumber: 136 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 136 } }, a.createElement("input", { type: "radio", name: "toggle-images-group", checked: t, autoFocus: t, onChange: this.onHideAll, __source: { fileName: i, lineNumber: 137 } }), l("Never"))))))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_718 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/statusbar/ToggleTiling.jsx", r = n(1), s = n(9), o = n(17), l = n(15), c = n(39), u = n(27), A = n(114), d = n(2), h = n(5), m = r.createClass({ displayName: "ToggleTiling", mixins: [s, c], propTypes: { page: r.PropTypes.instanceOf(A).isRequired, groupPages: r.PropTypes.instanceOf(u.List).isRequired, tilePages: r.PropTypes.instanceOf(u.List).isRequired, isSelecting: r.PropTypes.bool.isRequired, pageSelection: r.PropTypes.instanceOf(u.Set).isRequired }, getInitialState: function() { return { drawerOpen: !1 } }, componentWillReceiveProps: function(e) { this.props.page.get("id") !== e.page.get("id") && this.closeDrawer() }, componentDidUpdate: function(e, t) { t.drawerOpen === !0 && this.state.drawerOpen === !1 ? this.disableOnClickOutside() : t.drawerOpen === !1 && this.state.drawerOpen === !0 && this.enableOnClickOutside() }, closeDrawer: function() { this.setState({ drawerOpen: !1 }) }, toggleDrawer: function() { this.setState({ drawerOpen: !this.state.drawerOpen }) }, setTiling: function(e) { var t = this, n = this.props.page.getIn(["extData", "group"]); if (this.props.pageSelection.count() > 1) { var i = this.props.pageSelection.map(function(e) { return o.getPages().find(function(t) { return t.get("id") === e }) }).filter(Boolean).toList(); l.tilePages(i, e), l.clearSelection() } else if (this.props.page.getIn(["extData", "tiling", "id"])) { var a = o.getPages().filter(function(e) { return e.getIn(["extData", "tiling", "id"]) === t.props.page.getIn(["extData", "tiling", "id"]) }); l.tilePages(a, e) } else o.isGroup(n) && l.tileTabStack(n, e); this.closeDrawer() }, untile: function() { l.untilePages(this.props.page.getIn(["extData", "tiling", "id"])), this.closeDrawer() }, handleClickOutside: function() { this.closeDrawer() }, render: function() { var e = this.props.page.getIn(["extData", "tiling", "layout"]), t = "tile-" + (e || "none"), s = h(i({ "button-toolbar-small": !0, "tile-action": !0 }, t, !0)), o = this.props.groupPages.count() > 1 || this.props.tilePages.count() > 1 || this.props.isSelecting; return r.createElement("span", { className: "tilingtoggle", ref: "tilingtoggle", title: o ? null : d("Page tiling") + "\n" + d("Select multiple tabs or create tab stack to tile pages"), __source: { fileName: a, lineNumber: 105 } }, r.createElement("button", { ref: "tilingtogglebutton", className: s, tabIndex: this.props.keyAccess, onMouseDown: this.toggleDrawer, disabled: !o, title: d("Page tiling"), dangerouslySetInnerHTML: { __html: n(160) }, __source: { fileName: a, lineNumber: 111 } }), this.state.drawerOpen && r.createElement("div", { className: "callout", __source: { fileName: a, lineNumber: 122 } }, r.createElement("button", { className: "tile-vertically", disabled: "vertically" === e, title: d("Tile vertically"), onMouseUp: this.setTiling.bind(this, "vertically"), dangerouslySetInnerHTML: { __html: n(160) }, __source: { fileName: a, lineNumber: 123 } }), r.createElement("button", { className: "tile-horizontally", disabled: "horizontally" === e, title: d("Tile horizontally"), onMouseUp: this.setTiling.bind(this, "horizontally"), dangerouslySetInnerHTML: { __html: n(160) }, __source: { fileName: a, lineNumber: 131 } }), r.createElement("button", { className: "tile-grid", disabled: "grid" === e, title: d("Tile to grid"), onMouseUp: this.setTiling.bind(this, "grid"), dangerouslySetInnerHTML: { __html: n(160) }, __source: { fileName: a, lineNumber: 139 } }), r.createElement("button", { className: "tile-none", disabled: !this.props.page.getIn(["extData", "tiling", "id"]), title: d("Untile pages"), onMouseUp: this.untile, dangerouslySetInnerHTML: { __html: n(160) }, __source: { fileName: a, lineNumber: 147 } }))) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_719 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } var o = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), l = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/Tab.jsx", c = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), u = n(1), A = i(u), d = n(375), h = i(d), m = n(54), p = i(m), f = n(51), g = i(f), _ = n(114), v = (i(_), n(15)), b = i(v), N = n(17), E = i(N), S = n(721), T = i(S), y = n(170), C = i(y), I = n(132), O = i(I), w = n(174), D = i(w), k = n(55), M = i(k), L = n(4), P = i(L), R = n(5), x = i(R), B = n(26), U = i(B), F = n(89), H = i(F), V = n(401), W = i(V), G = n(3), K = i(G), j = n(88), z = i(j), Y = n(21), J = i(Y), Q = n(377), Z = i(Q), q = n(27), X = n(400), $ = n(46), ee = n(115), te = n(376), ne = n(73), ie = n(7), ae = n(20), re = n(2), se = i(re), oe = n(30), le = i(oe), ce = n(395), ue = i(ce), Ae = 250, de = (0, X.createIdleListener)(), he = function(e, t, n) { P.default.tabs.query({}, function(i) { var a = (0, q.Set)(i.map(ne.tabToPage).map(function(e) { return e.getIn(["extData", "group"]) }).filter(Boolean)), r = (0, ie.pickBy)(e, function(e, t) { return a.includes(t) }); n ? r[t] = n : delete r[t], K.default.set({ TAB_STACKING_NAME_MAP: r }) }) }, me = function(e) { function t(e) { a(this, t); var n = r(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e)); return n.state = { dragOver: "none", awaitingEdit: null }, n.indicators = {}, n.bookmarkAllOpenPages = n.bookmarkAllOpenPages.bind(n), n.bookmarkTab = n.bookmarkTab.bind(n), n.cloneTab = n.cloneTab.bind(n), n.closeAllButTab = n.closeAllButTab.bind(n), n.closeTabStack = n.closeTabStack.bind(n), n.closeToLeft = n.closeToLeft.bind(n), n.closeToRight = n.closeToRight.bind(n), n.createGroup = n.createGroup.bind(n), n.createGroupByHost = n.createGroupByHost.bind(n), n.discardPages = n.discardPages.bind(n), n.disolveTabStack = n.disolveTabStack.bind(n), n.handleClose = n.handleClose.bind(n), n.onDropHandler = n.onDropHandler.bind(n), n.hideToolTip = n.hideToolTip.bind(n), n.isPinned = n.isPinned.bind(n), n.isTabStack = n.isTabStack.bind(n), n.keyDown = n.keyDown.bind(n), n.muteTab = n.muteTab.bind(n), n.newTab = n.newTab.bind(n), n.onClick = n.onClick.bind(n), n.onContextMenu = n.onContextMenu.bind(n), n.onTabIndicatorPress = n.onTabIndicatorPress.bind(n), n.onTabIndicatorClick = n.onTabIndicatorClick.bind(n), n.indicatorOnDragStart = n.indicatorOnDragStart.bind(n), n.indicatorOnDragEnd = n.indicatorOnDragEnd.bind(n), n.onDragEnterHandler = n.onDragEnterHandler.bind(n), n.onDragOverHandler = n.onDragOverHandler.bind(n), n.pinTab = n.pinTab.bind(n), n.reloadTab = n.reloadTab.bind(n), n.renameTabStack = n.renameTabStack.bind(n), n.removeFromTabStack = n.removeFromTabStack.bind(n), n.reopenClosedTab = n.reopenClosedTab.bind(n), n.stopPropagateHandler = n.stopPropagateHandler.bind(n), n.tileSelection = n.tileSelection.bind(n), n.tileTabStack = n.tileTabStack.bind(n), n.untilePages = n.untilePages.bind(n), n.mouseEnterHandler = n.mouseEnterHandler.bind(n), n.getDropSide = n.getDropSide.bind(n), n.renderCustomTabStackTitle = n.renderCustomTabStackTitle.bind(n), n } return s(t, e), c(t, [{ key: "shouldComponentUpdate", value: function(e, t) { return (0, J.default)(this, e, t) } }, { key: "componentWillReceiveProps", value: function(e) { this.props.page.active === !0 && e.page.active === !1 && null !== this.state.awaitingEdit && this.setState({ awaitingEdit: null }) } }, { key: "discardPages", value: function(e) { e.forEach(b.default.discardPage) } }, { key: "cloneTab", value: function(e) { b.default.clonePage(e) } }, { key: "reloadTab", value: function(e) { b.default.clearSelection(), b.default.reloadPage(e) } }, { key: "renameTabStack", value: function(e) { var t = e.getIn(["extData", "group"]); t && this.setState({ awaitingEdit: t }) } }, { key: "pinTab", value: function(e, t, n) { b.default.clearSelection(), b.default.togglePinned(e, t, n) } }, { key: "bookmarkAllOpenPages", value: function() { b.default.clearSelection(), p.default.bookmarkAllOpenPages(g.default.getRootNode().id) } }, { key: "bookmarkTab", value: function(e, t) { b.default.clearSelection(), p.default.bookmarkPages(e, t, g.default.getRootNode().id) } }, { key: "handleClose", value: function(e, t) { 0 === t.button && (t.altKey ? this.closeAllButTab(e) : this.props.closePage(e, t)) } }, { key: "closeToLeft", value: function(e, t) { var n = !t; b.default.closeToLeft(e, n) } }, { key: "closeToRight", value: function(e, t) { var n = !t; b.default.closeToRight(e, n) } }, { key: "closeTabStack", value: function(e) { e && e.stopPropagation(), b.default.closeTabStack(this.props.page, !0) } }, { key: "muteTab", value: function(e) { b.default.mutePage(e) } }, { key: "closeAllButTab", value: function(e, t) { var n = !t; b.default.closeOther(e, n) } }, { key: "newTab", value: function() { b.default.openURL() } }, { key: "createTab", value: function(e) { b.default.openURL(e) } }, { key: "onClick", value: function(e) { 1 === e.button && e.stopPropagation() } }, { key: "stopPropagateHandler", value: function(e) { e.stopPropagation(), e.preventDefault() } }, { key: "selectTab", value: function(e, t) { this.props.selectTab(e, t) } }, { key: "reopenClosedTab", value: function() { this.props.reopenClosedTab() } }, { key: "disolveTabStack", value: function() { b.default.clearSelection(), b.default.expandTabStack(this.props.page.getIn(["extData", "group"])) } }, { key: "removeFromTabStack", value: function() { b.default.removeFromTabStack(this.props.page) } }, { key: "isTabstackingEnabled", value: function() { return "on" === this.props.settings.TAB_STACKING } }, { key: "isTabStack", value: function(e) { return this.isTabstackingEnabled() && (0, ee.isPageGrouped)(e) } }, { key: "isPinned", value: function(e) { return e.get("pinned") } }, { key: "tileTabStack", value: function() { var e = this.props.page.getIn(["extData", "group"]); b.default.tileTabStack(e), b.default.clearSelection() } }, { key: "isPageTiledWithType", value: function(e) { return (0, ee.isPageTiled)(this.props.page) && this.props.page.getIn(["extData", "tiling", "type"]) === e } }, { key: "tileSelection", value: function(e) { var t = e.count() < 4 ? "vertically" : "grid"; b.default.tilePages(e.toList(), t), b.default.clearSelection() } }, { key: "untilePages", value: function() { var e = this.props.page.getIn(["extData", "tiling", "id"]); b.default.untilePages(e) } }, { key: "mouseEnterHandler", value: function() { this.props.clearForceHover() } }, { key: "indicatorOnDragStart", value: function(e) { this.props.setIsHiddenForDrag((0, q.Set)(e.map(function(e) { return e.id }))) } }, { key: "indicatorOnDragEnd", value: function() { this.props.setIsHiddenForDrag((0, q.Set)()) } }, { key: "onTabIndicatorPress", value: function(e, t, n) { n.preventDefault(), n.stopPropagation(), this.onTabIndicatorDragOut(e, t, n) } }, { key: "onTabIndicatorClick", value: function(e, t) { t.preventDefault(), t.stopPropagation(); var n = this.props.settings; 0 === t.button ? (0, te.isSingleSelectEvent)(t, n, document.hasFocus()) ? b.default.setSelection(e, !1, !1) : (0, te.isMultiSelectEvent)(t, n, document.hasFocus()) ? b.default.setSelection(e, !0, !1) : (0, z.default)(t) || this.props.selectTab(e, t) : 1 === t.button && navigator.platform.indexOf("Linux") !== -1 && M.default.doAction("focusWebView") } }, { key: "onTabIndicatorDragOut", value: function(e, t, n) { var i = this.props, a = i.isSelecting, r = i.pageSelection, s = a && r.has(e.id), o = s ? this.props.pageSelection.reduce(function(e, t) { var n = E.default.getPages().find(function(e) { return e.id === t }); return n ? e.push(n) : e }, (0, q.List)()).sortBy(function(e) { return e.index }).toArray() : [e]; (0, Z.default)(o, n, { offsetLeft: 2, offsetTop: 3, offsetHeight: -6, offsetWidth: -2, onDragStart: this.indicatorOnDragStart, onDragEnd: this.indicatorOnDragEnd, element: this.indicators[t] }) } }, { key: "renderTabGroupIndicator", value: function() { var e = this; return A.default.createElement("div", { className: "tab-group-indicator", __source: { fileName: l, lineNumber: 379 } }, this.props.stack.map(function(t) { var n = (0, x.default)({ "tab-indicator": !0, active: e.props.highlightId === t.id, marked: e.props.isSelecting && e.props.pageSelection.contains(t.id), unread: e.props.settings.TAB_UNREAD_ENABLED && e.props.page.getIn(["extData", "read"]) !== !0 && t.id !== e.props.highlightId }), i = e.props.isHiddenForDrag.has(t.id), a = { visibility: i ? "hidden" : "visible" }, r = "stack-" + t.id; return A.default.createElement("div", { key: r, ref: function(t) { return e.indicators[r] = t }, className: n, style: a, title: ae.urls.getDisplayTitle(t), onContextMenu: e.onContextMenu.bind(e, t, !0), onClick: e.onTabIndicatorClick.bind(e, t), onMouseDown: e.onTabIndicatorPress.bind(e, t, r), __source: { fileName: l, lineNumber: 400 } }) })) } }, { key: "hideToolTip", value: function() { O.default.clearTooltip() } }, { key: "keyDown", value: function(e) { var t = e.keyCode; 13 === t && this.props.selectTab(this.props.page, e) } }, { key: "createGroup", value: function(e, t, n) { t ? b.default.createTabStack(e, t.index, t.getIn(["extData", "group"])) : b.default.createTabStack(e) } }, { key: "createGroupByHost", value: function(e, t) { var n = this.props.settings.TAB_STACKING_NAME_MAP || {}, i = (0, H.default)(); he(n, i, t), b.default.createTabStack(e, null, i) } }, { key: "onContextMenu", value: function(e, t, n) { var i = this; return n.persist(), n.preventDefault(), n.stopPropagation(), P.default.windows.getAll({ populate: !0, windowTypes: ["normal"] }, function(a) { var r = a.filter(function(e) { return !e.extData || "popup" !== JSON.parse(e.extData).windowType }).filter(function(e) { return !e.incognito }).filter(function(e) { return e.id !== window.vivaldiWindowId }); (0, U.default)(i.getContextMenuItems(e, r, n, t), i.hideToolTip)(n) }), !1 } }, { key: "isHorizontal", value: function() { var e = this.props.settings.TAB_POSITION; return "top" === e || "bottom" === e } }, { key: "getContextMenuItems", value: function(e, t, n, i) { var a = this, r = !(e.pinned && "on" !== this.props.settings.CLOSABLE_PINNED_TABS), s = this.props.isSelecting && this.props.pageSelection.has(e.id) && this.props.pageSelection.count() > 1, l = this.props.pageSelection.reduce(function(e, t) { var n = E.default.getPages().find(function(e) { return e.id === t }); return n ? e.push(n) : e }, (0, q.List)()).sortBy(function(e) { return e.index }), c = l.filter(function(e) { return !(0, $.isInternalURL)(e.url) }), u = E.default.getPages().filter(function(e) { return !l.find(function(t) { return t.id === e.id }) }), A = void 0; A = s ? l : !i && this.isTabStack(e) ? E.default.getGroup(e.getIn(["extData", "group"])) : q.List.of(e); var d = [Object.assign({ handler: function() { A.count() === E.default.getPages().count() && document.querySelectorAll("webview").forEach(function(e) { return e.parentElement.removeChild(e) }), b.default.detachPage(A, n.screenX, n.screenY) } }, (0, le.default)("move to", "New Window"))], h = !i || s; t.length > 0 && (d = d.concat({ name: "---" }, t.map(function(t, n) { var i = t.tabs.find(function(e) { return e.active }), a = i ? i.title : n + 1; return Object.assign({ handler: function() { var n = s ? l : q.List.of(e); n.count() === E.default.getPages().count() && document.querySelectorAll("webview").forEach(function(e) { return e.parentElement.removeChild(e) }), b.default.moveToWindow(n, t.id, h) } }, (0, le.default)("Window with $1 Active Tab ($2)", "Window with $1 Active Tabs ($2)", [t.tabs.length, a])) }))); var m = !e.active && !e.discarded && e.url !== E.default.getDefaultStartpage(), p = this.isTabStack(e) && E.default.getGroup(e.getIn(["extData", "group"])).some(function(e) { return !e.active && !e.discarded && e.url !== E.default.getDefaultStartpage() }), f = 0 !== E.default.getDiscardablePages().count(), g = E.default.getPages().count(), _ = e.getIn(["extData", "group"]), v = E.default.isGroup(_), N = void 0; N = i || !v ? g >= 2 : g - E.default.getGroup(_).count() >= 1; var S = (0, W.default)(e, E.default.getTabs(!this.isTabstackingEnabled())), T = o(S, 2), y = T[0], C = T[1], I = e.mediastate; return [Object.assign({ handler: this.newTab }, (0, le.default)("command", "New Tab")), { name: "---" }, Object.assign({ handler: this.reloadTab.bind(this, e), visible: !s }, (0, le.default)("Reload Tab")), Object.assign({ handler: this.reloadTab.bind(this, l), visible: s }, (0, le.default)("Reload $1 Tab", "Reload $1 Tabs", [l.count()])), Object.assign({ handler: this.cloneTab.bind(this, e), visible: !s }, (0, le.default)("Clone Tab")), Object.assign({ handler: this.cloneTab.bind(this, l), visible: s }, (0, le.default)("Clone $1 Tab", "Clone $1 Tabs", [l.count()])), Object.assign({ handler: this.pinTab.bind(this, e, !0), visible: !s && !this.isTabStack(e) && !e.pinned }, (0, le.default)("Pin Tab")), Object.assign({ handler: this.pinTab.bind(this, l, !0), visible: s && !l.some(this.isTabStack) && l.some(function(e) { return !a.isPinned(e) }) }, (0, le.default)("Pin $1 Tab", "Pin $1 Tabs", [l.filter(function(e) { return !a.isPinned(e) }).count()])), Object.assign({ handler: this.pinTab.bind(this, e, !1), visible: !s && !this.isTabStack(e) && e.pinned }, (0, le.default)("Unpin Tab")), Object.assign({ handler: this.pinTab.bind(this, l, !1), visible: s && !l.some(this.isTabStack) && l.some(this.isPinned) }, (0, le.default)("Unpin $1 Tab", "Unpin $1 Tabs", [l.filter(this.isPinned).count()])), Object.assign({ items: d, visible: !s && e.incognito !== !0 && (i || !this.isTabStack(e)) }, (0, le.default)("Move Tab to")), Object.assign({ items: d, visible: s && !l.some(function(t) { return e.incognito }) }, (0, le.default)("Move $1 Tab to", "Move $1 Tabs to", [l.count()])), { name: "---" }, Object.assign({ handler: this.muteTab.bind(this, e), type: "checkbox", checked: "muting" === I, visible: !s && ("playing" === I || "muting" === I) }, (0, le.default)("Mute Tab")), Object.assign({ handler: this.muteTab.bind(this, l), type: "checkbox", checked: l.every(function(e) { return "muting" === e.mediastate }), visible: s && l.some(function(e) { return "playing" === e.mediastate || "muting" === e.mediastate }) }, (0, le.default)("Mute $1 Tab", "Mute $1 Tabs", [l.filter(function(t) { return "playing" === t.mediastate || "muting" === e.mediastate }).count()])), { name: "---" }, Object.assign({ handler: this.bookmarkTab.bind(this, e, !1), visible: !s }, (0, le.default)("Bookmark Tab")), Object.assign({ handler: this.bookmarkTab.bind(this, this.props.stack, !0), visible: this.isTabStack(e) }, (0, le.default)("Bookmark Tab Stack")), Object.assign({ handler: this.bookmarkTab.bind(this, l, !1), visible: s && Boolean(c.count()) }, (0, le.default)("Bookmark $1 Tab", "Bookmark $1 Tabs", [c.count()])), Object.assign({ handler: this.bookmarkAllOpenPages }, (0, le.default)("Bookmark All Open Pages")), { name: "---" }, Object.assign({ handler: this.createGroup.bind(this, l, e), visible: s && this.isTabstackingEnabled() && this.props.isSelecting && l.count() > 1 }, (0, le.default)("New Tab Stack with Selection ($1 Tab)", "New Tab Stack with Selection ($1 Tabs)", [l.count()])), Object.assign({ handler: this.createGroupByHost.bind(this, C, y), visible: !s && this.isTabstackingEnabled() && !this.isTabStack(e) && C.count() > 1 }, (0, le.default)("Stack Tabs by Host ($1 of $2)", [C.count(), y])), Object.assign({ handler: this.renameTabStack.bind(this, e), visible: this.isTabStack(e) && this.props.settings.TAB_STACKING_ALLOW_RENAME }, (0, le.default)("Rename Tab Stack")), Object.assign({ items: d, visible: !s && e.incognito !== !0 && !i && this.isTabStack(e) }, (0, le.default)("Move Tab Stack to")), Object.assign({ handler: this.removeFromTabStack, visible: this.isTabStack(e) }, (0, le.default)("Remove from Tab Stack")), Object.assign({ handler: this.disolveTabStack, visible: this.isTabStack(e) }, (0, le.default)("Ungroup Tab Stack")), { name: "---" }, Object.assign({ handler: this.tileTabStack, visible: this.isTabStack(e) && !this.isPageTiledWithType("group") && !this.isPageTiledWithType("selection") }, (0, le.default)("Tile Tab Stack")), Object.assign({ handler: this.untilePages, visible: this.isTabStack(e) && (this.isPageTiledWithType("group") || this.isPageTiledWithType("selection")) }, (0, le.default)("Untile Tab Stack")), Object.assign({ handler: this.tileSelection.bind(this, l), visible: s && !this.isPageTiledWithType("selection") && this.props.isSelecting && l.count() > 1 }, (0, le.default)("Tile $1 Tab", "Tile $1 Tabs", [l.count()])), Object.assign({ handler: this.untilePages, visible: this.isPageTiledWithType("selection") && !this.isTabStack(e) }, (0, le.default)("Untile selection")), { name: "---" }, Object.assign({ handler: this.discardPages.bind(this, q.List.of(e)), visible: !s && m && !this.isTabStack(e) }, (0, le.default)("Hibernate Tab")), Object.assign({ handler: this.discardPages.bind(this, l.filter(function(e) { return !e.active })), visible: Boolean(s && l.filter(function(e) { return E.default.getDiscardablePages().find(function(t) { return t.id === e.id }) }).count()) }, (0, le.default)("Hibernate $1 Background Tab", "Hibernate $1 Background Tabs", [l.filter(function(e) { return !e.active }).count()])), Object.assign({ handler: this.discardPages.bind(this, E.default.getGroup(e.getIn(["extData", "group"]))), visible: p }, (0, le.default)("Hibernate Tab Stack")), Object.assign({ handler: this.discardPages.bind(this, E.default.getDiscardablePages()), visible: f }, (0, le.default)("Hibernate Background Tabs")), { name: "---" }, Object.assign({ handler: b.default.closePage.bind(null, e), visible: !s && E.default.canClose() && r }, (0, le.default)("Close Tab")), Object.assign({ handler: b.default.closePage.bind(null, l), visible: s }, (0, le.default)("Close $1 Tab", "Close $1 Tabs", [l.count()])), Object.assign({ handler: this.closeTabStack, visible: this.isTabStack(e) }, (0, le.default)("Close Tab Stack")), Object.assign({ handler: this.closeAllButTab.bind(this, e, i), visible: !s && N }, (0, le.default)("Close Other Tabs")), Object.assign({ handler: this.closeAllButTab.bind(this, l, i), visible: s && u.count() > 0 }, (0, le.default)("Close Other ($1 Unselected Tab)", "Close Other ($1 Unselected Tabs)", [u.count()])), Object.assign({ handler: this.closeToLeft.bind(this, e, i), visible: !s && N && E.default.getPages().takeUntil(function(t) { return t.id === e.id }).count() }, this.isHorizontal() ? (0, le.default)("Close Tabs to the Left") : (0, le.default)("Close the Tabs Above")), Object.assign({ handler: this.closeToRight.bind(this, e, i), visible: !s && N && E.default.getPages().skipUntil(function(t) { return t.id === e.id }).skip(1).count() }, this.isHorizontal() ? (0, le.default)("Close Tabs to the Right") : (0, le.default)("Close the Tabs Below")), { name: "---" }, Object.assign({ handler: this.reopenClosedTab, visible: Boolean(D.default.getTrash().length) }, (0, le.default)("Reopen Closed Tab"))] } }, { key: "isKnownDropMimeType", value: function(e) { return e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e || "text/uri-list" === e || "text/plain" === e }) } }, { key: "onDragEnterHandler", value: function(e) { this.isKnownDropMimeType(e) && (e.preventDefault(), e.stopPropagation()) } }, { key: "onDragOverHandler", value: function(e) { var t = this; this.isKnownDropMimeType(e) && (e.preventDefault(), e.stopPropagation()), e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e }) && this.props.isExpectingDrop ? this.props.handleTabPosition(this.props.page.id, this.getDropSide(e)) : (e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e }) && (e.dataTransfer.dropEffect = "copy"), de(e.screenX, e.screenY, Ae, function() { return t.props.selectTab(t.props.page, e) })) } }, { key: "getDropSide", value: function(e) { var t = this.props, n = t.settings, i = t.page, a = "on" === n.TAB_STACKING && !i.pinned, r = this.refs.tab.getBoundingClientRect(), s = e.pageX - r.left, o = e.pageY - r.top, l = void 0; return "row" === this.props.direction ? l = a ? s < .15 * r.width ? "before" : s > .85 * r.width ? "after" : "over" : s < r.width / 2 ? "before" : "after" : "column" === this.props.direction && (l = a ? 7 < .15 * r.width ? "before" : o > .85 * r.width ? "after" : "over" : o < r.height / 2 ? "before" : "after"), l } }, { key: "onDropHandler", value: function(e) { var t = this; this.isKnownDropMimeType(e) && (e.preventDefault(), e.stopPropagation()); var n = e.dataTransfer.getData("vivaldi/x-tab-entries"), i = e.dataTransfer.getData("text/uri-list"), a = e.dataTransfer.getData("text/plain"); n ? this.props.droppedTabHandler(n) : i ? i.split("\n").forEach(function(e, n) { return b.default.openURL(e, { incognito: t.props.page.incognito, inCurrent: 0 === n, inSpecific: 0 === n ? t.props.page : void 0, inBackground: 0 !== n }) }) : a && (0, $.isValidURL)(a) && b.default.openURL(a, { inCurrent: !0, inSpecific: this.props.page, incognito: this.props.page.incognito }) } }, { key: "renderCustomTabStackTitle", value: function(e) { var t = this, n = this.props.settings.TAB_STACKING_NAME_MAP || {}, i = this.props.page.getIn(["extData", "group"]), a = n[i] || e, r = function(e) { "Enter" === e.nativeEvent.code ? (e.preventDefault(), e.stopPropagation(), he(n, i, e.target.value), t.setState({ awaitingEdit: null })) : "Escape" === e.nativeEvent.code && (e.preventDefault(), e.stopPropagation(), t.setState({ awaitingEdit: null })) }, s = function(e) { he(n, i, e.target.value) }, o = function(e) { e && document.activeElement !== e && (e.setSelectionRange(0, e.value.length), e.focus()) }, c = function(e) {}, u = function(e) { t.setState({ awaitingEdit: null }) }, d = this.state.awaitingEdit, h = i && i === d; return h ? A.default.createElement("input", { className: "tab-title-edit", defaultValue: a, ref: o, onFocus: c, onBlur: u, onChange: s, onKeyDown: r, __source: { fileName: l, lineNumber: 963 } }) : a } }, { key: "render", value: function() { var e = this, t = this.props.page, i = t.active, a = Boolean(this.props.smallTab), r = t.mediastate; r && "none" !== r && !t.discarded || (r = "idle"); var s = this.isTabStack(t), o = !s && this.props.isHiddenForDrag.has(t.id), c = s && this.props.stack.every(function(t) { return e.props.isHiddenForDrag.has(t.id) }), u = o || c, d = (0, x.default)(this.props.className, { tab: !0, marked: !u && this.props.isSelecting && this.props.pageSelection.contains(t.id), pinned: t.pinned, active: i, loading: t.getIn(["navigationState", "isLoading"]), "tab-small": a && !t.pinned, "force-hover": this.props.forceHover, "tab-group": E.default.isGroup(t.getIn(["extData", "group"])), "audio-on": "playing" === r, "audio-muted": "muting" === r, "button-off": !this.props.settings.TAB_CLOSEBUTTON_ENABLED, unread: this.props.settings.TAB_UNREAD_ENABLED && t.getIn(["extData", "read"]) !== !0 && !i && !E.default.isGroup(t.getIn(["extData", "group"])) && !(0, $.isInternalURL)(t.url), isdiscarded: t.discarded }), m = this.props.settings.TAB_CLOSEBUTTON_ENABLED && E.default.canClose(), p = t.incognito ? t.favIcon : t.favIconUrl, f = ae.urls.getDisplayTitle(t), g = (0, ue.default)(f, t.get("url"), 9), _ = s ? (0, se.default)("Tab stack with $1 tab", "Tab stack with $1 tabs", [this.props.stack.size]) : f, v = this.isTabStack(t) && this.props.settings.TAB_STACKING_ALLOW_RENAME, b = document.getElementById("browser").classList, N = this.props.settings.BROWSER_COLOR_FG; return a ? N = "#000000" : (t.active && b.contains("acc-light") && b.contains("theme-dark") || !t.active && b.contains("acc-dark") && b.contains("theme-light") && b.contains("color-behind-tabs-on") || t.active && b.contains("acc-dark") && b.contains("theme-light") && b.contains("color-behind-tabs-off")) && (N = this.props.settings.BROWSER_COLOR_BG), A.default.createElement("div", { id: this.props.id, className: d, ref: "tab", key: t.id, title: this.props.settings.USE_TOOLTIP ? null : _, onClick: this.onClick, onContextMenu: this.onContextMenu.bind(this, t, !1), onMouseEnter: this.mouseEnterHandler, onDragEnter: this.onDragEnterHandler, onDragOver: this.onDragOverHandler, onDragLeave: this.props.onDragLeave, onDrop: this.onDropHandler, onKeyDown: this.keyDown, tabIndex: this.props.settings.KEY_ACCESS, __source: { fileName: l, lineNumber: 1052 } }, A.default.createElement("div", { className: "tab-header", __source: { fileName: l, lineNumber: 1067 } }, A.default.createElement(T.default, { page: t, __source: { fileName: l, lineNumber: 1068 } }), A.default.createElement("span", { className: "favicon", style: { backgroundImage: "url(" + p + ")" }, dangerouslySetInnerHTML: "" === p ? { __html: n(313) } : null, __source: { fileName: l, lineNumber: 1069 } }), A.default.createElement("span", { className: "title", __source: { fileName: l, lineNumber: 1080 } }, v ? this.renderCustomTabStackTitle(f) : f), m && A.default.createElement("span", { className: "close", onClick: this.handleClose.bind(this, t), onMouseDown: this.stopPropagateHandler, dangerouslySetInnerHTML: { __html: n(81) }, title: (0, se.default)("Close Tab") + "\n" + (0, se.default)("$1 click to close other tabs except this one", ["MacIntel" === navigator.platform ? (0, se.default)("key", "Option") : (0, se.default)("key", "Alt")]), __source: { fileName: l, lineNumber: 1089 } }), "idle" !== r && A.default.createElement("span", { className: "tab-audio", onClick: this.muteTab.bind(this, t), onMouseDown: this.stopPropagateHandler, __source: { fileName: l, lineNumber: 1100 } }, A.default.createElement(h.default, { color: N, animated: this.props.settings.USE_ANIMATION, mode: r, __source: { fileName: l, lineNumber: 1103 } })), this.props.settings.TAB_COUNTER_DETECTION && g && A.default.createElement("span", { className: "button-badge", __source: { fileName: l, lineNumber: 1110 } }, g)), this.props.settings.TAB_THUMBNAILS_ENABLED && A.default.createElement(C.default, { src: t.getIn(["extData", "thumbnail"]), __source: { fileName: l, lineNumber: 1116 } }), this.props.stack && this.renderTabGroupIndicator()) } }]), t }(A.default.Component); me.displayName = "Tab", e.exports = me }, function(e, t, n) { // ========================= // Function_720 // ========================= (function(t) { "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/TabBar.jsx", r = n(1), s = n(11), o = n(27), l = o.is, c = o.List, u = o.Set, A = n(115), d = A.isPageTiled, h = A.isPageVisible, m = n(520), p = m.VelocityComponent, f = n(54), g = n(51), _ = n(722), v = n(723), b = n(26), N = n(132), E = n(134), S = n(3), T = n(25), y = n(115), C = y.isPageGrouped, I = n(15), O = n(17), w = n(168), D = n(174), k = n(392), M = n(170), L = n(55), P = n(20), R = P.urls, x = n(5), B = n(178), U = n(375), F = n(251), H = n(46), V = H.isValidURL, W = n(30), G = n(377), K = 30, j = 150, z = 181, Y = 32, J = 260, Q = 32, Z = 20, q = ["active", "discarded", "extData", "favIcon", "faviconUrl", "id", "incognito", "pinned", "processexitstate", "target", "title", "url"], X = ["thumbnail", "group", "tiling", "read"], $ = ["ADDRESS_BAR_POSITION", "BROWSER_COLOR_FG", "BROWSER_COLOR_BG", "CLOSABLE_PINNED_TABS", "KEY_ACCESS", "KEY_NEXT_TAB", "KEY_PREVIOUS_TAB", "PANEL_POSITION", "SWITCH_TABS_AT_WINDOW_EDGE", "TABBAR_WIDTH", "TABS_HEIGHT", "TAB_CLICK_ACTIVE_OPENS_PREVIOUS", "TAB_CLOSEBUTTON_ENABLED", "TAB_COUNTER_DETECTION", "TAB_CYCLING_ORDER", "TAB_POSITION", "TAB_SELECTION_ENABLED", "TAB_STACKING", "TAB_STACKING_ALLOW_RENAME", "TAB_STACKING_NAME_MAP", "TAB_SWITCH_VISUAL", "TAB_THUMBNAILS_ENABLED", "TAB_UNREAD_ENABLED", "USE_ANIMATION", "USE_TAB_CLOSE_ON_DOUBLECLICK", "USE_TAB_TRANSPARENT_TABS", "USE_TOOLTIP", "TAB_NEVER_CLOSE_LAST", "TAB_CLOSE_ALIGN_NEXT"], ee = function() { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; return { tabs: O.getTabs(e), pages: O.getPages(), activePage: O.getActivePage(), isSelecting: O.isSelecting(), pageSelection: O.getSelection(), pageHistory: O.getPageHistory() } }, te = r.createClass({ displayName: "TabBar", getInitialState: function() { var e = "off" === this.props.settings.TAB_STACKING; return Object.assign({ tabsHeight: K, tabsWidth: Y, tabStripWidth: 0, tabStripHeight: 0, isResizing: !1, tooltipHeight: 400, tooltipWidth: 600, tabStripOverflow: !1 }, ee(e)) }, componentWillUpdate: function(e, t) { "top" !== e.settings.TAB_POSITION && "bottom" !== e.settings.TAB_POSITION || e.settings.TAB_THUMBNAILS_ENABLED !== !0 || this.props.settings.TAB_THUMBNAILS_ENABLED !== !1 || S.set({ TABS_HEIGHT: j }) }, componentWillReceiveProps: function(e) { if (this.props.settings.TAB_STACKING !== e.settings.TAB_STACKING) { var t = "off" === e.settings.TAB_STACKING; this.setState(ee(t)) } }, shouldComponentUpdate: function(e, t) { var n = function(e, t, n) { var i = t[e], a = n[e]; return !!(i === a || l(i, a) || "activePage" === e && q.every(function(e) { return "extData" === e ? X.every(function(e) { return l(i.getIn(["extData", e]), a.getIn(["extData", e])) }) : l(i.get(e), a.get(e)) })) }; return !F(e, this.props, n) || !F(t, this.state, n) }, componentWillMount: function() {}, componentDidMount: function() { O.addChangeListener(this._onPageStoreChange), k.addChangeListener(this.onTabStoreChange), this.updateDocumentTitle(this.state.activePage), this._isMounted = !0 }, updateDocumentTitle: function(e) { var t = R.getDisplayTitle(e); t !== document.title && (document.title = t) }, componentWillUnmount: function() { O.removeChangeListener(this._onPageStoreChange), k.removeChangeListener(this.onTabStoreChange), this._isMounted = !1, window.removeEventListener("mouseout", this.windowMouseOut) }, _onPageStoreChange: function() { var e = O.getActivePage(); e !== this.state.activePage && this.updateDocumentTitle(e); var t = "off" === this.props.settings.TAB_STACKING; this.setState(ee(t)) }, isSelecting: function() { return Boolean(this.props.settings.TAB_SELECTION_ENABLED && this.state.isSelecting && this.state.pageSelection.count()) }, getSelectedPages: function() { return this.isSelecting() ? this.state.pageSelection.reduce(function(e, t) { var n = O.getPages().find(function(e) { return e.id === t }); return n ? e.push(n) : e }, c()).sortBy(function(e) { return e.index }) : c() }, onTabStoreChange: function(e) { var n = this; "newBackgroundTab" === e.action ? t.nextTick(function() { return I.openURL(e.url, { inBackground: !0 }) }) : "closeAllButActiveTab" === e.action ? t.nextTick(function() { return n.closeAllButActiveTab() }) : "switchTabBackBySetting" === e.action ? this.switchBackBySetting(e.maybeEvent) : "switchTabForwardBySetting" === e.action ? this.switchForwardBySetting(e.maybeEvent) : "switchTabBackByHistory" === e.action ? this.switchBackByHistory(e.maybeEvent) : "switchTabForwardByHistory" === e.action ? this.switchForwardByHistory(e.maybeEvent) : "switchTabBackByOrder" === e.action ? this.switchBackByOrder(e.maybeEvent) : "switchTabForwardByOrder" === e.action ? this.switchForwardByOrder(e.maybeEvent) : "viewPageSource" === e.action ? t.nextTick(function() { return I.openURL("view-source:" + n.state.activePage.url) }) : "stackUntile" === e.action ? t.nextTick(function() { n.isSelecting() ? n.getSelectedPages().map(function(e) { return e.getIn(["extData", "tiling", "id"]) }).filter(Boolean).toSet().forEach(I.untilePages) : t.nextTick(function() { return I.untilePages(n.state.activePage.getIn(["extData", "tiling", "id"])) }) }) : "stackTileGrid" === e.action ? t.nextTick(function() { n.isSelecting() ? I.tilePages(n.getSelectedPages(), "grid") : I.tileTabStack(n.state.activePage.getIn(["extData", "group"]), "grid") }) : "stackTileHorizontal" === e.action ? t.nextTick(function() { n.isSelecting() ? I.tilePages(n.getSelectedPages(), "horizontally") : I.tileTabStack(n.state.activePage.getIn(["extData", "group"]), "horizontally") }) : "stackTileVertical" === e.action ? t.nextTick(function() { n.isSelecting() ? I.tilePages(n.getSelectedPages(), "vertically") : I.tileTabStack(n.state.activePage.getIn(["extData", "group"]), "vertically") }) : "tabThumbnail" === e.action && this.switchTabViewAndEnablePreview() }, selectTab: function(e, t) { "MacIntel" === navigator.platform && 0 === t.button && t.ctrlKey || (N.clearTooltip(), e.active ? I.clearSelection() : (t.stopPropagation(), I.openPage(e))) }, createTab: function(e) { e && e.stopPropagation(), I.openURL() }, createTabWithMiddleClick: function(e) { 1 === e.button && (e.preventDefault(), this.createTab()) }, closeAllButActiveTab: function() { I.closeOther(O.getActivePage()) }, removeFromTabStack: function(e) { I.removeFromTabStack(e) }, muteTab: function(e, t) { t && t.stopPropagation(), I.mutePage(e) }, closeSingleTab: function(e, t) { t && t.stopPropagation(), I.closePage(e) }, switchBackBySetting: function(e) { this.props.settings.TAB_SWITCH_VISUAL ? this.props.switchTabVisualTabSwitcher(e, !0) : "recently used" === this.props.settings.TAB_CYCLING_ORDER ? t.nextTick(function() { return I.cycleByHistory(e, { goBack: !0 }) }) : t.nextTick(function() { return I.cycleByOrder(e, { goBack: !0 }) }) }, switchForwardBySetting: function(e) { this.props.settings.TAB_SWITCH_VISUAL ? this.props.switchTabVisualTabSwitcher(e, !1) : "recently used" === this.props.settings.TAB_CYCLING_ORDER ? t.nextTick(function() { return I.cycleByHistory(e, { goBack: !1 }) }) : t.nextTick(function() { return I.cycleByOrder(e, { goBack: !1 }) }) }, switchBackByHistory: function(e) { t.nextTick(function() { return I.cycleByHistory(e, { goBack: !0 }) }) }, switchForwardByHistory: function(e) { t.nextTick(function() { return I.cycleByHistory(e, { goBack: !1 }) }) }, switchBackByOrder: function(e) { t.nextTick(function() { return I.cycleByOrder(e, { goBack: !0 }) }) }, switchForwardByOrder: function(e) { t.nextTick(function() { return I.cycleByOrder(e, { goBack: !1 }) }) }, reopenClosedTab: function() { w.undeletePrevious() }, switchTabViewAndEnablePreview: function() { var e = this.props.settings, t = e.TAB_POSITION, n = e.TABBAR_WIDTH, i = e.TAB_THUMBNAILS_ENABLED, a = "left" === t || "right" === t; i ? a ? S.set({ TAB_THUMBNAILS_ENABLED: !1 }) : this.switchTabView() : (S.set({ TAB_THUMBNAILS_ENABLED: !0 }), a && n === Y && this.switchTabView()) }, switchTabViewEvent: function(e) { e.stopPropagation(), e.preventDefault(), this.switchTabView() }, switchTabView: function() { var e = this.props.settings, t = e.TAB_POSITION, n = e.TABS_HEIGHT, i = e.TABBAR_WIDTH; if ("top" === t || "bottom" === t) { var a = n < j / 2 ? j : K; S.set({ TABS_HEIGHT: a }) } else { if ("left" !== t && "right" !== t) throw new Error("Unknown tab position", t); var r = i !== z ? z : Y; S.set({ TABBAR_WIDTH: r }) } this.freezeWebview() }, onSlidebarPosition: function(e, t) { var n = s.findDOMNode(this.resizeObserver).getBoundingClientRect(); switch (this.props.settings.TAB_POSITION) { case "top": S.set({ TABS_HEIGHT: t - n.top }); break; case "bottom": S.set({ TABS_HEIGHT: n.bottom - t }); break; case "left": S.set({ TABBAR_WIDTH: e - n.left }); break; case "right": S.set({ TABBAR_WIDTH: n.right - e }); break; default: throw new Error("Unknown tabbar position") } }, hadleSliderDown: function() { this.setState({ isResizing: !0 }), this.freezeWebview() }, hadleSliderUp: function() { this.setState({ isResizing: !1 }), this.thawWebview(), this.snapToEdge() }, freezeWebview: function() { var e = document.getElementById("webview-container"), t = document.querySelector("#main .inner"), n = this.props.settings.TAB_POSITION; if ("left" === n || "right" === n) { var i = e.clientWidth.toString() + "px"; e.style.setProperty("flex", "0 0 " + i); var a = this.props.settings.PANEL_POSITION; ("left" === n && "right" === a || "right" === n && "left" === a) && t.classList.add("anchor-panel"), "right" === n && t.classList.add("justify-end") } else if ("top" === n || "bottom" === n) { var r = e.clientHeight.toString() + "px"; e.style.setProperty("height", r) } else console.warn("Unknown Tab position: ", n) }, thawWebview: function() { var e = document.getElementById("webview-container"), t = this.props.settings.TAB_POSITION; if (e.style.setProperty("flex", "1 1 100%"), e.style.setProperty("height", "auto"), "left" === t || "right" === t) { var n = document.querySelector("#main .inner"); n.classList.remove("justify-end", "anchor-panel") } }, snapToEdge: function() { var e = this.props.settings.TAB_POSITION; if ("top" === e || "bottom" === e) { var t = s.findDOMNode(this.tabsContainer), n = parseInt(t.style.height); n > K && n < K + Z ? n = K : n < j && n > j - Z && (n = j), S.set({ TABS_HEIGHT: n }) } }, getGroupHighlightId: function(e) { return O.getGroupHighlightId(e) }, getTabTooltipContextMenu: function(e) { return [Object.assign({ handler: this.closeSingleTab.bind(this, e) }, W("Close Tab")), { name: "---", handler: null }, Object.assign({ handler: this.removeFromTabStack.bind(this, e), visible: C(e) }, W("Remove from Tab Stack"))] }, getTabBarContextMenu: function() { return [Object.assign({ handler: this.createTab }, W("command", "New Tab")), Object.assign({ handler: f.bookmarkAllOpenPages.bind(this, g.getRootNode().id) }, W("Bookmark All Open Pages")), { name: "---", handler: null }, Object.assign({ handler: this.reopenClosedTab, visible: Boolean(D.getTrash().length) }, W("Reopen Closed Tab"))] }, onMouseDown: function(e) { 1 === e.button && navigator.platform.indexOf("Linux") !== -1 && L.doAction("focusWebView") }, onMouseUp: function(e) { 1 === e.button && 0 === e.buttons && this.createTab() }, onDoubleClick: function(e) { 0 === e.button && "MacIntel" !== navigator.platform && this.createTab() }, getTooltipPlacement: function() { var e = { top: "below", bottom: "above", left: "after", right: "before" }; return e[this.props.tabPosition] }, getTooltipContent: function(e) { var t = this, i = this.props.settings, s = void 0, o = void 0, l = C(e); if ("on" === i.TAB_STACKING && l) { var u = e.getIn(["extData", "group"]); s = O.getGroup(u), o = this.getGroupHighlightId(u) } else s = c.of(e), o = null; var A = S.getSync("BROWSER_COLOR_FG"), m = !l && (d(e) && h(e) || e.active), p = r.createElement("div", { className: x({ "tab-group": l, "tab-solo": !l }), __source: { fileName: a, lineNumber: 657 } }, s.map(function(e) { return r.createElement("div", { key: e.id, className: x({ active: e.active, "tooltip-item": !0, "last-active": o && o === e.id }), onMouseDown: G.bind(t, [e]), onContextMenu: b(t.getTabTooltipContextMenu.bind(t, e)), onClick: t.selectTab.bind(t, e), __source: { fileName: a, lineNumber: 661 } }, !m && r.createElement(M, { src: e.getIn(["extData", "thumbnail"]), __source: { fileName: a, lineNumber: 673 } }), r.createElement("div", { className: "thumbnail-caption", __source: { fileName: a, lineNumber: 676 } }, r.createElement("span", { className: "thumbnail-text", __source: { fileName: a, lineNumber: 677 } }, R.getDisplayTitle(e).length > 245 ? R.getDisplayTitle(e).substring(0, 240) + "..." : R.getDisplayTitle(e)), ("playing" === e.mediastate || "muting" === e.mediastate) && r.createElement("button", { className: "tooltip-audio-button", tabIndex: i.KEY_ACCESS, onClick: t.muteTab.bind(t, e), __source: { fileName: a, lineNumber: 685 } }, r.createElement(U, { color: A, animated: i.USE_ANIMATION, mode: e.mediastate, __source: { fileName: a, lineNumber: 689 } })), r.createElement("button", { className: "close", dangerouslySetInnerHTML: { __html: n(81) }, tabIndex: i.KEY_ACCESS, onClick: t.closeSingleTab.bind(t, e), __source: { fileName: a, lineNumber: 696 } }))) })), f = 1, g = 226 + f, _ = (m ? K : 190) + f, v = window.innerWidth - ("left" === this.props.settings.TAB_POSITION || "right" === this.props.settings.TAB_POSITION ? this.getWidth() : 0), N = s.count() * (g + f), E = _ + f; if (N > v) { var T = Math.floor(v / g); N = Math.floor(v / g) * (g + f), E = (_ + f) * Math.ceil(s.count() / T) } return { width: N, height: E, content: p } }, getTabDirection: function() { var e = this.props.settings.TAB_POSITION; return "left" === e || "right" === e ? "column" : "row" }, setOverflowClass: function(e) { this.setState({ tabStripOverflow: e }) }, onResize: function(e) { var t = e[0].target; this._isMounted && this.setState({ tabStripWidth: t.clientWidth, tabStripHeight: t.clientHeight }) }, onDragOver: function(e) { e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e || "vivaldi/x-tab-entries" === e }) && (e.preventDefault(), e.stopPropagation(), e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e }) && (e.dataTransfer.dropEffect = "copy")) }, dragEnterHandler: function(e) { e.preventDefault(), e.stopPropagation() }, onDrop: function(e) { if (e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e || "vivaldi/x-tab-entries" === e })) { e.preventDefault(), e.stopPropagation(); var t = e.dataTransfer.getData("text/uri-list"); if (t.length > 0) for (var n = t.split("\n"), i = 0; i < n.length; i++) I.openURL(n[i], { inCurrent: !1, inBackground: i > 0 }); else { var a = e.dataTransfer.getData("text/plain"); a.length > 0 && V(a) && I.openURL(a, { inCurrent: !1 }) } } }, getWidth: function() { var e = this.props.settings.TABBAR_WIDTH, t = Y, n = J; return Math.min(Math.max(e, t), n) || Y }, getHeight: function() { if (!this.props.settings.TAB_THUMBNAILS_ENABLED) return K; var e = this.props.settings.TABS_HEIGHT, t = K, n = j; return Math.min(Math.max(e, t), n) || K }, render: function() { var e, t = this, n = this.props.settings, s = n.TAB_POSITION, o = "off" !== n.TAB_STACKING, l = this.getTabDirection(), c = "row" === l ? this.state.tabStripWidth - Q : this.state.tabStripWidth, A = "column" === l ? this.state.tabStripHeight - Q : this.state.tabStripHeight, d = this.isSelecting() ? this.state.pageSelection : u(), h = n.TAB_THUMBNAILS_ENABLED && ("top" === n.TAB_POSITION || "bottom" === n.TAB_POSITION) || "left" === n.TAB_POSITION || "right" === n.TAB_POSITION; return r.createElement(p, { animation: "top" === n.TAB_POSITION || "bottom" === n.TAB_POSITION ? { height: this.getHeight() } : { width: this.getWidth() }, duration: n.USE_ANIMATION ? 100 : 0, mock: this.state.isResizing === !0, complete: this.state.isResizing ? null : this.thawWebview, __source: { fileName: a, lineNumber: 847 } }, r.createElement("div", { id: "tabs-container", ref: function(e) { return t.tabsContainer = e }, onMouseDown: this.onMouseDown, onMouseUp: this.onMouseUp, onDoubleClick: this.onDoubleClick, onContextMenu: b(this.getTabBarContextMenu), className: x((e = { "tab-group-open": o && C(O.getActivePage()) }, i(e, n.TAB_THUMBNAILS_ENABLED ? "view-thumbs" : "no-thumbs", !0), i(e, this.props.tabPosition, !0), i(e, "overflow", this.state.tabStripOverflow), i(e, "tabs-at-edge", this.state.SWITCH_TABS_AT_WINDOW_EDGE && "left" !== s && "right" !== s), e)), onDragOver: this.onDragOver, onDragEnter: this.dragEnterHandler, onDrop: this.onDrop, __source: { fileName: a, lineNumber: 856 } }, r.createElement(B, { ref: function(e) { return t.resizeObserver = e }, className: "resize", onResize: this.onResize, __source: { fileName: a, lineNumber: 875 } }, r.createElement(_, { ref: "tabStrip", className: "tab-strip", maxWidth: c, maxHeight: A, direction: l, selectTab: this.selectTab, getTooltipContent: this.getTooltipContent, getGroupHighlightId: this.getGroupHighlightId, setOverflowClass: this.setOverflowClass, settings: n, reopenClosedTab: this.reopenClosedTab, tabPosition: this.props.tabPosition, isSelecting: this.isSelecting(), pageSelection: d, pages: this.state.pages, tabs: this.state.tabs, __source: { fileName: a, lineNumber: 880 } })), r.createElement(v, { keyAccess: n.KEY_ACCESS, __source: { fileName: a, lineNumber: 902 } }), h && r.createElement(E, { onSlidebarPosition: this.onSlidebarPosition, onStart: this.hadleSliderDown, onStop: this.hadleSliderUp, onDoubleClick: this.switchTabViewEvent, position: this.props.tabPosition, __source: { fileName: a, lineNumber: 905 } }))) } }); e.exports = T(te, $, [], "settings") }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_721 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/TabProgressIndicator.jsx", a = n(1), r = n(9), s = n(112), o = n(5), l = a.createClass({ displayName: "TabProgressIndicator", mixins: [r], getInitialState: function() { return { isProgressing: !1, progress: 0 } }, componentWillMount: function() { s.addChangeListener(this._onNavigationStoreChanged) }, componentWillUnmount: function() { s.removeChangeListener(this._onNavigationStoreChanged) }, _onNavigationStoreChanged: function() { var e = this.props.page, t = s.getProgressInfo(e).get("progress"), n = s.getNavigationInfo(e).get("trigger"); "start" === n ? this.setState({ isProgressing: !1, progress: 0 }) : "stop" === n ? this.setState({ isProgressing: !1, progress: 1 }) : "commit" !== n && "content" !== n || this.setState({ isProgressing: !0, progress: t }) }, render: function() { var e = this.state.progress, t = this.state.isProgressing, n = o({ "progress-indicator": !0, progressing: t, "progress-done": 1 === e }); return a.createElement("span", { className: n, style: { transform: "scaleX(" + e + ")" }, __source: { fileName: i, lineNumber: 59 } }) } }); e.exports = l }, function(e, t, n) { // ========================= // Function_722 // ========================= (function(t) { "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function r(e, t) { if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return !t || "object" != typeof t && "function" != typeof t ? e : t } function s(e, t) { if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t); e.prototype = Object.create(t && t.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t) } function o(e, t) { return w.default.getSync("USE_ANIMATION") ? (0, f.spring)(e, t) : e } var l = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/TabStrip.jsx", c = function() { function e(e, t) { var n = [], i = !0, a = !1, r = void 0; try { for (var s, o = e[Symbol.iterator](); !(i = (s = o.next()).done) && (n.push(s.value), !t || n.length !== t); i = !0); } catch (e) { a = !0, r = e } finally { try { !i && o.return && o.return() } finally { if (a) throw r } } return n } return function(t, n) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, n); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), u = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { return typeof e } : function(e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e }, A = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), d = n(1), h = i(d), m = n(11), p = i(m), f = n(1121), g = n(37), _ = i(g), v = n(114), b = (i(v), n(15)), N = i(b), E = n(17), S = i(E), T = n(719), y = i(T), C = n(724), I = i(C), O = n(3), w = i(O), D = n(55), k = i(D), M = n(4), L = i(M), P = n(409), R = i(P), x = n(88), B = i(x), U = n(212), F = i(U), H = n(21), V = i(H), W = n(224), G = i(W), K = n(788), j = i(K), z = n(10), Y = i(z), J = n(27), Q = n(400), Z = n(376), q = n(46), X = n(7), $ = n(73), ee = n(2), te = i(ee), ne = n(72), ie = (0, Q.createIdleListener)(), ae = 250, re = 200, se = 50, oe = 180, le = 150, ce = 66, ue = 30, Ae = ue, de = 7, he = { stiffness: 240, damping: 26 }, me = { stiffness: 300, damping: 30 }, pe = function(e) { return { top: "below", bottom: "above", left: "after", right: "before" }[e] }, fe = "MacIntel" === navigator.platform, ge = function(e) { function i(e) { a(this, i); var t = r(this, (i.__proto__ || Object.getPrototypeOf(i)).call(this, e)); return t.dragOverTimeoutId = null, t.removeYieldAnimationTimeoutId = null, t.currentHoveredId = 0, t.appRegionRestore = "", t.state = { isScreenshotting: !1, isDragging: !1, isExpectingDrop: !1, mouse: [0, 0], delta: [0, 0], start: [0, 0], draggedActive: null, draggedSet: (0, J.Set)(), recoverTabInfo: null, enterSide: "none", hovered: -1, hoverPercent: 0, isHiddenForDrag: (0, J.Set)(), isYielding: !1, yieldBefore: null, yieldAfter: null, yieldOver: null, freeze: null }, t.handleEscKey = t.handleEscKey.bind(t), t.abortAndRevertDragging = t.abortAndRevertDragging.bind(t), t.getStyles = t.getStyles.bind(t), t.handleMouseMove = t.handleMouseMove.bind(t), t.handleMouseUp = t.handleMouseUp.bind(t), t.handleTouchMove = t.handleTouchMove.bind(t), t.handleMouseDown = t.handleMouseDown.bind(t), t.handleClick = t.handleClick.bind(t), t.handleDoubleClick = t.handleDoubleClick.bind(t), t.handleTabClickMouseUp = t.handleTabClickMouseUp.bind(t), t.handleTouchStart = t.handleTouchStart.bind(t), t.updateInternalDragging = t.updateInternalDragging.bind(t), t.detectInternalOverlap = t.detectInternalOverlap.bind(t), t.handleTabPosition = t.handleTabPosition.bind(t), t.onDragEnterHandler = t.onDragEnterHandler.bind(t), t.onDragLeaveHandler = t.onDragLeaveHandler.bind(t), t.onDragOverHandler = t.onDragOverHandler.bind(t), t.onDropHandler = t.onDropHandler.bind(t), t.droppedTabHandler = t.droppedTabHandler.bind(t), t.closeAndFreeze = t.closeAndFreeze.bind(t), t.freezeTabSize = t.freezeTabSize.bind(t), t.clearForceHover = t.clearForceHover.bind(t), t.onDragEndHandler = t.onDragEndHandler.bind(t), t.onMessageReceived = t.onMessageReceived.bind(t), t.startExpectingDrop = t.startExpectingDrop.bind(t), t.endExpectingDrop = t.endExpectingDrop.bind(t), t.switchToHTMLDrag = t.switchToHTMLDrag.bind(t), t.setIsHiddenForDrag = t.setIsHiddenForDrag.bind(t), t.maybeResetDragging = t.maybeResetDragging.bind(t), t.windowDragEnterHandler = t.windowDragEnterHandler.bind(t), t.windowDragLeaveHandler = t.windowDragLeaveHandler.bind(t), t.windowDragOverHandler = t.windowDragOverHandler.bind(t), t.windowDropHandler = t.windowDropHandler.bind(t), t.createFlexBoxLayout = (0, F.default)(1)(t.createFlexBoxLayout.bind(t)), t } return s(i, e), A(i, [{ key: "shouldComponentUpdate", value: function(e, t) { return (0, V.default)(this, e, t) } }, { key: "componentWillMount", value: function() { L.default.runtime.onMessage.addListener(this.onMessageReceived) } }, { key: "componentDidMount", value: function() { this.setOverflowClass(), window.addEventListener("dragenter", this.windowDragEnterHandler), window.addEventListener("dragleave", this.windowDragLeaveHandler), window.addEventListener("dragover", this.windowDragOverHandler), window.addEventListener("drop", this.windowDropHandler) } }, { key: "componentWillUnmount", value: function() { L.default.runtime.onMessage.removeListener(this.onMessageReceived), window.removeEventListener("dragenter", this.windowDragEnterHandler), window.removeEventListener("dragleave", this.windowDragLeaveHandler), window.removeEventListener("dragover", this.windowDragOverHandler), window.removeEventListener("drop", this.windowDropHandler) } }, { key: "componentWillReceiveProps", value: function(e) { (0, J.is)(e.pages, this.props.pages) || this.maybeResetDragging() } }, { key: "componentDidUpdate", value: function(e) { this.props.tabs === e.tabs && this.props.maxWidth === e.maxWidth && this.props.maxHeight === e.maxHeight && this.props.settings.settings === e.settings || this.setOverflowClass() } }, { key: "setOverflowClass", value: function() { if (("left" === this.props.settings.TAB_POSITION || "right" === this.props.settings.TAB_POSITION) && this.refs.tabs) { var e = p.default.findDOMNode(this.refs.tabs); e.clientHeight < e.scrollHeight ? this.props.setOverflowClass(!0) : this.props.setOverflowClass(!1) } } }, { key: "cancelEvent", value: function(e) { e && e.stopPropagation() } }, { key: "onMessageReceived", value: function(e) { var t = e.action, n = e.windowId; t === ne.MESSAGE_START_DRAGGING ? this.startExpectingDrop() : t === ne.MESSAGE_END_DRAGGING ? this.endExpectingDrop() : "unmountWebViews" === t && n === window.vivaldiWindowId && (document.querySelectorAll("webview").forEach(function(e) { return e.parentElement.removeChild(e) }), L.default.runtime.sendMessage({ action: "afterUnmountWebview" })) } }, { key: "startExpectingDrop", value: function() { var e = S.default.isIncognito(), t = !e; this.setState({ isExpectingDrop: t }) } }, { key: "endExpectingDrop", value: function() { this.setState({ isExpectingDrop: !1 }) } }, { key: "createTab", value: function(e) { e && e.stopPropagation(), N.default.openURL() } }, { key: "closeAndFreeze", value: function(e, t) { this.props.settings.TAB_CLOSE_ALIGN_NEXT && this.freezeTabSize(e), N.default.closePage(e) } }, { key: "freezeTabSize", value: function e(t) { var n = this, i = function() { n.setState({ freeze: null }), window.removeEventListener("mousemove", a) }, a = function(e) { var t = p.default.findDOMNode(n.refs.tabs).getBoundingClientRect(); (t.left > e.clientX || t.left + t.width < e.clientX || t.top > e.clientY || t.top + t.height < e.clientY) && i() }, e = function(e) { var t = n.createFlexBoxLayout(n.props.tabs, n.props.direction, n.props.maxWidth, n.props.maxHeight, { isHiddenForDrag: n.state.isHiddenForDrag, freeze: n.state.freeze, yieldBefore: n.state.yieldBefore, yieldAfter: n.state.yieldAfter, tabStackingEnabled: "on" === n.props.settings.TAB_STACKING, isThumb: n.props.settings.TAB_THUMBNAILS_ENABLED }), i = t.children.filter(function(e) { return "tab" === e.type }).findIndex(function(t) { return t.tab.page.id === e }), r = t.children[i], s = t.children[i + 1]; r && (n.setState({ freeze: { width: r.layout.width, height: r.layout.height, nextId: s.tab.page.id } }), window.addEventListener("mousemove", a)) }, r = this.props.tabs.getIn([-1, "page", "id"]); t.id !== r ? e(t.id) : i() } }, { key: "handleTouchStart", value: function(e, t, n, i) { this.startInternalDragging(i.touches[0], e, t, n) } }, { key: "handleTouchMove", value: function(e) { e.preventDefault(), this.updateInternalDragging(e.touches[0]) } }, { key: "handleMouseMove", value: function(e) { e.preventDefault(), this.updateInternalDragging(e) } }, { key: "handleMouseUp", value: function(e) { this.endInternalDragging(e) } }, { key: "handleMouseDown", value: function(e, t, n, i) { 0 === i.button ? (0, B.default)(i) || (this.props.selectTab(e, i), this.startInternalDragging(i, e, t, n)) : 1 === i.button && navigator.platform.indexOf("Linux") !== -1 && k.default.doAction("focusWebView") } }, { key: "handleClick", value: function(e, t) { var n = this.props.settings; (0, Z.isSingleSelectEvent)(t, n, document.hasFocus()) ? N.default.setSelection(e, !1, !1): (0, Z.isMultiSelectEvent)(t, n, document.hasFocus()) && N.default.setSelection(e, !0, !1) } }, { key: "handleDoubleClick", value: function(e, t) { t.preventDefault(), t.stopPropagation(); var n = this.props.settings; (0, Z.isSingleSelectEvent)(t, n, document.hasFocus()) ? N.default.toggleRelatedSelection(e): n.USE_TAB_CLOSE_ON_DOUBLECLICK && N.default.closePage(e) } }, { key: "handleTabClickMouseUp", value: function(e, t) { 1 === t.button && (t.preventDefault(), t.stopPropagation(), N.default.closePage(e)) } }, { key: "onDragEnterHandler", value: function(e) { return e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e }) && this.state.isExpectingDrop ? (e.preventDefault(), void e.stopPropagation()) : void(e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e }) && (e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy")) } }, { key: "onDragLeaveHandler", value: function(e) { var t = this; clearTimeout(this.removeYieldTimeoutId), this.removeYieldTimeoutId = setTimeout(function() { t.setState({ yieldAfter: null, yieldBefore: null, yieldOver: null }), clearTimeout(t.removeYieldAnimationTimeoutId), t.removeYieldAnimationTimeoutId = setTimeout(function() { t.state.yieldBefore || t.state.yieldAfter || t.setState({ isYielding: !1 }) }, 2e3) }, 200) } }, { key: "onDragOverHandler", value: function(e) { var t = this; return clearTimeout(this.removeYieldTimeoutId), e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e }) && this.state.isExpectingDrop ? (e.preventDefault(), e.stopPropagation(), clearTimeout(this.removeYieldTimeoutId), void(this.removeYieldTimeoutId = setTimeout(function() { return t.setState({ yieldAfter: null, yieldBefore: null }) }, 300))) : void(e.dataTransfer.types.some(function(e) { return "text/uri-list" === e || "text/plain" === e }) && (e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy")) } }, { key: "onDropHandler", value: function(e) { e.preventDefault(), e.stopPropagation(); var t = e.dataTransfer.getData("vivaldi/x-tab-entries"), n = e.dataTransfer.getData("text/uri-list"), i = e.dataTransfer.getData("text/plain"); this.state.isExpectingDrop && t ? this.droppedTabHandler(t) : n ? n.split("\n").forEach(function(e, t) { return N.default.openURL(e, { inCurrent: !1, inBackground: t > 0 }) }) : i && (0, q.isValidURL)(i) && N.default.openURL(i, { inCurrent: !1 }) } }, { key: "droppedTabHandler", value: function(e) { var n = this, i = this.state.yieldOver, a = this.props.settings.TAB_STACKING, r = JSON.parse(e), s = r.ids.map(function(e) { return parseInt(e) }).sort(function(e, t) { return e - t }), o = this.getYieldIndex(s[0]); L.default.tabs.query({}, function(e) { var l = (0, J.List)(e).filter(function(e) { return s.some(function(t) { return e.id === t }) }).map($.tabToPage), c = function() { var e = i && S.default.getPages().find(function(e) { return e.id === i && !e.pinned }); if (e) { var s = e.getIn(["extData", "group"]), c = a && S.default.isGroup(s), u = c ? l.concat(S.default.getGroup(s)) : l.push(e); N.default.createTabStack(u, e.index, e.getIn(["extData", "group"])) } else { var A = function() { return t.nextTick(n.maybeResetDragging) }, d = r.active; N.default.moveDroppedTabs(l, d, o, A) } L.default.windows.update(window.vivaldiWindowId, { focused: !0 }) }, u = l.getIn([0, "windowId"]), A = u !== window.vivaldiWindowId, d = e.filter(function(e) { return e.windowId === u }), h = d.length - l.count() === 0; A && h ? ! function() { var e = function e(t) { t && "afterUnmountWebview" === t.action && (L.default.runtime.onMessage.removeListener(e), c()) }; L.default.runtime.onMessage.addListener(e), L.default.runtime.sendMessage({ action: "unmountWebViews", windowId: u }) }() : c() }) } }, { key: "handleTabPosition", value: function(e, t) { var n = this; clearTimeout(this.removeYieldTimeoutId), "before" === t ? this.setState({ isYielding: !0, yieldBefore: e, yieldAfter: null, yieldOver: null }) : "after" === t ? this.setState({ isYielding: !0, yieldBefore: null, yieldAfter: e, yieldOver: null }) : "over" === t ? this.setState({ yieldOver: e }) : "none" === t && (this.setState({ yieldBefore: null, yieldAfter: null, yieldOver: null }), setTimeout(function() { var e = n.state, t = e.yieldBefore, i = e.yieldAfter, a = e.yieldOver; t || i || a || n.setState({ isYielding: !1 }) }, 1e3)) } }, { key: "setIsHiddenForDrag", value: function(e) { this.setState({ isHiddenForDrag: e }) } }, { key: "windowDragEnterHandler", value: function(e) { e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e }) && (e.preventDefault(), e.stopPropagation()) } }, { key: "windowDragLeaveHandler", value: function(e) { if (e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e })) { e.preventDefault(), e.stopPropagation(); var t = 0 === e.pageX && 0 === e.pageY; t && this.handleTabPosition(-1, "none") } } }, { key: "windowDragOverHandler", value: function(e) { if (e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e })) { e.preventDefault(), e.stopPropagation(), this.delayedActivateWindow(e); var t = this.state, n = t.yieldBefore, i = t.yieldAfter, a = t.yieldOver; if (!a && !n && !i) { var r = this.props.pages.getIn([-1, "id"]); r && !this.state.isHiddenForDrag.has(r) && this.handleTabPosition(r, "after") } } } }, { key: "windowDropHandler", value: function(e) { var t = this; e.dataTransfer.types.some(function(e) { return "vivaldi/x-tab-entries" === e }) && ! function() { e.preventDefault(), e.stopPropagation(); var n = e.dataTransfer.getData("vivaldi/x-tab-entries"), i = JSON.parse(n), a = i.ids.map(function(e) { return parseInt(e) }).sort(function(e, t) { return e - t }); L.default.tabs.query({}, function(n) { var r = n.find(function(e) { return a.includes(e.id) && e.windowId !== window.vivaldiWindowId }); if (r) ! function() { var e = (0, J.List)(n).filter(function(e) { return a.some(function(t) { return e.id === t }) }).map($.tabToPage), t = function() { N.default.moveDroppedTabs(e, i.active, -1) }, r = e.getIn([0, "windowId"]), s = n.filter(function(e) { return e.windowId === r }), o = s.length - e.count() === 0; o ? ! function() { var e = function e(n) { n && "afterUnmountWebview" === n.action && (L.default.runtime.onMessage.removeListener(e), t()) }; L.default.runtime.onMessage.addListener(e), L.default.runtime.sendMessage({ action: "unmountWebViews", windowId: r }) }() : t() }(); else { var s = a.map(function(e) { return parseInt(e) }).map(function(e) { return S.default.getPages().find(function(t) { return t.id === e }) }).filter(Boolean); if (s.length === S.default.getPages().count()) return void t.maybeResetDragging(); s.length ? N.default.detachPage(s, e.screenX, e.screenY) : (t.maybeResetDragging(), console.warn("Dropped Page(s) does not exist:", s.ids)) } }) }() } }, { key: "delayedActivateWindow", value: function(e) { var t = e.screenX, n = e.screenY; fe || ie(t, n, ae, function() { return L.default.windows.update(window.vivaldiWindowId, { focused: !0 }) }) } }, { key: "maybeResetDragging", value: function() { var e = this.state, t = e.isHiddenForDrag, n = e.isYielding, i = e.yieldOver; (!t.isEmpty() || n || i) && this.setState({ isYielding: !1, yieldBefore: null, yieldAfter: null, yieldOver: null, isHiddenForDrag: (0, J.Set)(), hovered: -1 }) } }, { key: "handleEscKey", value: function() { this.abortAndRevertDragging() } }, { key: "abortAndRevertDragging", value: function() { this.state.draggedSet.forEach(function(e) { return N.default.moveToIndex(e, e.index) }), this.cleanupInternalDragging(), this.maybeResetDragging() } }, { key: "getYieldIndex", value: function(e) { var t = this.state, n = t.yieldBefore, i = t.yieldAfter, a = t.yieldOver, r = this.props.settings.TAB_STACKING; if (n) { var s = S.default.getPages().find(function(e) { return e.id === n }); if (!s) return -1; var o = function() { var t = s.getIn(["extData", "group"]), n = r && S.default.isGroup(t), i = n ? S.default.getGroup(t).first().id : s.id; return { v: S.default.getPages().filter(function(t) { return t.id !== e }).findIndex(function(e) { return e.id === i }) } }(); if ("object" === ("undefined" == typeof o ? "undefined" : u(o))) return o.v } else { if (!i) { if (a) { var l = S.default.getPages().find(function(e) { return e.id === a }); return l ? l.index : -1 } return -1 } var c = S.default.getPages().find(function(e) { return e.id === i }); if (!c) return -1; var A = function() { var t = c.getIn(["extData", "group"]), n = r && S.default.isGroup(t), i = n ? S.default.getGroup(t).first().id : c.id; return { v: S.default.getPages().filter(function(t) { return t.id !== e }).findIndex(function(e) { return e.id === i }) + 1 } }(); if ("object" === ("undefined" == typeof A ? "undefined" : u(A))) return A.v } } }, { key: "startInternalDragging", value: function(e, t, n, i) { var a = e.pageX, r = e.pageY; window.addEventListener("touchmove", this.handleTouchMove), window.addEventListener("mousemove", this.handleMouseMove), window.addEventListener("touchend", this.handleMouseUp), window.addEventListener("mouseup", this.handleMouseUp), _.default.bind("esc", this.handleEscKey); var s = void 0, o = this.props, l = o.isSelecting, c = o.pageSelection, u = t.getIn(["extData", "group"]), A = this.props.settings.TAB_STACKING, d = A && S.default.isGroup(u), h = l && c.has(t.id); s = h ? c.reduce(function(e, t) { var n = S.default.getPages().find(function(e) { return e.id === t }); return n ? e.add(n) : e }, (0, J.Set)()) : d ? (0, J.Set)(S.default.getGroup(u)) : J.Set.of(t), this.setState({ draggedActive: t, draggedSet: s, start: [a, r], delta: [a - n, r - i], mouse: [n, i], isScreenshotting: !1, yieldBefore: null, yieldAfter: null }) } }, { key: "updateInternalDragging", value: function(e) { var t = e.pageX, n = e.pageY, i = this.state, a = i.isDragging, r = i.draggedActive, s = i.start, o = c(i.delta, 2), l = o[0], u = o[1], A = this.props, d = A.tabs, h = A.direction, m = A.maxWidth, p = A.maxHeight, f = A.settings, g = c(s, 2), _ = g[0], v = g[1], b = 5; if (a) { if (this.state.isScreenshotting) return } else { var N = Math.abs(_ - t) > b || Math.abs(v - n) > b; if (!N) return; a = !0 } var E = this.createFlexBoxLayout(d, h, m, p, { isHiddenForDrag: this.state.isHiddenForDrag, freeze: this.state.freeze, yieldBefore: this.state.yieldBefore, yieldAfter: this.state.yieldAfter, tabStackingEnabled: "on" === f.TAB_STACKING, isThumb: f.TAB_THUMBNAILS_ENABLED }), S = d.find(function(e) { return r && r.id === e.page.id }), T = E.children.find(function(e) { return e.tab.id === S.id }).layout, y = 50, C = t - l, I = n - u, O = S.getIn(["page", "incognito"]) === !1, w = E.children.filter(function(e) { return "tab" === e.type }), D = (0, X.first)(w).layout, k = (0, X.last)(w).layout, M = "column" === h && (C + y < D.left || C - y > k.left) || "row" === h && (I + y < D.top || I - y > k.top), L = O && M; L ? this.switchToHTMLDrag(S) : (C = "row" === h ? C : T.left, I = "column" === h ? I : T.top, C = (0, X.clamp)(C, D.left - 5, k.left + 5), I = (0, X.clamp)(I, D.top - 5, k.top + 5), this.setState({ mouse: [C, I], isDragging: a }), this.detectInternalOverlap(S, T, E, h, C, I)) } }, { key: "detectInternalOverlap", value: function(e, t, n, i, a, r) { var s = this; this.dragOverTimeoutId && clearTimeout(this.dragOverTimeoutId); var o = [a + t.width / 2, r + t.height / 2], l = n.children.filter(function(e) { return "tab" === e.type }).filter(function(t) { return t.tab.get("id") !== e.get("id") }).filter(function(e) { return !s.state.draggedSet.find(function(t) { return t.id === e.tab.id }) }).find(function(e) { var t = e.layout; return o[0] > t.left && o[0] < t.left + t.width && o[1] > t.top && o[1] < t.top + t.height }); if (l) return void N.default.movePage(this.state.draggedSet.toList(), l.tab.page); if ("on" === this.props.settings.TAB_STACKING) { var c = function() { var o = Object.assign({}, t, { left: a, top: r }), l = n.children.filter(function(e) { var t = e.type; return "tab" === t }).filter(function(t) { var n = t.tab; return n.get("id") !== e.get("id") }).find(function(e) { var t = e.layout; return (0, j.default)(t, o) }); if (!l) return s.currentHoveredId = 0, s.setState({ enterSide: "none", hovered: -1 }), { v: void 0 }; var c = l.layout, u = c.left, A = c.width, d = c.top, h = c.height, m = void 0; m = "row" === i ? a < u + A / 2 ? "before" : "after" : r < d + h / 2 ? "before" : "after"; var p = s.state.enterSide; s.currentHoveredId !== l.tab.page.id && s.setState({ enterSide: p = m }), s.currentHoveredId = l.tab.page.id; var f = (0, j.default)(l.layout, o) / (t.width * t.height) * 100; if (p === m && f < 50 && f > 10) { var g = se; s.state.hovered === -1 && (clearTimeout(s.dragOverTimeoutId), s.dragOverTimeoutId = setTimeout(function() { s.state.isDragging && s.setState({ hovered: l.tab.page.id, hoverPercent: f }) }, g)) } else s.setState({ hovered: -1, hoverPercent: 0 }) }(); if ("object" === ("undefined" == typeof c ? "undefined" : u(c))) return c.v } } }, { key: "switchToHTMLDrag", value: function(e) { var t = this, n = this.props.settings.TAB_STACKING, i = this.state.draggedSet.toList(), a = i.find(function(e) { return e.active }) || i.first(), r = L.default.app.window.current(); r && ! function() { var s = p.default.findDOMNode(t.refs.tabs).querySelector("#tab-" + e.id).getBoundingClientRect(), o = a.getIn(["extData", "group"]), l = n && S.default.isGroup(o), c = l ? 4 : 0; t.setState({ isScreenshotting: !0 }, function() { return Y.default.zoom.getVivaldiUIZoom(function(e) { return Y.default.thumbnails.captureUI({ appWindowId: r.id, posX: Math.round(s.left * e), posY: Math.round((s.top - c) * e), width: Math.round(s.width * e), height: Math.round((s.height + c) * e) }, function(e) { L.default.runtime.sendMessage({ action: ne.MESSAGE_START_DRAGGING }), Y.default.tabsPrivate.onDragEnd.addListener(t.onDragEndHandler), Y.default.tabsPrivate.startDrag({ mimeType: "vivaldi/x-tab-entries", customData: JSON.stringify({ ids: i.map(function(e) { return e.id }).toJS(), active: a.id }), url: a.url, title: a.title }, { image: e, cursorX: 10, cursorY: 10 }, !1), t.cleanupInternalDragging(), t.setState({ isHiddenForDrag: i.toSet().map(function(e) { return e.id }) }) }) }) }) }() } }, { key: "endInternalDragging", value: function() { var e = this, t = this.state.hovered !== -1 && S.default.getPages().find(function(t) { return t.id === e.state.hovered }); if (t) { var n = void 0; n = S.default.isGroup(t.getIn(["extData", "group"])) ? this.state.draggedSet.union(S.default.getGroup(t.getIn(["extData", "group"]))) : this.state.draggedSet.add(t), N.default.createTabStack(n.toList(), null, t.getIn(["extData", "group"])) } this.cleanupInternalDragging() } }, { key: "cleanupInternalDragging", value: function() { window.removeEventListener("touchmove", this.handleTouchMove), window.removeEventListener("mousemove", this.handleMouseMove), window.removeEventListener("touchend", this.handleMouseUp), window.removeEventListener("mouseup", this.handleMouseUp), _.default.unbind("esc", this.handleEscKey), this.props.settings.TAB_CLICK_ACTIVE_OPENS_PREVIOUS && !this.state.isDragging && this.state.draggedActive && this.state.draggedActive.active && N.default.minimizePage(), this.setState({ isDragging: !1, start: [0, 0], delta: [0, 0], mouse: [0, 0], hovered: -1, hoverPercent: 0 }) } }, { key: "onDragEndHandler", value: function(e, t, n, i, a) { var r = this; if ("vivaldi/x-tab-entries" === e.mimeType) { if (Y.default.tabsPrivate.onDragEnd.removeListener(this.onDragEndHandler), L.default.runtime.sendMessage({ action: ne.MESSAGE_END_DRAGGING }), t) this.abortAndRevertDragging(); else if (n) { var s = JSON.parse(e.customData).ids.map(function(e) { return parseInt(e) }).map(function(e) { return S.default.getPages().find(function(t) { return t.id === e }) }).filter(Boolean); if (s.length === S.default.getPages().count()) return void this.maybeResetDragging(); s.length ? N.default.detachPage(s, i, a) : (this.maybeResetDragging(), console.warn("Dropped Page(s) does not exist:", s.ids)) } setTimeout(function() { return r.maybeResetDragging() }, 100) } } }, { key: "clearForceHover", value: function() { null !== this.state.freeze && this.setState({ freeze: Object.assign({}, this.state.freeze, { nextId: -1 }) }) } }, { key: "getTabConfig", value: function(e, t, n, i, a, r) { var s = { flex: 1, zIndex: 0 }; return t ? (s.maxWidth = oe, s.maxHeight = le, s.minHeight = le, n && (s.minWidth = ue), i && (s.minWidth = Ae, s.maxWidth = Ae)) : (s.maxWidth = 260, s.maxHeight = ue, s.minHeight = ue, r && (s.maxHeight = le), n && (s.minHeight = ue), i && (s.minHeight = Ae, s.maxHeight = Ae), a && (s.minHeight = ue + de)), s } }, { key: "createFlexBoxLayout", value: function(e, t, n, i, a) { var r = this, s = "row" === t, o = { style: { flexDirection: t, width: n, height: i }, children: e.toArray().reduce(function(e, t) { var n = t.page.pinned, i = t.page.active, o = a.tabStackingEnabled && "group" === t.type, l = r.getTabConfig(t, s, i, n, o, a.isThumb); a.freeze && !n && (l.width = l.maxWidth = l.minWidth = a.freeze.width, l.height = l.maxHeight = l.minHeight = a.freeze.height); var c = r.state, u = c.isDragging, A = c.draggedSet, d = c.draggedActive; u && d && d.id !== t.page.id && A.find(function(e) { return e.id === t.page.id }) && (l.width = l.maxWidth = l.minWidth = 0, l.height = l.maxHeight = l.minheight = 0); var h = !o && a.isHiddenForDrag.has(t.page.id), m = o && t.pages.every(function(e) { return a.isHiddenForDrag.has(e.id) }); (h || m) && (l.width = l.maxWidth = l.minWidth = 0, l.height = l.maxHeight = l.minheight = 0); var p = a.yieldBefore === t.page.id; p && e.push({ type: "blank", style: Object.assign({}, r.getTabConfig(t, s, i, !1, o, a.isThumb)) }), e.push({ type: "tab", tab: t, style: l }); var f = a.yieldAfter === t.page.id; return f && e.push({ type: "blank", style: Object.assign({}, r.getTabConfig(t, s, i, !1, o, a.isThumb)) }), e }, []).concat({ type: "button", style: { width: 30, height: 30, alignSelf: s ? "flex-end" : "center" } }) }; return (0, R.default)(o), o } }, { key: "getTabStyle", value: function(e, t, n, i, a) { var r = this, s = this.state, l = s.mouse, c = s.draggedActive, A = s.draggedSet, d = s.isDragging, h = s.hovered, m = s.yieldOver, p = e.getIn(["page", "id"]), g = c && c.id === p, _ = h === p || m === p, v = d && g, b = d && !v && A.find(function(e) { return e.id === p }), N = e.id, E = { type: "tab", tab: e, zIndex: 1 }; if (v) return { key: N, data: Object.assign(E, { type: "tab", tab: e, zIndex: this.state.draggedSet.count() + 2 }), style: { x: l[0], y: l[1], width: t.width, height: t.height, brightness: 1, contrast: 1, opacity: .9 } }; if (!b) { var S = e.id, T = { type: "tab", tab: e, zIndex: g ? 2 : 1 }, y = { x: o(t.left, he), y: o(t.top, he), width: "column" === i ? t.width : o(t.width, he), height: "row" === i ? t.height : o(t.height, he), brightness: _ ? o(.6, me) : o(1, me), contrast: _ ? o(2, me) : o(1, me), opacity: b ? o(.9, me) : o(1, me) }; return { key: S, data: T, style: y } } var C = function() { var t = r.state.draggedSet.toList().sort(function(e, t) { return e.id === (c && c.id) ? -1 : e.index < t.index ? -1 : 1 }), n = t.findIndex(function(e) { return e.id === p }) - 1, s = t.get(n).id, l = a.find(function(e) { return e.key === s }); if (l) return { v: Object.assign({}, l, { key: N, data: Object.assign({}, l.data, { type: "tab", tab: e, zIndex: r.state.draggedSet.count() - n }), styles: Object.assign({}, l.styles, { x: o(l.x + ("row" === i ? 4 : 0), f.presets.wobbly), y: o(l.y + ("column" === i ? 4 : 0), f.presets.wobbly) }) }) } }(); return "object" === ("undefined" == typeof C ? "undefined" : u(C)) ? C.v : void 0 } }, { key: "getStyles", value: function(e) { var t = this, n = this.createFlexBoxLayout(this.props.tabs, this.props.direction, this.props.maxWidth, this.props.maxHeight, { isHiddenForDrag: this.state.isHiddenForDrag, freeze: this.state.freeze, yieldBefore: this.state.yieldBefore, yieldAfter: this.state.yieldAfter, tabStackingEnabled: "on" === this.props.settings.TAB_STACKING, isThumb: this.props.settings.TAB_THUMBNAILS_ENABLED }), i = n.children.map(function(n, i) { var a = n.layout, r = n.tab; switch (n.type) { case "tab": return t.getTabStyle(r, a, i, t.props.direction, e); case "blank": return { key: "space-" + i, data: { type: "space", zIndex: 0 }, style: { x: a.left, y: a.top, width: a.width, height: a.height } }; case "button": return { key: "button", data: { type: "button", zIndex: 0 }, style: { x: a.left, y: a.top, width: a.width, height: a.height } }; default: console.warn("Unknown Element", n.type) } }).filter(Boolean); return this.state.isDragging !== !1 || this.state.isYielding || i.forEach(function(e) { return e.style = (0, G.default)(e.style), e }), i } }, { key: "render", value: function() { var e = this; return this.props.maxWidth <= 0 || this.props.maxHeight <= 0 ? null : h.default.createElement(f.TransitionMotion, { ref: "tabs", styles: this.getStyles, children: function(t) { return h.default.createElement("div", { className: e.props.className, onDragEnter: e.onDragEnterHandler, onDragLeave: e.onDragLeaveHandler, onDragOver: e.onDragOverHandler, onDrop: e.onDropHandler, __source: { fileName: l, lineNumber: 1463 } }, t.map(function(t) { var i = t.style, a = i.x, r = i.y, s = i.width, o = i.height, c = { left: a, top: r, width: s, height: o, zIndex: t.data.zIndex, WebkitFilter: "brightness(" + t.style.brightness + ") " + ("contrast(" + t.style.contrast + ") ") + ("opacity(" + t.style.opacity + ")") }; if ("tab" === t.data.type) { var u = t.data.tab, A = u.get("page"), d = "on" === e.props.settings.TAB_STACKING, m = "group" === u.get("type"), p = Boolean(e.state.isDragging && e.state.draggedActive && e.state.draggedActive.id === A.id), f = Boolean(!e.props.settings.USE_TOOLTIP || e.state.isDragging || !e.state.isHiddenForDrag.isEmpty()); return h.default.createElement(I.default, { key: t.key, id: A.id, disabled: f, pointerEvents: d && m ? "auto" : "none", placement: pe(e.props.tabPosition), appearDelay: re, disappearDelay: d ? re : 1, content: e.props.getTooltipContent, context: A, __source: { fileName: l, lineNumber: 1498 } }, h.default.createElement("div", { className: "tab-position", style: c, onMouseDown: e.handleMouseDown.bind(e, A, a, r), onClick: e.handleClick.bind(e, A), onDoubleClick: e.handleDoubleClick.bind(e, A), onTouchStart: e.handleTouchStart.bind(e, A, a, r), onMouseUp: e.handleTabClickMouseUp.bind(e, A), __source: { fileName: l, lineNumber: 1509 } }, h.default.createElement(y.default, { id: "tab-" + t.key, key: t.key, page: A, stack: "group" === u.get("type") ? u.get("pages") : (0, J.List)(), isDragged: p, isExpectingDrop: e.state.isExpectingDrop, isSelecting: e.props.isSelecting, pageSelection: e.props.pageSelection, isHiddenForDrag: e.state.isHiddenForDrag, smallTab: t.style.width <= ce, highlightId: d && u.get("page").id, direction: e.props.direction, settings: e.props.settings, forceHover: Boolean(e.state.freeze && e.state.freeze.nextId === A.id), clearForceHover: e.clearForceHover, setIsHiddenForDrag: e.setIsHiddenForDrag, closePage: e.closeAndFreeze, selectTab: e.props.selectTab, onDragLeave: e.onDragLeaveHandler, droppedTabHandler: e.droppedTabHandler, handleTabPosition: e.handleTabPosition, reopenClosedTab: e.props.reopenClosedTab, __source: { fileName: l, lineNumber: 1519 } }))) } return "space" === t.data.type ? h.default.createElement("div", { key: t.key, className: "tab-yield-space tab-position", style: c, onDragEnter: e.onDragEnterHandler, onDragLeave: e.onDragLeaveHandler, onDragOver: e.onDragOverHandler, onDrop: e.onDropHandler, __source: { fileName: l, lineNumber: 1550 } }) : "button" === t.data.type ? h.default.createElement("button", { key: t.key, style: c, className: "button-tabbar newtab", tabIndex: e.props.settings.KEY_ACCESS, onDragEnter: e.onDragEnterHandler, onDragLeave: e.onDragLeaveHandler, onDragOver: e.onDragOverHandler, onDrop: e.onDropHandler, onClick: e.createTab, onDoubleClick: e.cancelEvent, title: (0, te.default)("Open a new tab"), dangerouslySetInnerHTML: { __html: n(1021) }, __source: { fileName: l, lineNumber: 1561 } }) : void 0 })) }, __source: { fileName: l, lineNumber: 1458 } }) } }]), i }(h.default.Component); ge.displayName = "TabStrip", e.exports = ge }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_723 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tabs/Trash.jsx", a = n(1), r = n(9), s = n(15), o = n(17), l = n(168), c = n(174), u = n(2), A = n(5), d = n(26), h = n(30), m = n(73), p = m.tabToPage, f = a.createClass({ displayName: "Trash", mixins: [r], getInitialState: function() { return { trash: c.getTrash(), showTrashContextMenu: null, isDragOver: !1 } }, componentWillMount: function() { c.addChangeListener(this.onTrashStoreChange) }, componentWillUnmount: function() { c.removeChangeListener(this.onTrashStoreChange) }, onTrashStoreChange: function() { this.setState({ trash: c.getTrash() }) }, emptyTrash: function() { l.emptyTrash() }, undeleteTab: function(e) { l.undelete(e) }, undeleteWindow: function(e) { l.restoreWindow(e) }, trimTitle: function(e) { return e.length > 70 && (e = e.substring(0, 70) + "..."), e }, _tabToTitle: function(e) { var t = p(e), n = t.getIn(["extData", "historyCount"]), i = n && n - 1; return n && i ? u("$2 ($1 More in History)", "$2 ($1 More in History)", [i, this.trimTitle(e.title)]) : this.trimTitle(t.title) }, onMouseUp: function(e) { 1 === e.button && 0 === e.buttons && this.onClick(e) }, onClick: function(e) { if (1 === e.button) { if (e.stopPropagation(), this.state.trash.length > 0) { var t = this.state.trash[0]; t.tab ? this.undeleteTab(t.tab) : t.window && this.undeleteWindow(t.window) } } else { var n = this.getContextMenuHandler(); n && n(e) } }, onDoubleClick: function(e) { e.stopPropagation() }, onContextMenu: function(e) { var t = this.getContextMenuHandler(); t ? t(e) : e.stopPropagation() }, getContextMenuHandler: function() { var e = this; if (0 === this.state.trash.length) return null; var t = this.state.trash.map(function(t, n) { if (t.tab) { var i = t.tab; return { mnemonic: !1, name: e._tabToTitle(i), url: i.url, handler: e.undeleteTab.bind(e, i) } } if (t.window) { var a = t.window; return Object.assign({ items: [Object.assign({ handler: e.undeleteWindow.bind(e, a) }, h("All"))].concat(a.tabs.map(function(t) { return { mnemonic: !1, name: e.trimTitle(t.title), url: t.url, handler: e.undeleteTab.bind(e, t) } })) }, h("Window with $1 Tab", "Window with $1 Tabs", [a.tabs.length])) } }).filter(Boolean).concat([{ name: "---" }, Object.assign({ handler: l.emptyTrash }, h("Clear All"))]); return d(t, null, "bottom", this.refs.trashButton) }, dragEnterHandler: function(e) { e.preventDefault(), e.stopPropagation(), this.setState({ isDragOver: !0 }) }, dragLeaveHandler: function(e) { e.preventDefault(), e.stopPropagation(), this.setState({ isDragOver: !1 }) }, dragOverHandler: function(e) { e.preventDefault(), e.stopPropagation() }, dropHandler: function(e) { e.preventDefault(), e.stopPropagation(), this.setState({ isDragOver: !1 }); var t = e.dataTransfer.getData("vivaldi/x-tab-entries"); JSON.parse(t).ids.map(function(e) { return parseInt(e) }).map(function(e) { return o.getPages().find(function(t) { return t.id === e }) }).filter(Boolean).forEach(s.closePage) }, render: function() { var e = A({ "button-tabbar": !0, "toggle-trash": !0, "trash-is-empty": 0 === this.state.trash.length, dragOver: this.state.isDragOver }); return a.createElement("div", { className: "trash", __source: { fileName: i, lineNumber: 196 } }, a.createElement("button", { ref: "trashButton", className: e, tabIndex: this.props.keyAccess, onMouseUp: this.onMouseUp, onClick: this.onClick, onDoubleClick: this.onDoubleClick, onContextMenu: this.onContextMenu, onDragEnter: this.dragEnterHandler, onDragLeave: this.dragLeaveHandler, onDragExit: this.dragLeaveHandler, onDragOver: this.dragOverHandler, onDrop: this.dropHandler, title: u("Trash"), dangerouslySetInnerHTML: { __html: n(1022) }, __source: { fileName: i, lineNumber: 198 } })) } }); e.exports = f }, function(e, t, n) { // ========================= // Function_724 // ========================= (function(t) { "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/tooltip/Tooltip.jsx", a = n(1), r = n(11), s = n(9), o = n(132), l = n(768), c = n(5), u = 4, A = function() { var e = document.getElementById("vivaldi-tooltip"); if (!e) { e = document.createElement("div"), e.id = "vivaldi-tooltip"; var t = document.getElementById("app"); t && t.appendChild(e) } return e }; l.addChangeListener(function() { l.allHidden() && r.unmountComponentAtNode(A()) }); var d = a.createClass({ mixins: [s], displayName: "Tooltip", static: { removeTimoutId: null }, getDefaultProps: function() { return { appearDelay: 200, disabled: !1 } }, getInitialState: function() { return { show: l.getShowTooltip(this.props.id), isDraggingOver: !1 } }, componentWillMount: function() { l.addChangeListener(this._onStoreChange) }, componentWillUnmount: function() { l.removeChangeListener(this._onStoreChange), t.nextTick(o.hideTooltip.bind(o, this.props.id)) }, componentDidMount: function() { this.target = A(), this.renderToolTip() }, componentDidUpdate: function() { this.renderToolTip() }, componentWillReceiveProps: function(e) { var n = this; !this.props.disabled && e.disabled && t.nextTick(function() { return o.hideTooltip(n.props.id) }) }, _onStoreChange: function() { this.setState({ show: l.getShowTooltip(this.props.id) }) }, onDragEnter: function() { o.hideTooltip(this.props.id, 0), this.setState({ isDraggingOver: !0 }) }, onDragLeave: function() { this.setState({ isDraggingOver: !1 }) }, onMouseEnter: function() { if (!this.props.disabled && !this.state.isDraggingOver) { var e = l.allHidden() ? this.props.appearDelay : 0; o.showTooltip(this.props.id, e) } }, onMouseLeave: function() { this.props.disabled || o.hideTooltip(this.props.id, this.props.disappearDelay) }, tooltipIsOpen: function() { return Boolean(this.target && this.target.firstChild && this.target.firstChild.classList.contains("tooltip")) }, getPosition: function(e, t) { var n = r.findDOMNode(this).firstChild.getBoundingClientRect(), i = void 0, a = void 0; if ("above" === this.props.placement) { var s = n.left + n.width / 2; i = s - e / 2, a = n.top - t - u } else if ("after" === this.props.placement) i = n.left + n.width + u, a = n.top; else if ("before" === this.props.placement) i = n.left - e - u, a = n.top; else { var o = n.left + n.width / 2; i = o - e / 2, a = n.top + n.height + u } return i < 0 && (i = 0), a < 0 && (a = 0), i + e > window.innerWidth && (i -= i + e - window.innerWidth), a + t > window.innerHeight && (a -= a + t - window.innerHeight), { positionLeft: i, positionTop: a } }, renderToolTip: function() { if (this.state.show && this.isMounted()) { var e; e = "after" === this.props.placement || "before" === this.props.placement ? "top 150ms" : "left 150ms"; var t = this.props.content(this.props.context), n = t.width, s = t.height, o = t.content, l = this.getPosition(n, s), u = l.positionLeft, A = l.positionTop, d = { left: u, top: A, pointerEvents: this.props.pointerEvents, width: n, height: s, transition: e }, h = c(this.props.className, { tooltip: !0 }); r.render(a.createElement("div", { className: h, style: d, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, __source: { fileName: i, lineNumber: 191 } }, o), this.target) } }, render: function() { var e = a.Children.only(this.props.children); return a.createElement("span", { onDragEnter: this.onDragEnter, onDragLeave: this.onDragLeave, onMouseEnter: this.onMouseEnter, onMouseLeave: this.onMouseLeave, __source: { fileName: i, lineNumber: 202 } }, e) } }); e.exports = d }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_725 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/BlockedContentNotificator.jsx", a = n(1), r = n(111), s = n(95), o = n(5), l = n(2), c = a.createClass({ displayName: "BlockedContentNotificator", propTypes: { page: a.PropTypes.object }, onNotificatorClicked: function() { r.getActiveWebView().allowBlockedInsecureContent(), s.resetPageHasBlockedContent(this.props.page) }, render: function() { var e = { "button-addressfield": !0, "permission-popup": !0, "is-blocking": !0 }, t = a.createElement("button", { className: o(e), onClick: this.onNotificatorClicked, title: l("Content from unauthenticated sources has been blocked. Click to allow loading."), dangerouslySetInnerHTML: { __html: n(986) }, __source: { fileName: i, lineNumber: 39 } }); return a.createElement("div", { className: "popupblocker addressfield-popup-container", __source: { fileName: i, lineNumber: 47 } }, t) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_726 // ========================= "use strict"; var i = Object.assign || function(e) { for (var t = 1; t < arguments.length; t++) { var n = arguments[t]; for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]) } return e }, a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/SiteInfoButton.jsx", r = n(1), s = n(111), o = n(7), l = o.omit, c = n(9), u = n(2), A = n(10), d = r.createClass({ displayName: "SiteInfoButton", mixins: [c], doActionShowPageInfo: function(e) { var t = this; s.getActiveWebView() && A.zoom.getVivaldiUIZoom(function(e) { var n = t.refs.siteInfoButton, i = n.getBoundingClientRect(), a = i.left, r = i.top; a *= e, r *= e; var o = n.offsetWidth * e, l = n.offsetHeight * e, c = a + window.screenX + Math.round(o / 2), u = r + window.screenY + l; s.getActiveWebView().showPageInfo({ left: Math.floor(c), top: Math.floor(u) }) }) }, render: function() { var e = "internal"; this.props.isEditingUrl || (e = "security_error" === this.props.sslState ? "insecure" : "http_show_warning" === this.props.sslState ? "warning" : "secure_no_ev" === this.props.sslState ? "secure" : "secure_with_ev" === this.props.sslState ? "certified" : this.props.isInternal ? "internal" : "web"); var t = l(this.props, ["isEditingUrl", "isInternal", "sslIssuer", "sslState"]); return r.createElement("button", i({ ref: "siteInfoButton", className: "button-addressfield addressfield-siteinfo " + e, title: u("Site info"), onClick: this.doActionShowPageInfo }, t, { __source: { fileName: a, lineNumber: 61 } }), r.createElement("div", { className: "siteinfo-symbol", __source: { fileName: a, lineNumber: 68 } }, r.createElement("svg", { height: "16", width: "16", viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", __source: { fileName: a, lineNumber: 70 } }, ("web" === e || "warning" === e) && r.createElement("g", { __source: { fileName: a, lineNumber: 77 } }, r.createElement("path", { d: "M8 1a7 7 0 1 0 0 14A7 7 0 0 0 8 1m0 2a5 5 0 1 1 0 10A5 5 0 0 1 8 3", __source: { fileName: a, lineNumber: 78 } }), r.createElement("path", { d: "M11 10.6v.4l-.5 1a1.3 1.3 0 0 1-.2.5L8.6 14v.2h.2c.2 0 .2 0 .2.2 0 0 0 .2-.2.2H8a.2.2 0 0 1-.2-.2v-2.2s0-.2.2-.2h.2a.2.2 0 0 0 .2-.3v-.2a.2.2 0 0 0-.2-.2H8a.2.2 0 0 1-.2-.2v-1a.2.2 0 0 0-.2 0h-.4a.7.7 0 0 1-.3 0L5 9a1.2 1.2 0 0 1-.3-.3l-.5-1a.4.4 0 0 0-.4 0A.4.4 0 0 1 4 7l-.4-1a1 1 0 0 1 0-.4V5s-.2-.3-.3 0H3a6 6 0 0 1 4.6-3v1.2l.5.3h1v2s0 .4.4.4h.3-1A.7.7 0 0 0 8 6l-.2.5a.5.5 0 0 0 0 .4v1h-.3a.2.2 0 0 1-.3 0V7a.2.2 0 0 0 0-.2h-.7a.2.2 0 0 0-.2.3v1a.5.5 0 0 0 .3.7L7 9a.7.7 0 0 0 .5.2h1.7l1.8 1v.4zm-.4-6.2a.7.7 0 0 1-.4 0 .2.2 0 0 1-.2 0v-.8a.2.2 0 0 0-.3-.2h-.3a.2.2 0 0 1-.2-.2v-1c1 0 2 .5 2.7 1 0 .2-2 1.2-2 1.2z", __source: { fileName: a, lineNumber: 79 } })), ("secure" === e || "certified" === e) && r.createElement("path", { d: "M12.2 6.7C12.2 4 10.5 2 8 2 5.8 2 3.8 4 3.8 6.7V7H3v7h10V7h-.8v-.3zM10.7 8H5.3V6.7c0-1.7 1.4-3 2.8-3 1.7 0 2.8 1.3 2.8 3V8z", __source: { fileName: a, lineNumber: 83 } }), "insecure" === e && r.createElement("path", { d: "M5.4 7v-.7c0-1.4 1-2.6 2.4-2.6 1 0 1-1.7 0-1.7h-.2c-2 0-3.8 2-3.8 4.3V7H3v7h10V7H5.4z", __source: { fileName: a, lineNumber: 86 } }), "internal" === e && r.createElement("path", { d: "M10.4 5c-.4-.8 0-1.8 1-2 .7 0 1.5.4 1.6 1.2a1.4 1.4 0 0 1-.2 1l-4 7c-.3.5-.7.8-1.2.8-.6 0-1-.2-1.3-.7L3.8 7.8 2.2 5c-.5-.8 0-2 1-2 .7 0 1 .2 1.4.7l1 2 1 1.4a2 2 0 0 0 1.7 1.5 2.2 2.2 0 0 0 2.3-2V6c0-.3 0-.6-.2-1z", __source: { fileName: a, lineNumber: 89 } }))), "certified" === e && r.createElement("span", { className: "siteinfo-text", __source: { fileName: a, lineNumber: 95 } }, this.props.sslIssuer), "warning" === e && r.createElement("span", { className: "siteinfo-text", __source: { fileName: a, lineNumber: 101 } }, u("Not Secure"))) } }); e.exports = d }, function(e, t, n) { // ========================= // Function_727 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/locationPermissionDialog.jsx", a = n(1), r = n(9), s = n(2), o = n(7), l = n(39), c = n(15), u = n(241), A = a.createClass({ displayName: "LocationPermissionDialog", mixins: [l, r], propTypes: { onDialogClosed: a.PropTypes.func, isBlocking: a.PropTypes.bool, isDecided: a.PropTypes.bool, onPermissionClicked: a.PropTypes.func, url: a.PropTypes.string }, handleClickOutside: function(e) { this.props.onDialogClosed() }, getTitle: function() { return this.props.isDecided ? this.props.isBlocking ? s("Website “$1” has been denied location access.", [this.props.url]) : s("Website “$1” is accessing your location.", [this.props.url]) : s("Website “$1” would like to access your location.", [this.props.url]) }, _privacyNotice: function() { c.openURL("https://location.services.mozilla.com/privacy") }, change: function() { c.openURL("chrome://settings/contentExceptions#location") }, renderAllowDenyQuery: function() { return a.createElement("section", { __source: { fileName: i, lineNumber: 46 } }, a.createElement("div", { className: "geo-notice", __source: { fileName: i, lineNumber: 47 } }, a.createElement("a", { href: "", title: "Mozilla Location Service Privacy Notice", onClick: this._privacyNotice, __source: { fileName: i, lineNumber: 48 } }, "Privacy Notice")), a.createElement("input", { type: "button", disabled: this.props.isAsking === !1, onClick: o.partial(this.props.onPermissionClicked, !1), value: s("Allow"), __source: { fileName: i, lineNumber: 53 } }), a.createElement("input", { type: "button", className: "primary", onClick: o.partial(this.props.onPermissionClicked, !0), value: s("Deny"), autoFocus: !0, __source: { fileName: i, lineNumber: 54 } })) }, render: function() { return a.createElement("section", { className: "addressfield-popup", __source: { fileName: i, lineNumber: 61 } }, a.createElement("header", { className: "addressfield-popup-header", __source: { fileName: i, lineNumber: 62 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 63 } }, this.getTitle())), a.createElement("section", { className: "addressfield-popup-content", __source: { fileName: i, lineNumber: 65 } }, this.props.isDecided === !1 && this.renderAllowDenyQuery() || a.createElement(u, { onDialogClosed: this.props.onDialogClosed, onChange: this.change, __source: { fileName: i, lineNumber: 68 } }))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_728 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/locationPermissionNotificator.jsx", a = n(1), r = n(9), s = n(727), o = n(95), l = n(5), c = a.createClass({ displayName: "LocationPermissionNotificator", mixins: [r], propTypes: { page: a.PropTypes.object, request: a.PropTypes.object }, getInitialState: function() { return { isDialogOpen: null === this.props.request.get("blocked") } }, componentWillReceiveProps: function(e) { null === this.props.request.get("blocked") && null === e.request.get("blocked") && this.setState({ isDialogOpen: !0 }) }, onNotificatorClicked: function(e) { this.setState({ isDialogOpen: !this.state.isDialogOpen }) }, onDialogClosed: function() { this.setState({ isDialogOpen: !1 }) }, onPermissionClicked: function(e) { var t = this.props.request.get("requestEvent"); e === !1 ? t.allow() : t.deny(), this.onDialogClosed(), o.setPermission(this.props.page, "geolocation", t, e) }, render: function() { var e = null === this.props.request.get("blocked") || this.props.request.get("blocked"), t = { "ignore-react-onclickoutside": !0, "button-addressfield": !0, "permission-location": !0, "is-allowing": !e, "is-blocking": e, "is-dialog-open": this.state.isDialogOpen }, r = null; return this.state.isDialogOpen === !0 && (r = a.createElement(s, { url: this.props.request.get("requestEvent").url, onPermissionClicked: this.onPermissionClicked, isBlocking: e, isDecided: null !== this.props.request.get("blocked"), onDialogClosed: this.onDialogClosed, __source: { fileName: i, lineNumber: 63 } })), a.createElement("div", { className: "locationpermission addressfield-popup-container", __source: { fileName: i, lineNumber: 74 } }, a.createElement("button", { className: l(t), onClick: this.onNotificatorClicked, dangerouslySetInnerHTML: { __html: n(987) }, __source: { fileName: i, lineNumber: 75 } }), r) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_729 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/mediaPermissionDialog.jsx", a = n(1), r = n(9), s = n(2), o = n(7), l = n(39), c = n(15), u = n(241), A = a.createClass({ displayName: "MediaPermissionDialog", mixins: [l, r], propTypes: { url: a.PropTypes.string, onDialogClosed: a.PropTypes.func, onPermissionClicked: a.PropTypes.func, isDecided: a.PropTypes.bool, isBlocking: a.PropTypes.bool }, handleClickOutside: function(e) { this.props.onDialogClosed() }, getTitle: function() { return this.props.isDecided ? this.props.isBlocking ? s("Website “$1” has been denied camera access.", [this.props.url]) : s("Website “$1” is accessing your camera.", [this.props.url]) : s("Website “$1” would like to access your camera.", [this.props.url]) }, change: function() { c.openURL("chrome://settings/contentExceptions#media-stream-camera") }, renderAllowDenyQuery: function() { return a.createElement("section", { __source: { fileName: i, lineNumber: 40 } }, a.createElement("input", { type: "button", className: "primary", onClick: o.partial(this.props.onPermissionClicked, !1), value: s("Allow"), autoFocus: !0, __source: { fileName: i, lineNumber: 41 } }), a.createElement("input", { type: "button", onClick: o.partial(this.props.onPermissionClicked, !0), value: s("Deny"), __source: { fileName: i, lineNumber: 46 } })) }, render: function() { return a.createElement("div", { className: "addressfield-popup", __source: { fileName: i, lineNumber: 55 } }, a.createElement("header", { className: "addressfield-popup-header", __source: { fileName: i, lineNumber: 56 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 57 } }, this.getTitle())), a.createElement("div", { className: "addressfield-popup-content", __source: { fileName: i, lineNumber: 59 } }, this.props.isDecided === !1 && this.renderAllowDenyQuery() || a.createElement(u, { onDialogClosed: this.props.onDialogClosed, onChange: this.change, __source: { fileName: i, lineNumber: 63 } }))) } }); e.exports = A }, function(e, t, n) { // ========================= // Function_730 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/mediaPermissionNotificator.jsx", a = n(1), r = n(9), s = n(729), o = n(95), l = n(5), c = a.createClass({ displayName: "MediaPermissionNotificator", mixins: [r], propTypes: { page: a.PropTypes.object, request: a.PropTypes.object }, getInitialState: function() { var e = this.props.request.get("blocked"); return { isDialogOpen: null === e } }, componentWillReceiveProps: function(e) { null === this.props.request.get("blocked") && null === e.request.get("blocked") && this.setState({ isDialogOpen: !0 }) }, onNotificatorClicked: function(e) { this.setState({ isDialogOpen: !this.state.isDialogOpen }) }, onDialogClosed: function() { this.setState({ isDialogOpen: !1 }) }, onPermissionClicked: function(e) { var t = this.props.request.get("requestEvent"); e === !1 ? t.allow() : t.deny(), this.onDialogClosed(), o.setPermission(this.props.page, "media", t, e) }, render: function() { var e = null === this.props.request.get("blocked") || this.props.request.get("blocked"), t = { "ignore-react-onclickoutside": !0, "button-addressfield": !0, "permission-camera": !0, "is-allowing": !e, "is-blocking": e, "is-dialog-open": this.state.isDialogOpen }, r = null; return this.state.isDialogOpen === !0 && (r = a.createElement(s, { url: this.props.request.get("requestEvent").url, onPermissionClicked: this.onPermissionClicked, isBlocking: e, isDecided: null !== this.props.request.get("blocked"), onDialogClosed: this.onDialogClosed, __source: { fileName: i, lineNumber: 64 } })), a.createElement("div", { className: "mediapermission addressfield-popup-container", __source: { fileName: i, lineNumber: 75 } }, a.createElement("button", { className: l(t), onClick: this.onNotificatorClicked, dangerouslySetInnerHTML: { __html: n(985) }, __source: { fileName: i, lineNumber: 76 } }), r) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_731 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/navigateButton.jsx", a = n(111), r = n(173), s = n(45), o = n(15), l = n(17), c = n(9), u = n(1), A = n(2), d = n(5), h = n(26), m = 750, p = u.createClass({ displayName: "NavigateButton", mixins: [c], getInitialState: function() { return { currentIndex: -1, timerId: 0 } }, doMouseUp: function(e) { if (clearTimeout(this.state.timerId), this.state.acceptMouseUp === !0) this.setState({ acceptMouseUp: !1 }), this.props.doAction(); else if (1 === e.button) switch (e.preventDefault(), this.props.type) { case "Back": this.openURLFromHistory(-1); break; case "Forward": this.openURLFromHistory(1); break; case "Rewind": var t = r.getRewindHistory(l.getActivePage()); t.length > 0 && o.openURL(t[0].url, { inCurrent: !1, inBackground: !0 }) } }, doMouseDown: function(e) { if ("-1" === this.props.keyAccess && e.preventDefault(), 0 === e.button) { this.setState({ acceptMouseUp: !0 }); var t = setTimeout(function() { this.setState({ acceptMouseUp: !1 }), this.showMenu(e, "bottom") }.bind(this), m); this.setState({ timerId: t }) } }, doKeyDown: function(e) { e.keyCode === s.KEY_ESCAPE && (this.setState({ acceptMouseUp: !1 }), clearTimeout(this.state.timerId)) }, showContextMenu: function(e) { e.persist(), e.preventDefault(), e.stopPropagation(), this.showMenu(e, "bottom") }, showMenu: function(e, t) { var n = this, i = void 0; ! function() { switch (n.props.type) { case "Back": case "Forward": a.getActiveWebView().getPageHistory(function(n, a) { var r = n; "Back" === this.props.type ? (a = a.slice(0, n), a = a.reverse()) : "Forward" === this.props.type && (a = a.slice(n + 1)); var s = 0; i = a.map(function(e) { var t = a[s].index - r; return { name: e.name, url: e.url, handler: this.onMenuActivated.bind(this, t), id: s++, mnemonic: !1 } }.bind(this)), h(i, null, t, this.refs.button, null)(e) }.bind(n)); break; case "Rewind": var s = r.getRewindHistory(l.getActivePage()), o = r.getRewindIndexes(l.getActivePage()); i = s.map(function(e, t) { return { name: e.name, url: e.url, handler: n.onMenuActivated.bind(n, o[t] * -1), id: t, mnemonic: !1 } }), h(i, null, t, n.refs.button, null)(e); break; default: throw new Error("Tried to create an unknown navigation button. Must be 'Back', 'Forward' or 'Rewind'.") } }() }, openURLFromHistory: function(e) { a.getActiveWebView().getPageHistory(function(t, n) { var i = t + e; (i >= 0 || i < n.length) && o.openURL(n[i].url, { inCurrent: !1, inBackground: !0 }) }.bind(this)) }, onMenuActivated: function(e) { a.getActiveWebView().go(e) }, render: function() { var e = d({ "button-toolbar": !0, back: "Back" === this.props.type, forward: "Forward" === this.props.type, rewind: "Rewind" === this.props.type }), t = void 0, a = void 0; if ("Back" === this.props.type) t = n(214), a = A("Go to previous page") + "\n" + A("Hold for history list"); else if ("Forward" === this.props.type) t = n(215), a = A("Go to next page") + "\n" + A("Hold for forward history list"); else { if ("Rewind" !== this.props.type) throw new Error("Tried to create an unknown navigation button. Must be 'Back', 'Forward' or 'Rewind'."); t = n(470), a = A("Rewind by visited domain") + "\n" + A("Hold for history domain list") } return u.createElement("button", { className: e, ref: "button", onContextMenu: this.showContextMenu, disabled: !this.props.canNavigate, title: a, tabIndex: this.props.keyAccess, onMouseUp: this.doMouseUp, onMouseDown: this.doMouseDown, onKeyDown: this.doKeyDown, dangerouslySetInnerHTML: { __html: t }, __source: { fileName: i, lineNumber: 190 } }) } }); e.exports = p }, function(e, t, n) { // ========================= // Function_732 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/notificationPermissionDialog.jsx", a = n(1), r = n(9), s = n(2), o = n(39), l = n(15), c = n(241), u = a.createClass({ displayName: "NotificationPermissionDialog", mixins: [o, r], propTypes: { onDialogClosed: a.PropTypes.func, isBlocking: a.PropTypes.bool, isDecided: a.PropTypes.bool, onPermissionClicked: a.PropTypes.func, url: a.PropTypes.string }, handleClickOutside: function(e) { this.props.onDialogClosed() }, getTitle: function() { return this.props.isDecided ? this.props.isBlocking ? s("Website “$1” has been denied showing notifications.", [this.props.url]) : s("Website “$1” is authorized to show notifications.", [this.props.url]) : s("Website “$1” would like to show notifications.", [this.props.url]) }, allow: function() { this.props.onPermissionClicked(!1) }, deny: function() { this.props.onPermissionClicked(!0) }, change: function() { l.openURL("chrome://settings/contentExceptions#notifications") }, renderAllowDenyQuery: function() { return a.createElement("section", { __source: { fileName: i, lineNumber: 49 } }, a.createElement("input", { type: "button", disabled: this.props.isAsking === !1, onClick: this.allow, value: s("Allow"), __source: { fileName: i, lineNumber: 50 } }), a.createElement("input", { type: "button", className: "primary", onClick: this.deny, value: s("Deny"), autoFocus: !0, __source: { fileName: i, lineNumber: 54 } })) }, render: function() { return a.createElement("section", { className: "addressfield-popup", __source: { fileName: i, lineNumber: 64 } }, a.createElement("header", { className: "addressfield-popup-header", __source: { fileName: i, lineNumber: 65 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 66 } }, this.getTitle())), a.createElement("section", { className: "addressfield-popup-content", __source: { fileName: i, lineNumber: 68 } }, this.props.isDecided === !1 && this.renderAllowDenyQuery() || a.createElement(c, { onDialogClosed: this.props.onDialogClosed, onChange: this.change, __source: { fileName: i, lineNumber: 71 } }))) } }); e.exports = u }, function(e, t, n) { // ========================= // Function_733 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/notificationPermissionNotificator.jsx", a = n(1), r = n(9), s = n(732), o = n(95), l = n(5), c = a.createClass({ displayName: "NotificationPermissionNotificator", mixins: [r], propTypes: { page: a.PropTypes.object, request: a.PropTypes.object }, getInitialState: function() { return { isDialogOpen: null === this.props.request.get("blocked") } }, componentWillReceiveProps: function(e) { null === this.props.request.get("blocked") && null === e.request.get("blocked") && this.setState({ isDialogOpen: !0 }) }, onNotificatorClicked: function(e) { this.setState({ isDialogOpen: !this.state.isDialogOpen }) }, onDialogClosed: function() { this.setState({ isDialogOpen: !1 }) }, onPermissionClicked: function(e) { var t = this.props.request.get("requestEvent"); e === !1 ? t.allow() : t.deny(), this.onDialogClosed(), o.setPermission(this.props.page, "notifications", t, e) }, render: function() { var e = null === this.props.request.get("blocked") || this.props.request.get("blocked"), t = { "ignore-react-onclickoutside": !0, "button-addressfield": !0, "is-allowing": !e, "is-blocking": e, "is-dialog-open": this.state.isDialogOpen }, r = null; return this.state.isDialogOpen === !0 && (r = a.createElement(s, { url: this.props.request.get("requestEvent").url, onPermissionClicked: this.onPermissionClicked, isBlocking: e, isDecided: null !== this.props.request.get("blocked"), onDialogClosed: this.onDialogClosed, __source: { fileName: i, lineNumber: 62 } })), a.createElement("div", { className: "addressfield-popup-container", __source: { fileName: i, lineNumber: 73 } }, a.createElement("button", { className: l(t), onClick: this.onNotificatorClicked, dangerouslySetInnerHTML: { __html: n(988) }, __source: { fileName: i, lineNumber: 74 } }), r) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_734 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/popupblockerDialog.jsx", a = n(1), r = n(2), s = n(39), o = a.createClass({ displayName: "PopupBlockerDialog", mixins: [s], propTypes: { onDialogClosed: a.PropTypes.func, onShouldBlockClicked: a.PropTypes.func, blockedPopups: a.PropTypes.object, shouldBlockPopups: a.PropTypes.bool, onPopupAllowed: a.PropTypes.func }, getInitialState: function() { return {} }, handleClickOutside: function(e) { this.props.onDialogClosed() }, onAllowBlockedClicked: function(e, t) { t.preventDefault(), this.props.onPopupAllowed(e) }, renderItem: function(e) { return a.createElement("a", { className: "popupblocker-blocked-page", onClick: this.onAllowBlockedClicked.bind(this, e), key: e.targetUrl + e.timeStamp, title: e.targetUrl, href: e.targetUrl, __source: { fileName: i, lineNumber: 31 } }, e.targetUrl) }, renderItems: function(e) { var t = this; return a.createElement("div", { className: "popupblocker-blocked-pages", __source: { fileName: i, lineNumber: 43 } }, e.map(function(e) { return t.renderItem(e) })) }, onShouldBlockClicked: function(e) { this.props.onShouldBlockClicked(e) }, renderAlwaysBlockQuery: function() { return a.createElement("section", { className: "dialog-footer", __source: { fileName: i, lineNumber: 55 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 56 } }, a.createElement("input", { type: "radio", name: "blocked", value: "false", defaultChecked: this.props.shouldBlockPopups !== !1, onChange: this.onShouldBlockClicked.bind(this, !0), __source: { fileName: i, lineNumber: 57 } }), r("Block Pop-ups")), a.createElement("label", { __source: { fileName: i, lineNumber: 62 } }, a.createElement("input", { type: "radio", name: "blocked", value: "true", defaultChecked: this.props.shouldBlockPopups === !1, onChange: this.onShouldBlockClicked.bind(this, !1), __source: { fileName: i, lineNumber: 63 } }), r("Always Allow"))) }, render: function() { return this.props.blockedPopups.size > 0 ? a.createElement("div", { tabIndex: "0", className: "addressfield-popup", __source: { fileName: i, lineNumber: 75 } }, a.createElement("header", { className: "addressfield-popup-header", __source: { fileName: i, lineNumber: 77 } }, a.createElement("h1", { __source: { fileName: i, lineNumber: 78 } }, r("Blocked Pop-up Pages"))), a.createElement("div", { className: "addressfield-popup-content", __source: { fileName: i, lineNumber: 80 } }, this.renderItems(this.props.blockedPopups)), this.renderAlwaysBlockQuery()) : null } }); e.exports = o }, function(e, t, n) { // ========================= // Function_735 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/popupblockerNotificator.jsx", a = n(1), r = n(734), s = n(4), o = n(36), l = n(5), c = a.createClass({ displayName: "PopupBlockerNotificator", mixins: [], propTypes: { url: a.PropTypes.string, blockedPopups: a.PropTypes.object, onPopupAllowed: a.PropTypes.func, onDialogClosed: a.PropTypes.func }, getInitialState: function() { return { isDialogOpen: !1, shouldBlockPopups: !0 } }, componentWillMount: function() { this.props.url && s.contentSettings.popups.get({ primaryUrl: this.props.url }, function(e) { if (s.runtime.lastError) return void console.warn("ERROR getting content settings for popups. Original message:\n" + s.runtime.lastError.message); if (e) { var t = "allow" !== e.setting; this.setState({ shouldBlockPopups: t }) } }.bind(this)) }, onNotificatorClicked: function(e) { this.setState({ isDialogOpen: !this.state.isDialogOpen }) }, onDialogClosed: function() { this.setState({ isDialogOpen: !1 }) }, onShouldBlockClicked: function(e) { var t = o.parse(this.props.url), n = [t.protocol]; t.slashes && n.push("//"), n.push(t.host), n.push("/*"); var i = n.join(""); t = null, s.contentSettings.popups.set({ primaryPattern: i, setting: e === !1 ? "allow" : "block" }, function() { this.setState({ shouldBlockPopups: e }) }.bind(this)) }, render: function() { var e = { "button-addressfield": !0, "permission-popup": !0, "is-blocking": this.state.shouldBlockPopups === !0, "is-allowing": this.state.shouldBlockPopups === !1, "is-dialog-open": this.state.isDialogOpen }, t = null; this.state.isDialogOpen === !0 && (t = a.createElement(r, { shouldBlockPopups: this.state.shouldBlockPopups, onShouldBlockClicked: this.onShouldBlockClicked, blockedPopups: this.props.blockedPopups, onPopupAllowed: this.props.onPopupAllowed, onDialogClosed: this.onDialogClosed, __source: { fileName: i, lineNumber: 84 } })); var s = null; return this.props.blockedPopups.size > 0 && (s = a.createElement("button", { className: l(e), onClick: this.onNotificatorClicked, dangerouslySetInnerHTML: { __html: n(989) }, __source: { fileName: i, lineNumber: 96 } })), a.createElement("div", { className: "popupblocker addressfield-popup-container", __source: { fileName: i, lineNumber: 103 } }, s, t) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_736 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/typedhistory.jsx", a = n(1), r = n(11), s = n(9), o = n(171), l = n(65), c = n(39), u = n(2), A = n(7), d = n(5), h = a.createClass({ displayName: "TypedHistory", mixins: [s, c], _ignoreMouseMove: !1, handleClickOutside: function(e) { l.hideTypedHistory() }, onLinkItemClicked: function(e, t) { this.props.onLinkItemClicked(e) }, onSearchClicked: function() { this.props.defaultSearchEngine && this.props.defaultSearchEngine.Url && this.props.onSearchClicked(this.props.pattern, this.props.defaultSearchEngine.Url) }, getNumberOfSelectableItems: function() { return this.props.results.length || 0 }, getCurrentValue: function(e) { var t = r.findDOMNode(this); if (t) { if ("number" != typeof e) { var n = t.querySelector(".highlight"); return n && n.dataset.url ? n.dataset.url : this.props.displayUrl } var i = t.querySelectorAll(".omni-clickable"); if (e >= 0 && e < i.length) return i[e].dataset.url } return "" }, onDeleteHistoryItem: function(e, t) { t.preventDefault(), t.stopPropagation(), l.deleteTypedHistory(e) }, deleteCurrentItem: function() { l.deleteTypedHistory(this.getCurrentValue(this.props.selectionIndex)) }, onMouseOver: function(e) { if (!this._ignoreMouseMove) { var t = A.findIndex(document.getElementsByClassName("omni-clickable"), function(t) { return t === e.target.parentNode }); t >= 0 && this.props.setAutocompleteHighlight(t, !1) } }, onScrolled: function(e) { var t = this; this._ignoreMouseMove = !0, setTimeout(function() { return t._ignoreMouseMove = !1 }, 100) }, renderLinkItem: function(e) { var t = d({ "omni-clickable": !0, highlight: this._linkItemCount === this.props.selectionIndex }); return this._linkItemCount++, a.createElement("div", { key: e.url, "data-type": o.OMNI_TYPE_TYPED_HISTORY, "data-url": e.url, className: t, onMouseUp: this.onLinkItemClicked.bind(this, e), __source: { fileName: i, lineNumber: 103 } }, a.createElement("img", { className: "favicon", src: "chrome://favicon/" + e.url, __source: { fileName: i, lineNumber: 110 } }), a.createElement("span", { className: "title", __source: { fileName: i, lineNumber: 111 } }, e.url), a.createElement("span", { className: "erase-from-history", title: u("Delete history item"), onMouseUp: this.onDeleteHistoryItem.bind(this, e.url), dangerouslySetInnerHTML: { __html: n(81) }, __source: { fileName: i, lineNumber: 112 } })) }, renderResults: function(e) { return a.createElement("section", { className: "filter-typedhistory", __source: { fileName: i, lineNumber: 124 } }, a.createElement("label", { __source: { fileName: i, lineNumber: 125 } }, u("Typed history")), e.map(this.renderLinkItem)) }, render: function() { return Array.isArray(this.props.results) && 0 !== this.props.results.length ? (this._linkItemCount = 0, a.createElement("div", { className: "urlSearch", onMouseOver: this.onMouseOver, onScroll: this.onScrolled, __source: { fileName: i, lineNumber: 140 } }, this.renderResults(this.props.results))) : null } }); e.exports = h }, function(e, t, n) { // ========================= // Function_737 // ========================= (function(t) { "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/urlfield/urlbar.jsx", a = n(1), r = n(11), s = n(725), o = n(40), l = n(585), c = n(603), u = n(129), A = n(173), d = n(133), h = n(27), m = n(728), p = n(389), f = n(730), g = n(731), _ = n(95), v = n(112), b = n(733), N = n(380), E = n(15), S = n(647), T = n(735), y = n(649), C = n(390), I = n(726), O = n(392), w = n(132), D = n(736), k = n(136), M = n(65), L = n(97), P = n(6), R = n(3), x = n(13), B = n(55), U = n(87), F = n(2), H = n(4), V = n(5), W = n(778), G = n(90), K = n(179), j = n(7), z = n(250), Y = n(251), J = n(36), Q = n(20).urls, Z = n(772), q = Z.isPath, X = Z.win32PathToFileUrl, $ = n(51), ee = $.isTrashed, te = n(46), ne = te.isValidURL, ie = ["id", "favIcon", "favIconUrl", "url", "active", "title", "extData"], ae = ["thumbnail"], re = "Win32" === navigator.platform, se = G("urlbar"), oe = 2e3, le = a.createClass({ displayName: "UrlBar", mixins: [x], vivaldiSettingsKeys: ["ADDRESS_BAR_AUTOCOMPLETE_ENABLED", "ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS", "ADDRESS_BAR_AUTOCOMPLETE_TLD", "ADDRESS_BAR_CUTCOPY_ENCODED", "ADDRESS_BAR_OMNIDROPDOWN_ENABLED", "ADDRESS_BAR_SELECT_ON_CLICK", "ADDRESS_BAR_SHOW_FULL_URL", "ADDRESS_BAR_SUGGEST_ENABLED", "ADDRESS_BAR_SUGGEST_NICKNAME_ENABLED", "ADDRESS_BAR_URL_OPEN_SHORTCUT", "DEFAULT_SEARCH_ENGINE", "EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED", "EXTENSIONS_TOOLBAR_VISIBLE", "KEY_ACCESS", "SEARCH_FIELD_ENABLED", "SEARCH_FIELD_OPEN_NEW_TAB", "SEARCH_FIELD_SUGGEST_ENABLED", "SEARCH_FIELD_TYPED_HISTORY", "SHOW_ADDRESS_BAR", "SHOW_FFW_RWD_BUTTONS", "URLBAR_SEARCH_DISABLED", "URLFIELD_TYPED_HISTORY_ENABLED"], getInitialState: function() { var e = this.props.page; return Object.assign({ page: e, createBookmarkCallout: !1, showOmniDropdown: !1, focused: !1, isBookmarked: !1, isReaderableActive: !1, isReaderable: !1, searchEnginesCleaned: Array.isArray(this.props.searchEngines) ? W(this.props.searchEngines) : void 0 }, this.getUrlbarStoreState(e), this.getSearchFieldStoreState(e), this.getNavigationStoreState(e), this.getFastForwardStoreState(e)) }, shouldComponentUpdate: function(e, t) { var n = function(e, t, n) { var i = t[e], a = n[e]; return !!(i === a || h.is(i, a) || "page" === e && ie.every(function(e) { return "extData" === e ? ae.every(function(e) { return h.is(i.getIn(["extData", e]), a.getIn(["extData", e])) }) : h.is(i.get(e), a.get(e)) })) }; return !Y(e, this.props, n) || !Y(t, this.state, n) }, componentWillReceiveProps: function(e) { var n = this, i = e.page, a = this.state.page.url !== i.url, r = this.state.page.id !== i.id; r && this.prepareNewPage(i), this.setState({ page: i }, function() { a && (n._setBookmarkedState(i.url), r || t.nextTick(function() { M.clearUrlfieldState(i.id), _.resetPermissions(i) })) }), Array.isArray(e.searchEngines) && this.props.searchEngines !== e.searchEngines && this.setState({ searchEnginesCleaned: W(e.searchEngines) }) }, componentDidUpdate: function(e, t, n) { this.state.page.get("id") !== t.page.get("id") && this.updateFocus(this.state.page, !0) }, componentWillMount: function() { p.addChangeListener(this._onMainStoreChanged), U.addChangeListener(this._onWebpageviewStoreChanged), O.addChangeListener(this._onTabStoreChanged), L.addChangeListener(this._onUrlbarStoreChanged), C.addChangeListener(this._onSearchFieldStoreChanged), v.addChangeListener(this._onNavigationStoreChanged), A.addChangeListener(this._onFastForwardStoreChanged), this._setBookmarkedState(this.state.page.get("url")), this.onSearchAddTypedHistory = j.partialRight(this.onSearch, { addTypedHistory: !0 }), this.onSearchAddTypedSearchHistory = j.partialRight(this.onSearch, { addTypedSearchHistory: !0 }) }, componentDidMount: function() { this.updateFocus(this.state.page) }, componentWillUnmount: function() { p.removeChangeListener(this._onMainStoreChanged), U.removeChangeListener(this._onWebpageviewStoreChanged), O.removeChangeListener(this._onTabStoreChanged), L.removeChangeListener(this._onUrlbarStoreChanged), C.removeChangeListener(this._onSearchFieldStoreChanged), v.removeChangeListener(this._onNavigationStoreChanged), A.removeChangeListener(this._onFastForwardStoreChanged) }, updateStoresForPage: function(e) { this.setState(Object.assign({}, this.getUrlbarStoreState(e), this.getSearchFieldStoreState(e), this.getNavigationStoreState(e), this.getFastForwardStoreState(e))) }, getUrlbarStoreState: function(e) { return Object.assign({ showTypedHistory: L.showTypedHistory(), typedHistory: L.getTypedHistory() }, L.getUrlfieldState(e)) }, getSearchFieldStoreState: function(e) { return { searchText: C.getSearchText(e), currentSearchEngine: C.getSearchEngine(e) } }, getNavigationStoreState: function(e) { return { navigationInfo: v.getNavigationInfo(e).delete("trigger"), sslInfo: v.getSSLInfo(e), blockedPopups: v.getBlockedPopups(e), permissionInfo: v.getPermissionInfo(e), blockedPageContent: v.getblockedPageContents(e) } }, getFastForwardStoreState: function(e) { return { forwardUrl: A.getFastForwardUrl(e), rewindRelativeIndex: A.getRewindRelativeIndex(e) } }, _getFavIconKey: function() { return this.state.page.get("incognito") ? "favIcon" : "favIconUrl" }, _setBookmarkedState: function(e) { var t = this; return e ? void H.bookmarks.search({ url: e }, function(e) { t.isMounted() && (e && e.length > 0 && !ee(e[0]) ? t.setState({ isBookmarked: !0 }) : t.setState({ isBookmarked: !1 })) }) : void this.setState({ isBookmarked: !1 }) }, _onUrlbarStoreChanged: function() { this.setState(this.getUrlbarStoreState(this.state.page)) }, _onSearchFieldStoreChanged: function() { this.setState(this.getSearchFieldStoreState(this.state.page)) }, _onNavigationStoreChanged: function() { this.setState(this.getNavigationStoreState(this.state.page)) }, _onFastForwardStoreChanged: function() { this.setState(this.getFastForwardStoreState(this.state.page)) }, focusAddressField: function() { var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0]; if (this.isMounted()) { var t = r.findDOMNode(this.refs.urlField); se("focus addressfield. Select?", e, document.activeElement), document.activeElement !== t && t.focus(), e === !0 && t.select() } }, blurAddressField: function(e) { if (this.isMounted()) { var t = r.findDOMNode(this.refs.urlField); t.blur() } this.hideDropdown() }, getDisplayURL: function(e) { if (e) { var t = K(e.url); if (t.length > oe && (t = t.substr(0, oe)), "" !== t) { if (this.state.ADDRESS_BAR_SHOW_FULL_URL === !0) return t; if (!e.url.match(/^https*:/)) return t; var n = t.replace(/^(.*?:\/\/\/*)(.*)$/, "$2"); return this.state.focused !== !0 ? n.replace(/(.*?)\/*[#?].*/, "$1") : n } } return "" }, hideTooltip: function() { w.clearTooltip() }, onSearch: function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; t && (n.useSearchEngineURL = t, M.goSearchURL(e, n), this.hideDropdown()) }, _onMainStoreChanged: function(e) { switch (e.action) { case "showPageInfo": this.doActionShowPageInfo(e.event) } }, _onTabStoreChanged: function(e) { "newTab" !== e.action && "closeTab" !== e.action || this.hideDropdown() }, _onWebpageviewStoreChanged: function(e) { var n = this; e.type === P.WEBPAGEVIEW_ACTIONS ? "addBookmark" === e.action ? this.onCreateBookmarkCallout() : "focusAddressField" === e.action ? this.focusAddressField(!0) : "urlPasteAndGo" === e.action && this.urlPasteAndGo(e.modifiers) : e.type === P.URLFIELD_BLUR && t.nextTick(function() { return n.hideDropdown() }) }, updateFocus: function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; if (e) switch (z(e, e.get("url"), t)) { case "urlField": this.focusAddressField(); break; case "urlFieldSelected": this.focusAddressField(!0) } }, _onPasteAndGoUrlPasted: function(e, n) { var i = this; t.nextTick(function() { try { var t = n.target.value.trim(); if (t) { var a = { addTypedHistory: !0, addTypedSearchHistory: !1, enableSearch: !0 }; e && Object.assign(a, o.getOpenOptionsFromEvent(e)), M.go(t, a) } } finally { n.preventDefault(), n.stopPropagation(), n.target.removeEventListener("paste", i._onPasteAndGoUrlPasted, !0), n.target.parentNode.removeChild(n.target) } }) }, urlPasteAndGo: function(e) { var t = document.createElement("input"), n = r.findDOMNode(this.refs.urlField), i = n.value, a = n.selectionStart, s = n.selectionEnd, o = document.activeElement === n; o && (t.value = i, t.setSelectionRange(a, s), this.blurAddressField()), t.style.width = t.style.height = "1px", t.style.position = "absolute", t.style.top = t.style.left = "-1px", t.addEventListener("paste", this._onPasteAndGoUrlPasted.bind(this, e), !0), document.body.appendChild(t), t.focus(), document.execCommand("paste") }, onFocus: function() { this.setState({ focused: !0 }) }, onBlur: function() { this.setState({ focused: !1 }) }, maybeCopyScheme: function(e) { var t = J.parse(e, !1, !0), n = J.parse(K(this.state.page.url)); if (!t.protocol && n.protocol && n.protocol.startsWith("https")) { var i = J.parse(n.protocol + (n.slashes ? "//" : "") + e); if (i.host === n.host) return J.format(i) } return e }, urlFieldGo: function(e, t) { var n = r.findDOMNode(this.refs.urlField).value.trim(); if (n && 0 !== n.length) { if ("/." === n) return M.go("http://slashdot.org", t), void this.updateFocus(this.state.page); if (q(n, re)) return M.go(X(n), t), void this.updateFocus(this.state.page); var i = Q.getUrl(n); this.hideDropdown(), i.includes(" ") || (i = this.maybeCopyScheme(i)); var a = this._getTypedSearchEngine(this.props.searchEngines, this.state.editUrl), s = a || this.state.URLBAR_SEARCH_DISABLED !== !0; M.go(i, Object.assign({}, t, { enableSearch: s, addTypedHistory: !0, addTypedSearchHistory: !1 })) } }, onUrlFieldDrop: function(e) { var t = e.dataTransfer.getData("text/uri-list"); if (t.length > 0) { var n = t.split("\n"); n.length > 0 && M.go(n) } else { var i = e.dataTransfer.getData("text/plain"); i.length > 0 && (ne(i) ? M.go(i) : (M.setUrlfieldState(this.state.page.id, { editUrl: i, selectionStart: 0, selectionEnd: i.length }), this.focusAddressField())) } }, doActionBack: function(e) { B.back() }, doActionForward: function(e) { B.forward() }, doActionFastForward: function(e) { u.navigateFastforward(this.state.page) }, doActionFastRewind: function(e) { this.state.rewindRelativeIndex > 0 && B.go(this.state.rewindRelativeIndex * -1) }, onReloadMouseUp: function(e) { this.cancelPaste(e), 1 === e.button && 0 === e.buttons && this.doActionReload(e) }, doActionReload: function(e) { 0 === e.button ? this.state.navigationInfo && (this.state.navigationInfo.get("isLoading") ? B.stop() : B.reload(), this.updateFocus(this.state.page)) : 1 === e.button && E.clonePage(this.props.page) }, onHomeMouseUp: function(e) { this.cancelPaste(e), 1 === e.button && 0 === e.buttons && this.doActionHome(e) }, doActionHome: function(e) { var t = {}; t.inCurrent = 1 !== e.button, t.inBackground = 1 === e.button, E.showHomepage(t) }, cancelPaste: function(e) { 1 === e.button && e.preventDefault() }, cancelDefault: function(e) { "-1" === this.state.KEY_ACCESS && e.preventDefault() }, setUrlDragEvent: function(e) { var t = document.createElement("img"); t.src = this.state.page.get(this._getFavIconKey()) || "/resources/default_favicon_64.png", e.dataTransfer.setDragImage(t, t.width - t.width / 3, t.height - t.height / 3), e.dataTransfer.setData("text/uri-list", this.state.page.url), e.dataTransfer.setData("text/plain", this.state.page.url), e.dataTransfer.setData("vivaldi/x-title", this.state.page.get("title")) }, setAutocompleteHighlight: function(e, t) { if (this.refs.omniDropdown) { if (t) if (e !== -1) { var n = this.refs.omniDropdown.getCurrentValue(e); M.setUrlfieldState(this.state.page.id, { editUrl: n, selectionStart: n.length, selectionEnd: n.length }) } else { var i = this.refs.urlField.getTypedURL(); M.setUrlfieldState(this.state.page.id, { editUrl: i }) } return this.setState({ dropdownSelectionIndex: e }), !0 } return !1 }, showOmniDropdown: function(e, t) { if (this.state.ADDRESS_BAR_OMNIDROPDOWN_ENABLED !== !1) { var n = {}; document.activeElement === r.findDOMNode(this.refs.urlField) && (this.state.showOmniDropdown !== !0 && (se("showing dropdown"), this.state.showTypedHistory !== !1 && this.hideDropdown(), Object.assign(n, { showOmniDropdown: !0 })), Object.assign(n, { urlFieldSearchPattern: t, urlFieldSearchResults: e, dropdownSelectionIndex: -1 }), se("updating dropdown state", n), this.setState(n)) } }, hideDropdown: function() { this.state.showOmniDropdown !== !1 && (se("hiding dropdown"), this.setState({ showOmniDropdown: !1, dropdownSelectionIndex: -1 })), this.state.showTypedHistory !== !1 && (this.setState({ showTypedHistory: !1, dropdownSelectionIndex: -1 }), t.nextTick(function() { return M.hideTypedHistory() })) }, onOmniDropdownItemClicked: function(e, t) { this.refs.urlField.revertUrl(this.state.page.id), this.refs.urlField.refs.urlInput.blur(), Array.isArray(e.urls) ? M.go(e.urls) : M.go(e.url, { enableSearch: !0, addTypedHistory: !0 }), this.hideDropdown() }, onOmniDropdownItemDelete: function(e) { var t = this._getDropdown(), n = t.deleteCurrentItem; "function" == typeof n && n() }, onDeleteHistoryItem: function(e) { M.deleteHistory(e), this.setState({ urlFieldSearchResults: this.state.urlFieldSearchResults.filter(function(t) { return t.url !== e }) }) }, onDeleteTypedHistoryItem: function(e) { M.deleteTypedHistory(e) }, toggleShowTypedHistory: function(e) { "function" == typeof e.preventDefault && e.preventDefault(), this.state.showTypedHistory === !0 ? M.hideTypedHistory() : (this.focusAddressField(), this.hideDropdown(), M.showTypedHistory()) }, onReaderableClicked: function(e) { this.state.isReaderableActive === !0 ? M.readerableInactive(this.state.page) : M.readerableActive(this.state.page) }, onCreateBookmarkCallout: function(e) { var t = this.state.page; if (t.get("active")) { if (!Q.isBookmarkablePage(t)) return; t.get("url") && this.setState({ createBookmarkCallout: !0 }) } }, onCloseCreateBookmarkCallout: function() { this._setBookmarkedState(this.state.page.get("url")), this.setState({ createBookmarkCallout: !1 }) }, prepareNewPage: function(e) { this.updateStoresForPage(e), this.updateFocus(e, !0), this.hideDropdown() }, forceRendering: function(e) { this.setState({ pageUpdated: !0 }) }, _getTypedSearchEngine: function(e, t) { if (!("string" != typeof t || t.length < 1)) return e.find(function(e) { var n = e.Keyword; return t.toLowerCase().startsWith(n.toLowerCase() + " ") }) }, _getDefaultSearchEngine: function(e) { var t = this; return this.state.DEFAULT_SEARCH_ENGINE ? e.find(function(e) { return e.Id === parseInt(t.state.DEFAULT_SEARCH_ENGINE) }) : e[0] }, onPopupAllowed: function(e) { this.state.page && (_.removeBlockedPopupEvent(this.state.page, e), this.refs.popupBlockerNotificator.onDialogClosed(), e.window.accept(window.vivaldiWindowId)) }, toggleExtensionToolbar: function(e) { e.preventDefault(), R.set({ EXTENSIONS_TOOLBAR_VISIBLE: !this.state.EXTENSIONS_TOOLBAR_VISIBLE }) }, _isEditingUrl: function() { if ("" === this.state.editUrl) return !0; if (null == this.state.editUrl) return !1; if (this.state.page && this.refs.urlField) { var e = this.refs.urlField.getTypedURL(); return "string" == typeof e && "" !== e && this.getDisplayURL(this.state.page) !== e } return !1 }, _getDropdown: function() { return this.refs.omniDropdown }, render: function() { var e = { "bookmark-bar": !1, toolbar: !0, "toolbar-addressbar": !0, search: this.state.SEARCH_FIELD_ENABLED }, t = V({ "button-addressfield": !0, "reader-mode": !0, active: this.state.isReaderableActive }), r = this.state.searchEnginesCleaned || [], o = this._getTypedSearchEngine(this.props.searchEngines, this.state.editUrl), u = this._getDefaultSearchEngine(r), A = Q.isBookmarkablePage(this.state.page), h = Q.isInternalPage(this.state.page), p = Q.isInternalPage(this.state.page), _ = F(this.state.typedHistory.length > 0 ? "Show typed history" : "Enter an address to activate typed history"); return a.createElement(d, { focusName: "focus_addressbar", className: V(e), ref: "urlbar", __source: { fileName: i, lineNumber: 929 } }, a.createElement(g, { type: "Back", ref: "webpageview_nav_back", keyAccess: this.state.KEY_ACCESS, canNavigate: this.state.navigationInfo.get("canGoBack"), doAction: this.doActionBack, __source: { fileName: i, lineNumber: 934 } }), a.createElement(g, { type: "Forward", ref: "webpageview_nav_forward", keyAccess: this.state.KEY_ACCESS, canNavigate: this.state.navigationInfo.get("canGoForward"), doAction: this.doActionForward, __source: { fileName: i, lineNumber: 940 } }), this.state.SHOW_FFW_RWD_BUTTONS && a.createElement(g, { type: "Rewind", ref: "webpageview_nav_rew", keyAccess: this.state.KEY_ACCESS, canNavigate: Number.isInteger(this.state.rewindRelativeIndex) && this.state.rewindRelativeIndex > 0, doAction: this.doActionFastRewind, __source: { fileName: i, lineNumber: 949 } }), this.state.SHOW_FFW_RWD_BUTTONS && a.createElement("button", { className: "button-toolbar next", ref: "webpageview_nav_ffw", tabIndex: this.state.KEY_ACCESS, title: this.state.forwardUrl ? F("Fast Forward - $1", [this.state.forwardUrl]) : F("Fast Forward"), onMouseDown: this.cancelDefault, onMouseUp: this.cancelPaste, onClick: this.doActionFastForward, disabled: !this.state.forwardUrl, dangerouslySetInnerHTML: { __html: n(468) }, __source: { fileName: i, lineNumber: 960 } }), a.createElement("button", { className: V("button-toolbar", "reload", { loading: this.state.navigationInfo.get("isLoading") && !h }), tabIndex: this.state.KEY_ACCESS, disabled: !p && (!this.state.navigationInfo.get("canNavigate") || h), title: F(this.state.navigationInfo.get("isLoading") && !h ? "Stop" : "Reload current page"), onMouseDown: this.cancelDefault, onMouseUp: this.onReloadMouseUp, onClick: this.doActionReload, __source: { fileName: i, lineNumber: 974 } }, this.state.navigationInfo.get("isLoading") && !h ? a.createElement("span", { dangerouslySetInnerHTML: { __html: n(974) }, __source: { fileName: i, lineNumber: 987 } }) : a.createElement("span", { dangerouslySetInnerHTML: { __html: n(312) }, __source: { fileName: i, lineNumber: 990 } })), a.createElement("button", { className: "button-toolbar home", ref: "webpageview_nav_home", title: F("Go to homepage"), tabIndex: this.state.KEY_ACCESS, onMouseDown: this.cancelDefault, onMouseUp: this.onHomeMouseUp, onClick: this.doActionHome, dangerouslySetInnerHTML: { __html: n(469) }, __source: { fileName: i, lineNumber: 995 } }), a.createElement("div", { ref: "addressfield", className: V({ addressfield: !0, focused: this.state.focused }), __source: { fileName: i, lineNumber: 1004 } }, a.createElement(S, { page: this.state.page, ref: "webpageview_loadprogress", open: !h, __source: { fileName: i, lineNumber: 1011 } }), this.props.incognito === !0 && a.createElement("div", { className: "private-window-indicator", __source: { fileName: i, lineNumber: 1016 } }, a.createElement("svg", { viewBox: "0 0 16 16", xmlns: "http://www.w3.org/2000/svg", __source: { fileName: i, lineNumber: 1017 } }, a.createElement("path", { d: "M7 14h2v-1h1v-1H9v-1h1v-1H9V8h3V3H4v5h3v6zM6 5h4v1H6V5z", __source: { fileName: i, lineNumber: 1018 } }))), o ? a.createElement("img", { className: "searchengine-icon", src: o.Image, __source: { fileName: i, lineNumber: 1024 } }) : a.createElement(I, { tabIndex: this.state.KEY_ACCESS, isEditingUrl: this._isEditingUrl(), draggable: !h, isInternal: h, sslIssuer: this.state.sslInfo.get("issuer"), sslState: this.state.sslInfo.get("state"), onDragStart: this.setUrlDragEvent, __source: { fileName: i, lineNumber: 1026 } }), a.createElement("form", { __source: { fileName: i, lineNumber: 1036 } }, a.createElement(k, { displayUrl: this.getDisplayURL(this.state.page), autocompletionEnabled: this.state.ADDRESS_BAR_AUTOCOMPLETE_ENABLED, autocompletionPreferBookmarks: this.state.ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS, encodeCutCopy: this.state.ADDRESS_BAR_CUTCOPY_ENCODED, editUrl: this.state.editUrl, fieldGo: this.urlFieldGo, hideDropdown: this.hideDropdown, isActive: this.state.page.get("active") || !1, isOmniDropdownOpen: this.state.showOmniDropdown, isTypedHistoryOpen: this.state.showTypedHistory, selectionIndex: this.state.dropdownSelectionIndex, setAutocompleteHighlight: this.setAutocompleteHighlight, onBlur: this.onBlur, onDrop: this.onUrlFieldDrop, onFocus: this.onFocus, onDelete: this.onOmniDropdownItemDelete, pageId: this.state.page.id, ref: "urlField", selectionEnd: this.state.selectionEnd, selectionStart: this.state.selectionStart, selectOnClick: this.state.ADDRESS_BAR_SELECT_ON_CLICK, suggestEnabled: !(!this.state.ADDRESS_BAR_SUGGEST_ENABLED || !this.state.ADDRESS_BAR_OMNIDROPDOWN_ENABLED || this.state.ADDRESS_BAR_SUGGEST_NICKNAME_ENABLED === !0 && !o), showDropdown: this.showOmniDropdown, triggerTypedHistory: this.state.URLFIELD_TYPED_HISTORY_ENABLED, autocompleteOnTitle: !0, url: this.state.page.get("url") || "", defaultSearchEngine: u, typedSearchEngine: o, getDropdown: this._getDropdown, openShortcutModifier: this.state.ADDRESS_BAR_URL_OPEN_SHORTCUT, autocompleteTLD: this.state.ADDRESS_BAR_AUTOCOMPLETE_TLD, __source: { fileName: i, lineNumber: 1037 } }), this.state.showTypedHistory === !0 ? a.createElement(D, { ref: "omniDropdown", setAutocompleteHighlight: this.setAutocompleteHighlight, onLinkItemClicked: this.onOmniDropdownItemClicked, displayUrl: this.state.page && K(this.state.page.url) || "", results: this.state.typedHistory, selectionIndex: this.state.dropdownSelectionIndex, __source: { fileName: i, lineNumber: 1080 } }) : this.state.ADDRESS_BAR_OMNIDROPDOWN_ENABLED !== !1 && a.createElement(N, { defaultSearchEngine: u, disableOnClickOutside: !0, displayUrl: this.state.page && K(this.state.page.url) || "", isOpen: this.state.showOmniDropdown, isUrlbarSearchDisabled: this.state.URLBAR_SEARCH_DISABLED && !o, onClose: this.hideDropdown, onDeleteHistoryItem: this.onDeleteHistoryItem, onDeleteTypedHistoryItem: this.onDeleteTypedHistoryItem, onLinkItemClicked: this.onOmniDropdownItemClicked, onSearchClicked: this.onSearchAddTypedHistory, pattern: this.state.urlFieldSearchPattern, ref: "omniDropdown", results: this.state.urlFieldSearchResults, selectionIndex: this.state.dropdownSelectionIndex, setAutocompleteHighlight: this.setAutocompleteHighlight, suggestEnabled: this.state.ADDRESS_BAR_SUGGEST_ENABLED, typedSearchEngine: o, __source: { fileName: i, lineNumber: 1087 } })), this.state.permissionInfo.get("geolocation") && a.createElement(m, { request: this.state.permissionInfo.get("geolocation"), page: this.state.page, __source: { fileName: i, lineNumber: 1111 } }), this.state.permissionInfo.get("media") && a.createElement(f, { request: this.state.permissionInfo.get("media"), page: this.state.page, __source: { fileName: i, lineNumber: 1117 } }), this.state.permissionInfo.get("notifications") && a.createElement(b, { request: this.state.permissionInfo.get("notifications"), page: this.state.page, __source: { fileName: i, lineNumber: 1123 } }), this.state.SHOW_ADDRESS_BAR && a.createElement(c, { showPageActions: !0, showBrowserActions: !1, incognito: this.props.incognito, __source: { fileName: i, lineNumber: 1129 } }), this.state.blockedPopups.size > 0 && a.createElement(T, { ref: "popupBlockerNotificator", url: this.state.page && this.state.page.get("url"), blockedPopups: this.state.blockedPopups, onPopupAllowed: this.onPopupAllowed, __source: { fileName: i, lineNumber: 1136 } }), this.state.blockedPageContent.size > 0 && a.createElement(s, { page: this.state.page, __source: { fileName: i, lineNumber: 1144 } }), (this.state.isReaderable || this.state.isReaderableActive) && a.createElement("button", { className: t, title: F("Reader View"), onClick: this.onReaderableClicked, dangerouslySetInnerHTML: { __html: n(1008) }, __source: { fileName: i, lineNumber: 1149 } }), this.state.URLFIELD_TYPED_HISTORY_ENABLED && a.createElement("button", { className: "button-addressfield input-dropdown", title: _, tabIndex: this.state.KEY_ACCESS, disabled: 0 === this.state.typedHistory.length, onMouseDown: this.toggleShowTypedHistory, dangerouslySetInnerHTML: { __html: n(314) }, __source: { fileName: i, lineNumber: 1157 } }), this.state.page && A && a.createElement(l, { ref: "bookmarkCallout", keyAccess: this.state.KEY_ACCESS, open: this.state.createBookmarkCallout, onOpen: this.onCreateBookmarkCallout, onClose: this.onCloseCreateBookmarkCallout, title: this.state.page.get("title"), url: this.state.page.get("url"), isBookmarked: this.state.isBookmarked, isBookmarkable: A, isSearchOn: this.state.SEARCH_FIELD_ENABLED, thumbnail: this.state.page.getIn(["extData", "thumbnail"]), __source: { fileName: i, lineNumber: 1166 } })), this.state.SEARCH_FIELD_ENABLED && a.createElement(y, { currentSearchEngine: this.state.currentSearchEngine, defaultSearchEngineId: this.state.DEFAULT_SEARCH_ENGINE, keyAccess: this.state.KEY_ACCESS, onEnterPressed: this.onSearchAddTypedSearchHistory, openInNewTab: this.state.SEARCH_FIELD_OPEN_NEW_TAB, openShortcutModifier: this.state.ADDRESS_BAR_URL_OPEN_SHORTCUT, page: this.state.page, ref: "search", searchEngines: this.state.searchEnginesCleaned, suggestEnabled: this.state.SEARCH_FIELD_SUGGEST_ENABLED, value: this.state.searchText, __source: { fileName: i, lineNumber: 1181 } }), this.state.SHOW_ADDRESS_BAR && (!this.state.EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED || this.state.EXTENSIONS_TOOLBAR_VISIBLE) && a.createElement(c, { showPageActions: !1, showBrowserActions: !0, incognito: this.props.incognito, __source: { fileName: i, lineNumber: 1199 } }), this.state.EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED && a.createElement("button", { title: F("Toggle Extensions Visibility"), onMouseDown: this.cancelDefault, onClick: this.toggleExtensionToolbar, tabIndex: this.state.KEY_ACCESS, className: "button-toolbar toggle-extensions-group", dangerouslySetInnerHTML: { __html: n(956) }, __source: { fileName: i, lineNumber: 1205 } })) } }); e.exports = le }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_738 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/webpage/InternalPage.jsx", a = n(1), r = n(9), s = (n(66), n(66), n(66), n(370)), o = n(600), l = n(564), c = n(744), u = n(713), A = n(20).urls, d = n(115), h = d.isPageVisible, m = a.createClass({ displayName: "InternalPage", mixins: [r], render: function() { var e = this.props.page, t = e.url, n = [], r = h(e), d = Boolean(A.matchInternal("startpage", t)), m = A.matchInternal("bookmarks", t), p = A.matchInternal("history", t), f = Boolean(A.matchInternal("welcome", t)), g = Boolean(A.matchInternal("experiments", t)), _ = Boolean(A.matchInternal("actionlog", t)), v = void 0; if (v = m ? "bookmarks" : p ? "history" : "speeddial", f || n.push(a.createElement(u, { open: r && (d || m || p), page: e, contentWidth: this.props.contentWidth, contentHeight: this.props.contentHeight, view: v, updatePageThumbnailWithActiveWebview: this.props.updatePageThumbnailWithActiveWebview, key: "startpage", __source: { fileName: i, lineNumber: 44 } })), f && n.push(a.createElement(c, { open: r, page: e, key: "welcome", __source: { fileName: i, lineNumber: 58 } })), A.matchInternal("settings", t) && n.push(a.createElement(s, { page: e, key: "settings", __source: { fileName: i, lineNumber: 68 } })), g && n.push(a.createElement(o, { key: "experiments", __source: { fileName: i, lineNumber: 75 } })), _) n.push(a.createElement(l, { key: "actionlog", __source: { fileName: i, lineNumber: 82 } })); else if (A.matchUrl(A.internalUrl("mailpage", "composer"), t)) { var b = A.getUrlParams(t); b.path.substr("composer/".length); n.push(a.createElement("div", { key: "mail", __source: { fileName: i, lineNumber: 90 } })) } else if (A.matchUrl(A.internalUrl("mailpage", "message"), t)) { var N = A.getUrlParams(t).path, E = N.split("/"); E[1], E.slice(2, E.length - 1).join("/"), parseInt(E[E.length - 1]); n.push(a.createElement("div", { key: "mailmessage", __source: { fileName: i, lineNumber: 106 } })) } else A.matchInternal("mailpage", t) && n.push(a.createElement("div", { key: "mailview", __source: { fileName: i, lineNumber: 118 } })); return a.createElement("div", { className: "internal-page", __source: { fileName: i, lineNumber: 124 } }, n) } }); e.exports = m }, function(e, t, n) { // ========================= // Function_739 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/webpage/WebPageCollection.jsx", a = n(1), r = n(9), s = n(740), o = n(178), l = n(55), c = n(17), u = n(3), A = n(115), d = A.isPageVisible, h = n(20), m = h.urls, p = n(7), f = p.get, g = n(4), _ = function() { return { activePage: c.getActivePage(), pages: c.getPages() } }, v = a.createClass({ displayName: "WebPageCollection", mixins: [r], getInitialState: function() { var e = f(u.getSync("PANEL_STATE"), ["width"], 0); return Object.assign({ contentWidth: window.innerWidth - e, contentHeight: window.innerHeight }, _()) }, componentDidMount: function() { c.addChangeListener(this._onPageStoreChange) }, componentWillUnmount: function() { c.removeChangeListener(this._onPageStoreChange) }, _onPageStoreChange: function() { this.setState(_()) }, componentDidUpdate: function(e, t) { this.state.pages.some(function(e) { return e.get("isRemoved") }) && g.tabs.query({ windowId: window.vivaldiWindowId }, function(e) { var t = c.getPages().filter(function(e) { return e.isRemoved }), n = u.getSync("TAB_NEVER_CLOSE_LAST"); n && t.length === e.length || t.map(function(e) { return e.id }).forEach(function(e) { return g.tabs.remove(e, function() { g.runtime.lastError }) }) }) }, onResize: function(e) { var t = e[0].target, n = void 0, i = void 0; if (t && t.clientWidth && t.clientHeight) n = t.clientWidth, i = t.clientHeight; else { var a = f(u.getSync("PANEL_STATE"), ["width"], 0); n = window.innerWidth - a, i = window.innerHeight } this.setState({ contentWidth: n, contentHeight: i }) }, handleFocus: function(e) { e && e.relatedTarget && "WEBVIEW" === e.relatedTarget.tagName && this.props.cycleFocus === !0 && l.doAction("focusWebView") }, render: function() { var e = this, t = this.props.cycleFocus ? "0" : "-1"; return a.createElement(o, { id: "webpage-stack", onResize: this.onResize, __source: { fileName: i, lineNumber: 102 } }, a.createElement("span", { tabIndex: t, onFocus: this.handleFocus, __source: { fileName: i, lineNumber: 106 } }), this.state.pages.filter(function(e) { return !Boolean(e.get("isRemoved")) }).sortBy(function(e) { return e.get("id") }).map(function(t) { return a.createElement(s, { id: "page-component-" + t.get("id"), key: "page-component-" + t.get("id"), page: t, contentWidth: e.state.contentWidth, contentHeight: e.state.contentHeight, tiles: c.getTiles(t.getIn(["extData", "tiling", "id"])), isInternal: m.isInternalPage(t), isVisible: d(t), __source: { fileName: i, lineNumber: 111 } }) }), a.createElement("span", { tabIndex: t, onFocus: this.handleFocus, __source: { fileName: i, lineNumber: 123 } })) } }); e.exports = v }, function(e, t, n) { // ========================= // Function_740 // ========================= (function(t) { "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/webpage/WebPageContent.jsx", a = n(1), r = n(11), s = n(549), o = n(51), l = n(385), c = n(348), u = n(94), A = n(589), d = n(604), h = n(27), m = n(769), p = n(738), f = n(50), g = n(36), _ = n(95), v = n(47), b = n(15), N = n(96), E = n(65), S = n(6), T = n(3), y = n(13), C = n(55), I = n(87), O = n(112), w = n(58), D = w.getSelectedPanel, k = w.getPanelWidth, M = n(242), L = n(129), P = n(172), R = n(4), x = n(5), B = n(89), U = n(250), F = n(7), H = F.debounce, V = n(10), W = n(115), G = W.isPageTiled, K = n(20), j = K.urls, z = n(251), Y = n(179), J = ["id", "extData", "active", "url", "title", "incognito", "target", "processexitstate"], Q = ["thumbnail", "tiling"], Z = { close: "handleOnClose", contentload: "handleContentLoad", contentsdiscarded: "handleOnContentsDiscarded", createsearch: "handleOnCreateSearch", contentblocked: "handleContentBlocked", dialog: "handleOnJavascriptDialog", exit: "handleOnProcessExit", findupdate: "handleOnFindUpdate", fullscreen: "handleOnFullscreen", loadabort: "handleLoadAbort", loadcommit: "handleLoadCommit", loadprogress: "handleOnLoadProgress", loadredirect: "handleLoadRedirected", loadstart: "handleLoadStart", loadstop: "handleLoadStop", mediastatechanged: "handleOnMediaStateChanged", newwindow: "handleOnNewWindow", pasteandgo: "handleOnPasteAndGo", simpleAction: "handleOnSimpleAction", permissionrequest: "handleOnPermissionRequest", requestpageinfo: "handleOnRequestPageInfo", sslstatechanged: "handleOnSSLStateChanged", targeturlchanged: "handleOnTargetURLChanged" }, q = 330, X = 270, $ = a.createClass({ displayName: "WebPageContent", mixins: [y], _injectScript: !1, _updateFocus: !1, vivaldiSettingsKeys: ["SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS", "USE_BISCUIT_MODE", "VALIDATION_ENGINE"], getInitialState: function() { return Object.assign({ fullscreen_state_changed: null, blockPopups: !0, dialogParentElement: null, initial_visibility_ensured: !1, captureScheduled: !1 }, this.getContentScriptStoreState(this.props.page)) }, shouldComponentUpdate: function(e, t) { var n = function(e, t, n) { var i = t[e], a = n[e]; return !!(i === a || h.is(i, a) || "activePage" === e && J.every(function(e) { return "extData" === e ? Q.every(function(e) { return h.is(i.getIn(["extData", e]), a.getIn(["extData", e])) }) : h.is(i.get(e), a.get(e)) })) }; return !z(e, this.props, n) || !z(t, this.state, n) }, componentWillMount: function() { I.addChangeListener(this._onWebpageviewStoreChanged), P.addChangeListener(this._onContentScriptStoreChanged) }, componentDidMount: function() { var e = this; this.webview = this.refs.pagediv.firstChild, this.webview && this.webview.setVisible && this.webview.setVisible(this.props.isVisible), this.attachWebviewHandlers(), this.props.page.get("active") && t.nextTick(function() { s.setActiveWebView(e.webview) }), this.setState({ initial_visibility_ensured: !0 }) }, componentWillReceiveProps: function(e) { var n = this, i = this.props.page, a = e.page, r = i.get("active") === !1 && a.get("active") === !0; r && this.webview && (t.nextTick(function() { return s.setActiveWebView(n.webview) }), O.getNavigationInfo(e.page).isLoading !== !0 && this.updateFocus(a, a.get("url"), !0)), e.page.get("url") !== this.props.page.get("url") && this.updateFocus(a, a.get("url")), this.updateViewUnchangedFlag(i, a), i.get("id") !== a.get("id") && this.setState(this.getContentScriptStoreState(a)), e.isVisible !== this.props.isVisible && this.webview && this.webview.setVisible && this.webview.setVisible(e.isVisible), a.get("target") && a.get("target") !== i.get("target") && (this.checkProcessExitState(), this.webview.src = e.page.getIn(["target", "url"]), e.page.getIn(["target", "isTyped"]) && (this.webview.wasTyped = "true")) }, componentDidUpdate: function(e, t) { var n = e.page, i = this.props.page, a = n.get("active") === !1 && i.get("active"), r = !i.getIn(["extData", "thumbnail"]); a && r && this.updatePageThumbnailWithActiveWebview(i, 0) }, componentWillUnmount: function() { b.markPageForUndelete(this.props.page, this.webview), I.removeChangeListener(this._onWebpageviewStoreChanged), P.removeChangeListener(this._onContentScriptStoreChanged), this.removeWebviewHandlers() }, _onContentScriptStoreChanged: function() { var e = this, t = this.getContentScriptStoreState(this.props.page); if (t.pageScripts !== this.state.pageScripts) { var n = this.state.pageScripts.some(function(e, n) { return e && !t.pageScripts.get(n) }); if (n) return this.setState(t), void this.webview.reload(); var i = t.contentScripts.filter(function(n) { return !e.state.pageScripts.get(n.get("name")) && t.pageScripts.get(n.get("name")) }); this.injectUserContentScripts(i) } this.setState(t) }, checkProcessExitState: function() { var e = this; this.props.page.get("processexitstate") && "normal" !== this.props.page.get("processexitstate") && (this.handleOnContentsDiscarded(), t.nextTick(function() { return b.setProcessExitState(e.props.page.get("id"), void 0) })) }, getContentScriptStoreState: function(e) { return { contentScripts: P.getContentScripts(), pageScripts: P.getPageScripts(e.get("id")) } }, viewUnchangedFlags: {}, updateViewUnchangedFlag: function(e, t) { var n = ["extData", "tiling"]; e.get("active") === t.get("active") && e.getIn(n) === t.getIn(n) || (this.viewUnchangedFlags = {}) }, isInternalThumbnail_: function(e) { return Boolean(e && 0 === e.indexOf("/resources/")) }, updatePageThumbnailWithActiveWebview: function(e) { var t = this, n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0; this.webview && ! function() { var i = B(); t.viewUnchangedFlags[i] = t.props.page.get("active") === !0, setTimeout(function() { j.isInternalUrl(e.url) ? t.viewUnchangedFlags[i] && N.getPageThumbnail(e, 50, t.webview, { captureAsBase64: !0 }, function(n) { t.props.page.get("active") && t.viewUnchangedFlags[i] && n && b.setThumbnail(e, n) }) : t.captureTab(e.id, function(t, n) { t === e.id ? b.setThumbnail(e, n) : console.warn("Got thumbnail for wrong tab (" + t + ", " + e.id + ")") }) }, n); var a = l.getQueue(e); a && a.get("url") === e.get("url") && ! function() { var n = a.get("id"); R.bookmarks.get(n, function(a) { if (R.runtime.lastError) console.warn("chrome.bookmarks.get failed:", n, R.runtime.lastError); else { var r = a && 1 === a.length ? a[0] : null, s = t.isInternalThumbnail_(r.thumbnail); s === !1 && V.thumbnails.isThumbnailAvailable(r.id, "", function(n) { if (n.hasThumbnail === !1) { var a = "http://bookmark_thumbnail/" + r.id; N.getPageThumbnail(e, 50, t.webview, { thumbUrl: a, captureAsBase64: !1, incognito: !1 }, function(e) { t.props.page.get("active") && t.viewUnchangedFlags[i] ? R.bookmarks.update(r.id, { thumbnail: e }) : console.warn("Cannot update thumbnail as page was not active") }) } }) } }), c.remove(e, n, g) }() }() }, attachWebviewHandlers: function() { var e = this; Object.keys(Z).forEach(function(t) { return e.webview.addEventListener(t, e[Z[t]]) }) }, removeWebviewHandlers: function() { var e = this; Object.keys(Z).forEach(function(t) { return e.webview.removeEventListener(t, e[Z[t]]) }) }, updateNavigationState: function(e, t, n, i) { var a = j.isNavigatableUrl(e), r = h.Map({ canGoBack: a && this.webview.canGoBack(), canGoForward: this.webview.canGoForward(), canNavigate: a, isLoading: t, reason: i, trigger: n, webviewUrl: e }); _.setNavigationState(this.props.page, r) }, handleContentLoad: function(e) { this.updateNavigationState(e.url, !1, "content") }, handleLoadCommit: function(e) { var n = this; if (e.isTopLevel) { if (j.isInternalUrl(e.url) ? L.setFastForwardUrl(this.props.page.get("id"), "") : this._injectScript = !0, this._injectScript === !0) { this.webview.executeScript({ file: "browser-bundle.js", runAt: "document_start" }, function() { L.initTab(n.props.page), R.runtime.lastError }); var i = this.state.contentScripts.filter(function(e) { return Boolean(n.state.pageScripts.get(e.get("name"))) }); this.injectUserContentScripts(i), this._injectScript = !1 } t.nextTick(function() { return L.setRewindInfo(n.webview, n.props.page) }), this.webview && this.webview.setVisible && this.webview.setVisible(this.props.isVisible), this.updateNavigationState(e.url, !0, "commit"), this._updateFocus && (E.clearSelection(this.props.page.get("id")), this.updateFocus(this.props.page, e.url), this._updateFocus = !1) } }, handleLoadStart: function(e) { if (e.isTopLevel) { this._hasRedirectedFromSame = !1; var t = this.props.page, n = t.getIn(["extData", "urlForThumbnail"]); n !== e.url && b.setThumbnail(t, null), j.equalUrl(e.url, this.props.page.get("url"), !0) || _.resetPermissions(this.props.page), this.updateNavigationState(e.url, !0, "start"), this.setState({ captureScheduled: !1 }), j.isInternalUrl(e.url) || (this._injectScript = !0), this._updateFocus = !0 } }, captureTab: function(e, t) { var n = { encodeFormat: "jpg", encodeQuality: 80, fullPage: !1, width: q, height: X }; V.thumbnails.captureTab(e, n, function(e, n) { R.runtime.lastError || t(e, n) }) }, handleLoadStop: function(e) { this.updateNavigationState(e.target.src, !1, "stop"), this.props.page.getIn(["extData", "thumbnail"]) || this.updatePageThumbnailWithActiveWebview(this.props.page, 0), this.state.captureScheduled === !1 && (this.setState({ captureScheduled: !0 }), this.updatePageThumbnailWithActiveWebview(this.props.page, 5e3)) }, handleLoadRedirected: function(e) { if (e.isTopLevel) { var t = e.newUrl, n = e.oldUrl; j.equalUrl(t, n, !1) && (this._hasRedirectedFromSame = !0), b.setThumbnail(this.props.page, null), this.setState({ captureScheduled: !1 }), c.update(this.props.page, n, t) } }, handleContentBlocked: function(e) { "mixed-script" === e.blockedType && _.setPageHasBlockedContent(this.props.page, e.blockedType) }, handleLoadAbort: function(e) { if (e.preventDefault(), e.isTopLevel) { var t = e.url; "ERR_ABORTED" === e.reason && this._hasRedirectedFromSame && (t = j.internals.blankpage, R.tabs.update(this.props.page.get("id"), { url: t })), this.updateNavigationState(t, !1, "abort", e.reason) } }, handleOnLoadProgress: function(e) { var t = h.Map({ url: e.url, progress: e.progress, loadedBytes: e.loadedBytes, loadedElements: e.loadedElements, totalElements: e.totalElements }); _.setProgressState(this.props.page, t) }, handleOnFindUpdate: function(e) { b.setFindResults(this.props.page, e) }, handleOnFullscreen: function(e) { b.setFullscreen(this.props.page, e.enterFullscreen) }, handleOnClose: function() { b.closePage(this.props.page) }, handleBlockedPopup: function(e) { _.addBlockedPopupEvent(this.props.page, e) }, injectUserContentScripts: function(e) { var t = this, n = function(e) { e.forEach(function(e) { var n = { code: e.get("code"), allFrames: "script" !== e.get("type"), runAt: "document_start" }; "script" === e.get("type") ? t.webview.executeScript(n, function() { R.runtime.lastError }) : "style" === e.get("type") && t.webview.insertCSS(n) }) }; n(e) }, _onNewPopupCallback: function(e, t) { t !== !1 ? this.handleBlockedPopup(e) : e.window.accept(window.vivaldiWindowId + ";1") }, onNewPopup: function(e) { e.targetUrl || (e.targetUrl = "about:blank"), e.userGesture ? (this.setState({ blockPopups: !1 }), this._onNewPopupCallback(e, !1)) : R.contentSettings.popups.get({ primaryUrl: this.props.page.get("url") }, function(t) { if (R.runtime.lastError) return void console.warn("ERROR getting content settings for popups. Original message:\n" + R.runtime.lastError.message); var n = !0; t && (n = "allow" !== t.setting, this.setState({ blockPopups: n })), this._onNewPopupCallback(e, n) }.bind(this)) }, handleOnNewWindow: function(e) { switch (e.windowOpenDisposition) { case "current_tab": e.preventDefault(), e.window.accept(window.vivaldiWindowId + ";1"); break; case "new_background_tab": e.preventDefault(), e.window.accept(window.vivaldiWindowId + ";0"); break; case "new_foreground_tab": e.preventDefault(), e.window.accept(window.vivaldiWindowId + ";1"); break; case "new_window": e.preventDefault(), b.openWindow(null, {}, function(t) { e.window.accept(t.id + ";1") }); break; case "off_the_record": e.preventDefault(), b.openWindow(e.targetUrl, { incognito: !0 }, function(t) { e.window.accept(t.id + ";1;I") }); break; case "new_popup": e.preventDefault(), this.onNewPopup(e); break; case "ignore": case "save_to_disk": } }, showDialog: function(e) { e.webview = this.webview, this.setState({ dialogParentElement: this.refs.webpagecontainer, customData: e }) }, handleOnCloseDialog: function(e) { this.setState({ dialogParentElement: null }) }, handleOnJavascriptDialog: function() { event.preventDefault(), event.dialogtype = "javascript", this.showDialog(event) }, handleOnPermissionRequest: function(e) { var t = this; switch (e.preventDefault(), e.permission) { case "geolocation": case "media": case "notifications": var n = null; _.setPermission(this.props.page, e.permission, e.request, n); break; case "loadplugin": e.request.allow(); break; case "download": T.get("AUTOMATICALLY_DOWNLOAD_FILES", function(n) { if (n) { e.request.allow(); var i = D(), a = k(); !t.state.SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS || "downloads" === i && a > 50 || u.executeActions("COMMAND_SHOW_DOWNLOADS_PANEL") } else e.dialogtype = e.permission, t.showDialog(e) }); break; default: e.dialogtype = e.permission, this.showDialog(e) } }, handleOnMediaStateChanged: function(e) { b.setMediaState(this.props.page.get("id"), e.activeMediaType) }, handleOnProcessExit: function(e) { b.setProcessExitState(this.props.page.get("id"), e.reason) }, handleOnSSLStateChanged: function(e) { _.setSSLState(this.props.page, e.SSLState, e.issuerstring) }, handleOnTargetURLChanged: function(e) { var t = e.newUrl, n = Y(t); b.setTargetURL(n), v.setStatus(n) }, handleOnCreateSearch: function() { event.dialogtype = "createSearch", this.showDialog(event) }, handleOnPasteAndGo: function(e) { var t = {}; e.modifiers.includes("ctrl") && (t.ctrlKey = !0), e.modifiers.includes("shift") && (t.shiftKey = !0), e.modifiers.includes("alt") && (t.altKey = !0), "MacIntel" === navigator.platform && e.modifiers.includes("command") && (t.metaKey = !0), e.preventDefault(), "search" === e.pasteTarget ? C.doAction("searchPasteAndGo", t) : "url" === e.pasteTarget && C.doAction("urlPasteAndGo", t) }, handleOnSimpleAction: function(e) { if ("copyToNote" === e.command) V.notes.create({ type: "note", content: e.text, url: e.url }); else if ("addActivePageToBookmarks" === e.command) C.doAction("addBookmark"); else if ("addUrlToBookmarks" === e.command) R.bookmarks.create({ parentId: o.getRootNode().id, title: e.text, url: e.url }); else if ("addUrlToWebPanel" === e.command) M.addByUrl(e.url); else if ("copyUrlToClipboard" === e.command) { var t = function(t) { t.clipboardData.setData("text/plain", e.url), t.preventDefault() }; document.addEventListener("copy", t), document.execCommand("copy"), document.removeEventListener("copy", t) } else if ("useImageAsBackground" === e.command) m.setStartpageBackgroundFromUrl(e.url); else if ("validateUrl" === e.command) { var n = T.getSync("VALIDATION_URL"); b.openURL(n.replace("%s", e.url), { inCurrent: !1 }) } else "fullscreen" === e.command && f.fullScreen() }, handleOnContentsDiscarded: function() { this.removeWebviewHandlers(), r.findDOMNode(this.refs.pagediv).removeChild(this.webview); var e = document.createElement("webview"); e.id = this.props.page.get("id"), e.partition = "persist:storage", e.tab_id = this.props.page.get("id"), r.findDOMNode(this.refs.pagediv).appendChild(e), this.webview = e, this.attachWebviewHandlers() }, handleOnRequestPageInfo: function(e) { f.showPageInfo(this.props.page, e) }, _onWebpageviewStoreChanged: function(e) { if (e.type === S.CLOSE_FIND_IN_PAGE_ACTION) this.props.page.get("active") && (this.webview.stopFinding("keep"), this.focusWebView()); else if (e.type === S.PAGE_GO) this.props.page.get("active") && this.webview.go(e.index); else if (e.type === S.PAGE_BACK) this.props.page.get("active") && this.webview.back(); else if (e.type === S.PAGE_FORWARD) this.props.page.get("active") && this.webview.forward(); else if (e.type === S.PAGE_STOP) this.doActionStop(); else if (e.type === S.PAGE_RELOAD) this.checkProcessExitState(), this.props.page.get("active") && R.tabs.reload(this.props.page.get("id"), { bypassCache: e.bypassCache }); else if (e.type === S.WEBPAGEVIEW_ACTIONS) switch (e.action) { case "exportSettings": break; case "focusWebView": this.props.page.get("active") && this.focusWebView(); break; case "pageScrollUp": this.props.page.get("active") && this.pageScrollUp(); break; case "pageScrollDown": this.props.page.get("active") && this.pageScrollDown(); break; case "pageScrollTop": this.props.page.get("active") && this.pageScrollTop(); break; case "pageScrollBottom": this.props.page.get("active") && this.pageScrollBottom(); break; case "print": this.props.page.get("active") && this.webview.print(); break; case "basicPrint": V.utilities.basicPrint(); break; case "savePage": this.savePage(); break; case "openPage": this.openPage() } }, doActionStop: function() { this.props.page.get("active") && this.webview.stop() }, savePage: function() { this.props.page.get("active") && V.importData.savePage(function(e) {}) }, openPage: function() { this.props.page.get("active") && V.importData.openPage(function(e) {}) }, focusWebView: H(function(e) { if (j.isInternalUrl(e)) { var t = r.findDOMNode(this.refs.internal); if (!t.contains(document.activeElement)) { var n = t.querySelector('[tabindex="0"]'); n && n.focus() } } else this.webview.focus() }, 16), pageScrollUp: function() { this.webview.executeScript({ code: "window.scrollBy(0, -window.innerHeight)" }, function() { R.runtime.lastError }) }, pageScrollDown: function() { this.webview.executeScript({ code: "window.scrollBy(0, window.innerHeight)" }, function() { R.runtime.lastError }) }, pageScrollTop: function() { this.webview.executeScript({ code: "window.scrollTo(0, 0)" }, function() { R.runtime.lastError }) }, pageScrollBottom: function() { this.webview.executeScript({ code: "window.scrollTo(0, document.documentElement.scrollHeight)" }, function() { R.runtime.lastError }) }, onMouseDown: function() { this.props.page.get("active") || b.openPage(this.props.page) }, getTilingStyle: function() { var e = this; if (this.props.tiles.count() < 2) return {}; var t = this.props.page.getIn(["extData", "tiling"]), n = this.props.tiles.count(), i = this.props.tiles.findIndex(function(t) { return t.id === e.props.page.id }); if ("grid" === t.get("layout")) { var a = Math.ceil(Math.sqrt(n)), r = Math.ceil(n / a), s = Math.floor(i / a), o = i % a, l = 100 / a, c = 100 / r, u = c; return r - s > 1 && i + a * (r - s - 1) >= n && (u = 100 / (r - 1)), { top: u * s + "%", height: u + "%", left: l * o + "%", width: l + "%" } } if ("horizontally" === t.get("layout")) { var A = 100 / n; return { top: A * i + "%", height: A + "%" } } var d = 100 / n; return { left: d * i + "%", width: d + "%" } }, updateFocus: function(e, t) { var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2], i = U(e, t, n); "findInPage" === i ? this.focusFindInPage() : "content" === i && this.focusWebView(t) }, focusFindInPage: function() { var e = this; t.nextTick(function() { return C.showFindInPageToolbar(e.props.page) }) }, _onFindInPage: function(e, t) { C.findInPage(this.props.page, e, t, this.webview) }, _onFindNextInPage: function(e, t, n) { C.findNextInPage(this.props.page, e, t, n, this.webview) }, _stopFindInPage: function() { this.webview.stopFinding() }, render: function() { var e = this.props.page, t = Object.assign({ visibility: this.props.isVisible ? "visible" : "hidden", zIndex: this.props.isVisible ? "initial" : "-1" }, this.getTilingStyle()), n = !!this.state.initial_visibility_ensured && this.props.isVisible, r = { webpageview: !0, active: e.get("active"), visible: n, tiled: G(this.props.page) }; return a.createElement("div", { className: x(r), ref: "webpageview", style: t, tabIndex: "-1", onMouseDown: this.onMouseDown, __source: { fileName: i, lineNumber: 1173 } }, a.createElement("div", { ref: "webpagecontainer", __source: { fileName: i, lineNumber: 1179 } }, a.createElement(d, { ref: "findInPage", page: e, onFindInPage: this._onFindInPage, onFindNextInPage: this._onFindNextInPage, onStopFind: this._stopFindInPage, __source: { fileName: i, lineNumber: 1180 } }), this.state.USE_BISCUIT_MODE && a.createElement("div", { className: "biscuit-setting-version", __source: { fileName: i, lineNumber: 1188 } }, navigator.userAgent.match(/(?:Vivaldi|Chrome)\/[0-9.]+/g).join(" ")), a.createElement("div", { ref: "pagediv", className: "webpage", dangerouslySetInnerHTML: { __html: '' }, __source: { fileName: i, lineNumber: 1194 } }), a.createElement(p, { ref: "internal", page: e, hasFocus: this.props.hasFocus, contentWidth: this.props.contentWidth, contentHeight: this.props.contentHeight, updatePageThumbnailWithActiveWebview: this.updatePageThumbnailWithActiveWebview, __source: { fileName: i, lineNumber: 1204 } }), this.state.dialogParentElement && a.createElement(A, { dialogParentElement: this.state.dialogParentElement, customData: this.state.customData, closeDialog: this.handleOnCloseDialog, __source: { fileName: i, lineNumber: 1214 } }))) } }); e.exports = $ }).call(t, n(16)) }, function(e, t, n) { // ========================= // Function_741 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/webpanels/addWebPanelButton.jsx", a = n(39), r = n(17), s = n(9), o = n(1), l = n(2), c = n(5), u = n(46).ensureURLProtocol, A = n(20).urls, d = n(136), h = n(97), m = n(65), p = n(37), f = o.createClass({ displayName: "AddWebPanelButton", mixins: [a, s], getInitialState: function() { return { drawerOpen: !1, url: "", editUrl: null } }, componentWillMount: function() { h.addChangeListener(this._onUrlbarStoreChanged) }, componentWillUnmount: function() { h.removeChangeListener(this._onUrlbarStoreChanged) }, _onUrlbarStoreChanged: function() { var e = h.getUrlfieldStateFromId("AddWebPanel"); this.setState(e) }, onDragOver: function(e) { e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy" }, onDrop: function(e) { e.preventDefault(), e.stopPropagation(); var t = e.dataTransfer.getData("text/uri-list"); if (t.length > 0) for (var n = t.split("\n"), i = 0; i < n.length; i++) { var a = u(n[i]); this.props.addNew(a) } }, handleClickOutside: function() { this.closeDrawer() }, onToggleCallout: function() { if (this.state.drawerOpen) this.closeDrawer(); else { document.getElementById("panels").classList.add("leak"); var e = r.getActivePage(), t = e.get("url"), n = { drawerOpen: !0 }; A.isBookmarkablePage(e) && (n.url = t), m.setUrlfieldState("AddWebPanel", { selectionStart: 0, selectionEnd: t.length, editUrl: null }), this.setState(n), p.bind("esc", this.closeDrawer) } }, onAddWebpanel: function() { var e = (this.state.editUrl || this.state.url || "").trim(); 0 !== e.length && (e = u(e), this.props.addNew(e), this.setState(this.getInitialState())) }, onUrlChange: function(e) { this.setState({ url: e }) }, closeDrawer: function(e) { document.getElementById("panels").classList.remove("leak"), p.unbind("esc", this.closeDrawer), this.setState({ drawerOpen: !1 }) }, preventContextMenu: function(e) { e.stopPropagation() }, render: function() { var e = c({ addwebpanelcallout: !0, hidden: !this.state.drawerOpen }); return o.createElement("div", { className: "addwebpanel-wrapper", __source: { fileName: i, lineNumber: 118 } }, o.createElement("button", { title: l("Add Web Panel"), className: "addwebpanel", tabIndex: this.props.keyAccess, onClick: this.onToggleCallout, onDragOver: this.onDragOver, onDrop: this.onDrop, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 119 } }), this.state.drawerOpen && o.createElement("div", { className: e, onContextMenu: this.preventContextMenu, __source: { fileName: i, lineNumber: 130 } }, o.createElement("form", { __source: { fileName: i, lineNumber: 132 } }, o.createElement("header", { __source: { fileName: i, lineNumber: 133 } }, o.createElement("h1", { __source: { fileName: i, lineNumber: 134 } }, l("Add Web Panel"))), o.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 136 } }, o.createElement(d, { ref: "input", className: "address", title: l("Enter webpage address"), pageId: "AddWebPanel", placeholder: "vivaldi.net", displayUrl: this.state.url, editUrl: this.state.editUrl, autocompletionEnabled: !0, triggerTypedHistory: !1, selectionStart: this.state.selectionStart, selectionEnd: this.state.selectionEnd, onUrlFieldChanged: this.onUrlChange, autoFocus: !0, __source: { fileName: i, lineNumber: 137 } }), o.createElement("button", { className: "button-toolbar add", onClick: this.onAddWebpanel, dangerouslySetInnerHTML: { __html: n(80) }, __source: { fileName: i, lineNumber: 150 } }))))) } }); e.exports = f }, function(e, t, n) { // ========================= // Function_742 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/webpanels/webPanel.jsx", a = n(1), r = n(11), s = n(15), o = n(58), l = n(9), c = n(2), u = n(4), A = n(5), d = n(113), h = n(36), m = n(116), p = n(383), f = p.uaspoofRules, g = p.uaspoofRuleIds, _ = '(function() {\n var faviconElement = document.querySelector(\n \'link[rel="icon"],link[rel="shortcut icon"]\');\n if (faviconElement) {\n return faviconElement.getAttribute(\'href\');\n } else {\n return "";\n }\n})()', v = a.createClass({ displayName: "WebPanel", mixins: [l], getInitialState: function() { return { title: c("Loading..."), canGoBack: !1, canGoForward: !1, canReload: !1, lookupFavicon: !0 } }, globalUASpooRulesEnabled: !0, disableGlobalUASpoofRules: function() { return this.globalUASpooRulesEnabled = !1, new Promise(function(e) { return u.declarativeWebRequest.onRequest.removeRules(g, e) }) }, enableGlobalUASpoofRules: function() { this.globalUASpooRulesEnabled || (this.globalUASpooRulesEnabled = !0, u.declarativeWebRequest.onRequest.addRules(f)) }, componentDidMount: function() { var e = this, t = this.refs.webpanelwebview; this.props.mobileMode && t.setUserAgentOverride(this.getMobileUAString()), t.addEventListener("contentload", this.handleContentLoad), t.addEventListener("loadstop", this.handleLoadStop), t.addEventListener("newwindow", this.handleNewWindow), t.addEventListener("dialog", this.handleDialog), this.disableGlobalUASpoofRules().then(function() { return t.src = e.props.src }), o.addChangeListener(this.onPanelStoreChange) }, componentWillUnmount: function() { var e = this.refs.webpanelwebview; e.removeEventListener("contentload", this.handleContentLoad), e.removeEventListener("loadstop", this.handleLoadStop), e.removeEventListener("newwindow", this.handleNewWindow), e.removeEventListener("dialog", this.handleDialog), o.removeChangeListener(this.onPanelStoreChange) }, componentDidUpdate: function() { this.props.focusContent && (document.activeElement.blur(), this.refs.webpanelwebview.focus()) }, componentWillReceiveProps: function(e) { var t = this.refs.webpanelwebview; e.mobileMode !== t.isUserAgentOverridden() && (e.mobileMode ? t.setUserAgentOverride(this.getMobileUAString()) : t.setUserAgentOverride(navigator.userAgent), this.reload()) }, onPanelStoreChange: function(e) { this.props.isVisible && "setFocus" === e && !d(r.findDOMNode(this)) && (document.activeElement.blur(), r.findDOMNode(this).querySelector("webview").focus()) }, getMobileUAString: function() { var e = navigator.userAgent, t = e.indexOf("("), n = e.indexOf(")", t); return t >= 0 && n > t && (e = e.substr(0, t + 1) + "Linux; Android 6.0.1; SM-G920F Build/MMB29K" + e.substr(n)), e = e.replace("Safari", "Mobile Safari") }, handleNewWindow: function(e) { switch (e.windowOpenDisposition) { case "current_tab": case "new_foreground_tab": e.preventDefault(), e.window.accept(window.vivaldiWindowId + ";1"); break; case "new_background_tab": e.preventDefault(), e.window.accept(window.vivaldiWindowId + ";0"); break; case "new_window": e.preventDefault(), s.openWindow(e.targetUrl, { focused: !0 }); break; case "off_the_record": e.preventDefault(), s.openWindow(e.targetUrl, { focused: !0, incognito: !0 }); break; case "new_popup": e.preventDefault(); break; case "ignore": case "save_to_disk": } }, handleDialog: function(e) { "confirm" === e.messageType || "prompt" === e.messageType ? e.dialog.cancel() : "alert" === e.messageType && e.dialog.ok("") }, getFaviconHost: function() { var e = h.parse(this.refs.webpanelwebview.src); return e.protocol + "//" + e.host + "/" }, handleLoadStop: function(e) { this.enableGlobalUASpoofRules(); var t = this.refs.webpanelwebview; this.setState({ canGoBack: t.canGoBack(), canGoForward: t.canGoForward(), canReload: !0 }), this.props.setWebPanelResource(this.props.id, "activeUrl", this.refs.webpanelwebview.src), this.state.lookupFavicon && t.executeScript({ code: _ }, function(e) { u.runtime.lastError && console.warn("query favicon:", u.runtime.lastError); var t = void 0 === e ? void 0 : e[0]; if (t) { var n = t.indexOf("data:"); 0 !== n && (n = t.indexOf("//"), n === -1 ? t = this.getFaviconHost() + t : 0 === n && (t = "http:" + t), t = m(t, { stripWWW: !1 })), this.props.setWebPanelResource(this.props.id, "faviconUrl", t), this.setState({ lookupFavicon: !1 }) } }.bind(this)), t.setZoomMode("per-view"), t.setZoom(1) }, handleContentLoad: function(e) { this.refs.webpanelwebview.executeScript({ code: "document.title" }, function(e) { this.setState({ title: e[0] }), this.props.setWebPanelResource(this.props.id, "title", e[0]) }.bind(this)) }, reload: function() { this.setState({ title: c("Loading..."), canReload: !1 }), this.refs.webpanelwebview.reload() }, home: function() { var e = this; this.setState({ title: c("Loading..."), canReload: !1 }), this.disableGlobalUASpoofRules().then(function() { return e.refs.webpanelwebview.src = e.props.src }) }, back: function() { this.refs.webpanelwebview.back() }, forward: function() { this.refs.webpanelwebview.forward() }, render: function() { var e = A({ panel: !0, webpanel: !0, visible: this.props.isVisible }); return a.createElement("div", { className: e, __source: { fileName: i, lineNumber: 252 } }, this.props.isVisible && this.props.panelUI.showToolbar && a.createElement("header", { className: "webpanel-header", __source: { fileName: i, lineNumber: 254 } }, a.createElement("h1", { className: "webpanel-title", title: this.state.title, __source: { fileName: i, lineNumber: 255 } }, this.state.title), a.createElement("div", { className: "toolbar icons", __source: { fileName: i, lineNumber: 258 } }, this.props.panelUI.allControls ? a.createElement("button", { className: "button-toolbar back", title: c("navigation", "Back"), onClick: this.back, disabled: !this.state.canGoBack, dangerouslySetInnerHTML: { __html: n(214) }, __source: { fileName: i, lineNumber: 260 } }) : null, this.props.panelUI.allControls ? a.createElement("button", { className: "button-toolbar forward", title: c("navigation", "Forward"), onClick: this.forward, disabled: !this.state.canGoForward, dangerouslySetInnerHTML: { __html: n(215) }, __source: { fileName: i, lineNumber: 267 } }) : null, this.props.panelUI.allControls ? a.createElement("button", { className: "button-toolbar reload", title: c("Reload"), onClick: this.reload, disabled: !this.state.canReload, dangerouslySetInnerHTML: { __html: n(312) }, __source: { fileName: i, lineNumber: 274 } }) : null, a.createElement("button", { className: "button-toolbar home", title: c("Home"), onClick: this.home, disabled: !this.state.canReload, dangerouslySetInnerHTML: { __html: n(469) }, __source: { fileName: i, lineNumber: 280 } }))), a.createElement("section", { className: "webpanel-content", __source: { fileName: i, lineNumber: 289 } }, a.createElement("webview", { ref: "webpanelwebview", name: "vivaldi-webpanel", __source: { fileName: i, lineNumber: 290 } }))) } }); e.exports = v }, function(e, t, n) { // ========================= // Function_743 // ========================= "use strict"; var i = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/welcome/WelcomeStep.jsx", a = n(1), r = n(25), s = n(2), o = ["KEY_ACCESS"], l = a.createClass({ displayName: "WelcomeStep", render: function() { var e = this.props.isCurrent ? this.props.vivaldiSettings.KEY_ACCESS : "-1"; return a.createElement("div", { className: "step step-" + this.props.step, __source: { fileName: i, lineNumber: 15 } }, a.createElement("div", { className: "step-wrap", __source: { fileName: i, lineNumber: 17 } }, this.props.goBackward && a.createElement("button", { className: "welcome-button-back", tabIndex: e, onClick: this.props.goBackward, __source: { fileName: i, lineNumber: 19 } }), this.props.children, this.props.goForward && a.createElement("button", { tabIndex: e, className: "welcome-navigation", onClick: this.props.goForward, __source: { fileName: i, lineNumber: 28 } }, s("Next:") + " ", a.createElement("strong", { __source: { fileName: i, lineNumber: 33 } }, this.props.nextText)))) } }); e.exports = r(l, o) }, function(e, t, n) { // ========================= // Function_744 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } var a = "/home/builduser/bot/build/slave/Official_Linux_x64/build/vivaldi/vivapp/src/components/welcome/welcome.jsx", r = n(1), s = n(5), o = n(3), l = n(15), c = n(17), u = n(25), A = n(372), d = n(354), h = n(743), m = n(2), p = [{ name: m("Mist"), path: "../resources/bg.jpg" }, { name: m("Sunset"), path: "../resources/bg_alt_1.jpg" }, { name: m("Starry Night"), path: "../resources/bg_alt_2.jpg" }, { name: m("Pink Cloud"), path: "../resources/bg_alt_3.jpg" }, { name: m("Jellyfish"), path: "../resources/bg_alt_4.jpg" }, { name: m("Purple Lake"), path: "../resources/bg_alt_5.jpg" }, { name: m("Wave"), path: "../resources/bg_alt_6.jpg" }], f = encodeURIComponent(m("Friend's email")), g = encodeURIComponent(m("Check out Vivaldi")), _ = encodeURIComponent(m("Hey,\n\nCheck out this new browser I found! Vivaldi is super customizable and really fast.\n\nIt’s available as a free download at vivaldi.com\n\nThere are many really cool features, but here’s what I like about it:\n\n- Very cool Speed Dial\n- Tab Stacking (You can stack multiple tabs together to save space on tab bar)\n- Tab tiling (You can display multiple web pages side by side or in grid)\n- Web panels and integrated Notes\n- Customisable keyboard shortcuts\n\nYou should definitely try Vivaldi.\n\n\nCheers")), v = ["THEMES_SYSTEM", "THEMES_USER", "THEME_CURRENT", "STARTPAGE_BG_COLOR", "STARTPAGE_BG_COLOR_USER_DEFINED", "STARTPAGE_FG_COLOR", "STARTPAGE_SHOW_IMAGE", "STARTPAGE_IMAGE", "STARTPAGE_IMAGE_USER_DEFINED", "STARTPAGE_IMAGE_STRETCH", "STARTPAGE_IMAGE_REPEAT", "TAB_POSITION", "STARTPAGE_IMAGE", "STARTPAGE_IMAGE_USER_DEFINED", "STARTPAGE_SHOW_IMAGE", "KEY_ACCESS"], b = r.createClass({ displayName: "WelcomePage", getInitialState: function() { return { currentPageIndex: 1 } }, goForward: function() { this.setState({ currentPageIndex: this.state.currentPageIndex + 1 }) }, goBackward: function() { this.setState({ currentPageIndex: this.state.currentPageIndex - 1 }) }, goStart: function() { l.openURL(c.getDefaultStartpage(), { inCurrent: !0 }) }, goToStep: function(e) { this.setState({ currentPageIndex: e }) }, getStartpageStyle: function() { var e = this.props.vivaldiSettings, t = { bgColor: e.STARTPAGE_BG_COLOR, bgColorUser: e.STARTPAGE_BG_COLOR_USER_DEFINED, imageStretch: e.STARTPAGE_IMAGE_STRETCH, imageRepeat: e.STARTPAGE_IMAGE_REPEAT, showImage: e.STARTPAGE_SHOW_IMAGE, imageUrl: e.STARTPAGE_IMAGE, imageUrlUser: e.STARTPAGE_IMAGE_USER_DEFINED }, n = "user_defined" === t.bgColor ? t.bgColorUser : t.bgColor, i = t.imageStretch ? "cover" : "auto", a = t.imageRepeat ? "repeat" : "no-repeat", r = void 0; return r = t.showImage && "user_defined" === t.imageUrl ? "url(" + t.imageUrlUser + ")" : t.showImage ? "url(" + t.imageUrl + ")" : "url(data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=)", { backgroundColor: n, backgroundImage: r, backgroundSize: i, backgroundRepeat: a } }, setTabPosition: function(e) { o.set({ TAB_POSITION: e }) }, setBackground: function(e) { o.set({ STARTPAGE_SHOW_IMAGE: !0, STARTPAGE_IMAGE: e }) }, _setTheme: function(e) { .1 === e.version && o.set({ THEME_CURRENT: e.name, BROWSER_COLOR_BG: e.colors.baseBg, BROWSER_COLOR_FG: e.colors.baseFg, BROWSER_COLOR_HIGHLIGHT_BG: e.colors.highlightBg, BROWSER_COLOR_ACCENT_BG: e.colors.accentBg, TABCOLOR_BEHIND_TABS: e.settings.accentOnWindow, USE_TABCOLOR: e.settings.accentFromPage, USE_TAB_TRANSPARENT_TABS: e.settings.tabsTransparent, BORDER_RADIUS: e.settings.borderRadius }) }, render: function() { var e = this; if (!this.props.open || !this.props.vivaldiSettings.THEMES_SYSTEM) return null; var t = "mailto:" + f + "?subject=" + g + "&body=" + _, o = this.props.vivaldiSettings, c = o.THEMES_SYSTEM.concat(o.THEMES_USER), u = o.TAB_POSITION, v = o.STARTPAGE_IMAGE, b = this.state.currentPageIndex, N = s(i({ welcome: !0 }, "showstep-" + b, !0)); return r.createElement("div", { className: N, style: this.getStartpageStyle(), __source: { fileName: a, lineNumber: 196 } }, r.createElement("h2", { __source: { fileName: a, lineNumber: 200 } }, m("Welcome to Vivaldi")), r.createElement("h1", { __source: { fileName: a, lineNumber: 201 } }, m("Let’s Get You Started!")), r.createElement("div", { className: "steps", __source: { fileName: a, lineNumber: 203 } }, r.createElement(h, { goForward: this.goForward, nextText: m("Tab Bar Position"), isCurrent: 1 === b, step: "1", __source: { fileName: a, lineNumber: 205 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 210 } }, m("Spend one minute setting things up just the way you like\n it.")), r.createElement("p", { __source: { fileName: a, lineNumber: 212 } }, m("Let’s start with some appearance choices.\n Which one of these do you prefer?")), c.splice(0, 6).map(function(t) { return r.createElement(A, { tabIndex: 1 === b ? e.props.vivaldiSettings.KEY_ACCESS : "-1", key: t.name, themeObject: t, onClick: e._setTheme.bind(e, t), __source: { fileName: a, lineNumber: 216 } }) })), r.createElement(h, { goForward: this.goForward, goBackward: this.goBackward, nextText: m("Startpage Backgrounds"), isCurrent: 2 === b, step: "2", __source: { fileName: a, lineNumber: 226 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 232 } }, m("Just as important, where do you like your tab bar\n positioned?")), r.createElement(d, { position: "top", selected: "top" === u, tabIndex: 2 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: this.setTabPosition.bind(this, "top"), __source: { fileName: a, lineNumber: 234 } }), r.createElement(d, { position: "left", selected: "left" === u, tabIndex: 2 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: this.setTabPosition.bind(this, "left"), __source: { fileName: a, lineNumber: 239 } }), r.createElement(d, { position: "right", selected: "right" === u, tabIndex: 2 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: this.setTabPosition.bind(this, "right"), __source: { fileName: a, lineNumber: 244 } }), r.createElement(d, { position: "bottom", selected: "bottom" === u, tabIndex: 2 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: this.setTabPosition.bind(this, "bottom"), __source: { fileName: a, lineNumber: 249 } })), r.createElement(h, { goForward: this.goForward, goBackward: this.goBackward, nextText: m("Get in Touch"), isCurrent: 3 === b, step: "3", __source: { fileName: a, lineNumber: 256 } }, r.createElement("p", { __source: { fileName: a, lineNumber: 262 } }, m("Pick a background picture for your Start Page.")), p.map(function(t) { var n = s({ selectbox: !0, "selectbox-selected": t.path === v }); return r.createElement("button", { key: t.name, title: t.name, tabIndex: 3 === b ? e.props.vivaldiSettings.KEY_ACCESS : "-1", className: n, onClick: e.setBackground.bind(e, t.path), __source: { fileName: a, lineNumber: 270 } }, r.createElement("div", { className: "selectbox-image", style: { backgroundImage: "url(" + t.path + ")" }, __source: { fileName: a, lineNumber: 277 } }, r.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "selectbox-checkmark", viewBox: "0 0 16 16", __source: { fileName: a, lineNumber: 279 } }, r.createElement("path", { d: "M5.3 13.3L1.5 9.5 3 8l2.3 2.5L13 2.7 14.6 4l-8 8z", __source: { fileName: a, lineNumber: 281 } }))), r.createElement("div", { className: "selectbox-title", __source: { fileName: a, lineNumber: 284 } }, t.name)) })), r.createElement(h, { goBackward: this.goBackward, isCurrent: 4 === b, step: "4", __source: { fileName: a, lineNumber: 290 } }, r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: l.openURL.bind(this, "http://vvld.in/v-tutorials", { inCurrent: !1, inBackground: !1 }), __source: { fileName: a, lineNumber: 294 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1031) }, __source: { fileName: a, lineNumber: 302 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 304 } }, m("Watch video tutorials"))), r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: this.goStart, __source: { fileName: a, lineNumber: 306 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1029) }, __source: { fileName: a, lineNumber: 310 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 312 } }, m("Start browsing"))), r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: l.openURL.bind(this, "http://vvld.in/v-community", { inCurrent: !1, inBackground: !1 }), __source: { fileName: a, lineNumber: 314 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1026) }, __source: { fileName: a, lineNumber: 322 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 324 } }, m("Join the community"))), r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: l.openURL.bind(this, "http://vvld.in/v-social", { inCurrent: !1, inBackground: !1 }), __source: { fileName: a, lineNumber: 326 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1028) }, __source: { fileName: a, lineNumber: 334 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 336 } }, m("Follow us around the Web"))), r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: l.openURL.bind(this, t, { inBackground: !0 }), __source: { fileName: a, lineNumber: 338 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1030) }, __source: { fileName: a, lineNumber: 344 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 346 } }, m("Tell your friends"))), r.createElement("button", { className: "welcome-cta-button", tabIndex: 4 === b ? this.props.vivaldiSettings.KEY_ACCESS : "-1", onClick: l.openURL.bind(this, "http://vvld.in/v-webmail", { inCurrent: !1, inBackground: !1 }), __source: { fileName: a, lineNumber: 348 } }, r.createElement("div", { dangerouslySetInnerHTML: { __html: n(1027) }, __source: { fileName: a, lineNumber: 356 } }), r.createElement("div", { __source: { fileName: a, lineNumber: 358 } }, m("Get free Email")))))) } }); e.exports = u(b, v) }, function(e, t) { // ========================= // Function_745 // ========================= "use strict"; var n = function(e, t, n, i, a, r) { this.id = e, this.title = n, this.style = i, this.description = a, this.menuItems = r, this.progress = 0, this.text = t }; e.exports = n }, function(e, t) { // ========================= // Function_746 // ========================= "use strict"; e.exports = { SETTINGS_MIGRATION_VERSION: 0, ADDRESS_BAR_AUTOCOMPLETE_ENABLED: !0, ADDRESS_BAR_AUTOCOMPLETE_TLD: "com", ADDRESS_BAR_AUTOCOMPLETE_PREFER_BOOKMARKS: !0, ADDRESS_BAR_CUTCOPY_ENCODED: !1, ADDRESS_BAR_OMNIDROPDOWN_ENABLED: !0, ADDRESS_BAR_POSITION: "top", ADDRESS_BAR_SELECT_ON_CLICK: !0, ADDRESS_BAR_SHOW_PROGRESS: !0, ADDRESS_BAR_URL_OPEN_SHORTCUT: "alt", ALT_GESTURES_ENABLED: !1, BOOKMARKS_BAR_BOOKMARKSSORT: { sortOrder: 1, sortField: "manually" }, BOOKMARKS_BAR_FOLDER_IDS: ["1"], BOOKMARKS_MANAGER_BOOKMARKSSORT: { sortOrder: 1, sortField: "manually" }, BOOKMARKS_OPEN_IN_NEW_TAB: !1, BOOKMARKS_PANEL_BOOKMARKSSORT: { sortOrder: 1, sortField: "manually" }, BOOKMARK_BAR_DISPLAY: "default", BOOKMARK_BAR_POSITION: "top", BOOKMARK_BAR_VISIBLE: !1, BORDER_RADIUS: 0, BROWSER_COLOR_BG: "#ececec", BROWSER_COLOR_FG: "#111111", BROWSER_COLOR_ACCENT_BG: "#c83838", BROWSER_COLOR_HIGHLIGHT_BG: "#006ed7", CHECK_DEFAULT_BROWSER_STARTUP: !1, CLOSABLE_PINNED_TABS: "off", COMMAND_ADD_BOOKMARK: { shortcut: ["ctrl+d"], showInQC: !0 }, COMMAND_BASIC_PRINT: { shortcut: ["ctrl+shift+p"], showInQC: !0 }, COMMAND_CAPTURE_PAGE_TO_DISK: { showInQC: !0 }, COMMAND_CAPTURE_PAGE_TO_CLIPBOARD: { showInQC: !0 }, COMMAND_CAPTURE_AREA_TO_DISK: { showInQC: !0 }, COMMAND_CAPTURE_AREA_TO_CLIPBOARD: { showInQC: !0 }, COMMAND_CLIPBOARD_PASTE_AS_NOTE: { showInQC: !0 }, COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT: { showInQC: !0 }, COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO: { shortcut: ["ctrl+shift+v"], showInQC: !0 }, COMMAND_CLONE_TAB: { showInQC: !0 }, COMMAND_CLOSE_ALL_BUT_ACTIVE_TAB: { showInQC: !0 }, COMMAND_CLOSE_TAB: { shortcut: ["ctrl+w", "ctrl+f4"], gestures: ["20"], showInQC: !0 }, COMMAND_CLOSE_TAB_TO_LEFT: { showInQC: !0 }, COMMAND_CLOSE_TAB_TO_RIGHT: { showInQC: !0 }, COMMAND_CLOSE_WINDOW: { showInQC: !0 }, COMMAND_COPY_SELECTION_TO_NOTE: { shortcut: ["ctrl+shift+c"], showInQC: !0 }, COMMAND_DEVELOPER_TOOLS: { shortcut: ["ctrl+shift+i", "f12"], showInQC: !0 }, COMMAND_DOWNLOAD_EXTENSIONS: { showInQC: !0 }, COMMAND_EXPORT_DATA: { showInQC: !0 }, COMMAND_EXPORT_SETTINGS: { showInQC: !0 }, COMMAND_FIND_IN_PAGE: { shortcut: ["ctrl+f", "."], showInQC: !0 }, COMMAND_FIND_NEXT_IN_PAGE: { shortcut: ["f3", "ctrl+g"], showInQC: !0 }, COMMAND_FIND_PREVIOUS_IN_PAGE: { shortcut: ["shift+f3", "ctrl+shift+g"], showInQC: !0 }, COMMAND_PAGE_SCROLL_UP: { showInQC: !0 }, COMMAND_PAGE_SCROLL_DOWN: { showInQC: !0 }, COMMAND_PAGE_SCROLL_TOP: { showInQC: !0 }, COMMAND_PAGE_SCROLL_BOTTOM: { showInQC: !0 }, COMMAND_FOCUS_ADDRESSFIELD: { shortcut: ["f8", "ctrl+l"], showInQC: !0 }, COMMAND_FOCUS_PANEL: { shortcut: ["f7"], showInQC: !0 }, COMMAND_FOCUS_SEARCHFIELD: { shortcut: ["ctrl+k", "ctrl+e"], showInQC: !0 }, COMMAND_FOCUS_WEBVIEW: { shortcut: ["f9"], showInQC: !0 }, COMMAND_FULLSCREEN: { shortcut: ["f11"], showInQC: !0 }, COMMAND_IMPORT_DATA: { showInQC: !0 }, COMMAND_IMPORT_SETTINGS: { showInQC: !0 }, COMMAND_MAIL_REPLY: { shortcut: ["r"], showInQC: !0 }, COMMAND_MAIL_FORWARD: { shortcut: ["f"], showInQC: !0 }, COMMAND_MAIN_TOGGLE_ADDRESS_BAR: { shortcut: [], showInQC: !0 }, COMMAND_MAIN_TOGGLE_TAB_BAR: { shortcut: [], showInQC: !0 }, COMMAND_MAIN_TOGGLE_UI: { shortcut: ["ctrl+f11"], showInQC: !0 }, COMMAND_MAIN_ZOOM_DOUBLE: { shortcut: ["8", "numpad8"], showInQC: !0 }, COMMAND_MAIN_ZOOM_HALF: { shortcut: ["7", "numpad7"], showInQC: !0 }, COMMAND_MAIN_ZOOM_IN: { shortcut: ["0", "numpad0", "+", "ctrl+=", "ctrl++"], showInQC: !0 }, COMMAND_MAIN_ZOOM_OUT: { shortcut: ["9", "numpad9", "-", "ctrl+-"], showInQC: !0 }, COMMAND_MAIN_ZOOM_RESET: { shortcut: ["ctrl+0", "ctrl+numpad0", "6", "numpad6", "*", "ctrl+*"], showInQC: !0 }, COMMAND_MOVE_TAB_TO_NEW_WINDOW: { showInQC: !0 }, COMMAND_NEW_BACKGROUND_TAB: { gestures: ["26"], showInQC: !0 }, COMMAND_NEW_PRIVATE_WINDOW: { shortcut: ["ctrl+shift+n"], showInQC: !0 }, COMMAND_NEW_TAB: { shortcut: ["ctrl+t"], gestures: ["2"], showInQC: !0 }, COMMAND_NEW_WINDOW: { shortcut: ["ctrl+n"], showInQC: !0 }, COMMAND_OPEN_PAGE: { shortcut: ["ctrl+o"], showInQC: !0 }, COMMAND_OPEN_SESSION: { showInQC: !0 }, COMMAND_PAGE_BACK: { shortcut: ["backspace", "ctrl+left", "alt+left", "z"], gestures: ["4"], showInQC: !0 }, COMMAND_PAGE_DISABLE_KEYBOARD_SHORTCUTS: { showInQC: !0 }, COMMAND_PAGE_FAST_FORWARD: { showInQC: !0, gestures: ["06"] }, COMMAND_PAGE_FORWARD: { shortcut: ["ctrl+right", "alt+right", "x"], gestures: ["0"], showInQC: !0 }, COMMAND_PAGE_TOGGLE_MUTE: { showInQC: !0 }, COMMAND_PAGE_MUTE_OTHER: { showInQC: !0 }, COMMAND_PAGE_MUTE_ALL: { showInQC: !0 }, COMMAND_PAGE_UNMUTE_OTHER: { showInQC: !0 }, COMMAND_PAGE_UNMUTE_ALL: { showInQC: !0 }, COMMAND_PAGE_REFRESH: { shortcut: ["ctrl+r", "f5"], gestures: ["62"], showInQC: !0 }, COMMAND_PAGE_RELOAD_NOCACHE: { shortcut: ["ctrl+shift+r", "ctrl+f5"], showInQC: !0 }, COMMAND_PAGE_REWIND: { showInQC: !0, gestures: ["42"] }, COMMAND_PASTE_AND_GO: { showInQC: !0 }, COMMAND_PIN_TAB: { showInQC: !0 }, COMMAND_PRINT_PAGE: { shortcut: ["ctrl+p"], showInQC: !0 }, COMMAND_READERVIEW_TOGGLE: { shortcut: [], showInQC: !0 }, COMMAND_SAVE_PAGE: { shortcut: ["ctrl+s"], showInQC: !0 }, COMMAND_SAVE_SESSION: { showInQC: !0 }, COMMAND_SHOW_BOOKMARKS: { shortcut: ["ctrl+b"], showInQC: !0 }, COMMAND_SHOW_BOOKMARK_BAR: { shortcut: ["ctrl+shift+b"], showInQC: !0 }, COMMAND_SHOW_BOOKMARK_PANEL: { shortcut: ["f6"], showInQC: !0 }, COMMAND_SHOW_CLEAR_PRIVATE_DATA: { shortcut: ["ctrl+shift+del"], showInQC: !0 }, COMMAND_SHOW_CONTACTS_PANEL: { showInQC: !0 }, COMMAND_SHOW_DOWNLOADS_PANEL: { shortcut: ["ctrl+shift+d"], showInQC: !0 }, COMMAND_SHOW_EXTENSIONS: { shortcut: ["ctrl+shift+e"], showInQC: !0 }, COMMAND_SHOW_HELP: { shortcut: ["f1"], showInQC: !0 }, COMMAND_SHOW_HISTORY: { shortcut: ["ctrl+h"], showInQC: !0 }, COMMAND_SHOW_HOMEPAGE: { shortcut: ["alt+home"], showInQC: !0 }, COMMAND_SHOW_KEYBOARDSHORTCUTS: { shortcut: ["ctrl+f1"], showInQC: !0 }, COMMAND_SHOW_MAIL_PANEL: { shortcut: ["ctrl+shift+m"], showInQC: !0 }, COMMAND_SHOW_NEXT_PANEL: { shortcut: ["alt+f7"], showInQC: !0 }, COMMAND_SHOW_NOTES_PANEL: { shortcut: ["ctrl+shift+o"], showInQC: !0 }, COMMAND_SHOW_PLUGINS: { showInQC: !0 }, COMMAND_SHOW_PREVIOUS_PANEL: { shortcut: ["alt+shift+f7"], showInQC: !0 }, COMMAND_SHOW_QUICK_COMMANDS: { shortcut: ["f2"], showInQC: !1 }, COMMAND_SHOW_SETTINGS: { shortcut: ["alt+p"], showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_1: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_2: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_3: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_4: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_5: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_6: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_7: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_8: { showInQC: !0 }, COMMAND_SHOW_WEB_PANEL_9: { showInQC: !0 }, COMMAND_SHOW_WELCOME: { showInQC: !0 }, COMMAND_SPATNAV_DOWN: { shortcut: ["shift+down", "s"] }, COMMAND_SPATNAV_LEFT: { shortcut: ["shift+left", "a"] }, COMMAND_SPATNAV_RIGHT: { shortcut: ["shift+right", "d"] }, COMMAND_SPATNAV_UP: { shortcut: ["shift+up", "w"] }, COMMAND_STOP_PAGE: { shortcut: ["esc"], gestures: ["6"], showInQC: !0 }, COMMAND_TAB_REOPEN_RECENTLY_CLOSED: { shortcut: ["ctrl+z", "ctrl+shift+t"], gestures: ["60"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_GRID: { shortcut: ["ctrl+f7"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_HORIZONTAL: { shortcut: ["ctrl+f8"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_VERTICAL: { shortcut: ["ctrl+f9"], showInQC: !0 }, COMMAND_TAB_STACK_UNTILE: { shortcut: ["ctrl+f6"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_HISTORY: { shortcut: ["3", "numpad3"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_ORDER: { shortcut: ["ctrl+pagedown", "2", "numpad2"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_SETTING: { shortcut: ["ctrl+tab"], showInQC: !1 }, COMMAND_TAB_SWITCH_FORWARD_HISTORY: { shortcut: ["4", "numpad4"], showInQC: !0 }, COMMAND_TAB_SWITCH_FORWARD_ORDER: { shortcut: ["ctrl+pageup", "1", "numpad1"], showInQC: !0 }, COMMAND_TAB_SWITCH_FORWARD_SETTING: { shortcut: ["ctrl+shift+tab"], showInQC: !1 }, COMMAND_TAB_SWITCH_1: { shortcut: ["ctrl+1", "ctrl+numpad1"], showInQC: !1 }, COMMAND_TAB_SWITCH_2: { shortcut: ["ctrl+2", "ctrl+numpad2"], showInQC: !1 }, COMMAND_TAB_SWITCH_3: { shortcut: ["ctrl+3", "ctrl+numpad3"], showInQC: !1 }, COMMAND_TAB_SWITCH_4: { shortcut: ["ctrl+4", "ctrl+numpad4"], showInQC: !1 }, COMMAND_TAB_SWITCH_5: { shortcut: ["ctrl+5", "ctrl+numpad5"], showInQC: !1 }, COMMAND_TAB_SWITCH_6: { shortcut: ["ctrl+6", "ctrl+numpad6"], showInQC: !1 }, COMMAND_TAB_SWITCH_7: { shortcut: ["ctrl+7", "ctrl+numpad7"], showInQC: !1 }, COMMAND_TAB_SWITCH_8: { shortcut: ["ctrl+8", "ctrl+numpad8"], showInQC: !1 }, COMMAND_TAB_SWITCH_LAST: { shortcut: ["ctrl+9", "ctrl+numpad9"], showInQC: !1 }, COMMAND_TAB_VIEW_PAGE_SOURCE: { shortcut: ["ctrl+u"], showInQC: !0 }, COMMAND_TAB_THUMBNAIL: { shortcut: [], showInQC: !0 }, COMMAND_TASK_MANAGER: { shortcut: ["shift+esc"], showInQC: !0 }, COMMAND_TOGGLE_FOOTER: { shortcut: ["ctrl+shift+s"], showInQC: !0 }, COMMAND_TOGGLE_INTERFACE_COLOR: { showInQC: !0 }, COMMAND_TOGGLE_MENU_POSITION: { shortcut: ["ctrl+m"], showInQC: !0 }, COMMAND_TOGGLE_PANEL: { shortcut: ["f4"], showInQC: !0 }, CONTRAST_MINIMUM: 0, DEFAULT_TAB_PAGE: "", DEFAULT_TAB_CUSTOM_PAGE: "", DEFAULT_SEARCH_ENGINE: "1", DIM_BLURRED: !1, DISABLE_KEYBOARD_SHORTCUTS: !1, DISABLE_SINGLE_KEY_SHORTCUTS: !0, EXPAND_BOOKMARKS_MANAGER: {}, EXPAND_BOOKMARKS_PANEL: {}, EXTENSIONS_TOOLBAR_VISIBLE: !0, EXTENSIONS_TOOLBAR_TOGGLE_BUTTON_ENABLED: !1, FOCUS_CYCLE_TRAP: !0, HUE_BRIDGE_IP: "", HUE_ENABLED: !1, HUE_GROUPS: [], HUE_LIGHTS: [], HUE_LIGHTS_SELECTED: [], HUE_USERNAME: "", KEY_ACCESS: "-1", KEY_ACCESS_OS_DEFAULT: !1, KEY_VIVALDI_MENU_POSITION: "f2", LINUX_ALT_CONTROLS: !1, MAIL_IMAP_LOGS_ON: !1, MAIL_IS_TURNED_OFF: !1, MAIL_CHECK_INTERVAL: 15, MAIL_COMPOSE_HEADERS_HIDDEN: [], MAIL_READ_HEADERS_HIDDEN: [], MAIL_SEARCH_ASCENDING: !1, MAIL_SEARCH_THREADING: !1, MAIL_SEND_OR_QUEUE: "send", MAIL_VIEW_LAYOUT: "top", MAIL_VIEW_POS: { width: 400, height: 240 }, MINIMALISTIC_UI_RECOVER_INFO: { SHOW_PANEL: "", SHOW_ADDRESS_BAR: "", SHOW_TAB_BAR: "", SHOW_VIVALDI_FOOTER: "" }, MINIMALISTIC_UI_SHOW: !0, MOUSE_GESTURES_ENABLED: !0, MOUSE_WHEEL_TAB_SWITCHING: !1, MOUSE_WHEEL_PAGE_ZOOM: !0, NOTES_ADD_SCREENSHOT: !0, OPEN_SAFE_FILES: !1, PANEL_POSITION: "left", QUICK_COMMAND_OPEN_URL_IN_NEW_TAB: !1, QC_LAUNCH_BOOKMARK_ON_NICK_MATCH: !1, BOOKMARKS_CONFIRM_BEFORE_OPEN: !0, BOOKMARKS_CONFIRM_THRESHOLD: "20", BOOKMARKS_SINGLE_CLICK_IN_TREE: !1, URLFIELD_TYPED_HISTORY_ENABLED: !0, SEARCH_FIELD_TYPED_HISTORY_ENABLED: !0, SEARCH_FIELD_ENABLED: !0, SEARCH_FIELD_SUGGEST_ENABLED: !1, SHOW_ADDRESS_BAR: !0, SHOW_DOWNLOADPANEL_FOR_NEW_DOWNLOADS: !0, DOWNLOAD_NOTIFICATIONS: !0, SHOW_FFW_RWD_BUTTONS: !0, SHOW_FULLSCREEN_BUBBLE: !0, SHOW_NOTESPANEL_FOR_NEW_NOTES: !1, SHOW_PANEL: !0, SHOW_PANEL_SWITCH: !1, SHOW_TAB_BAR: !0, SHOW_VIVALDI_FOOTER: "on", SPEEDDIAL_ADDBUTTON_VISIBLE: !0, SPEEDDIAL_COLS: 6, SPEEDDIAL_TITLES_VISIBLE: "always", STARTPAGE_BG_COLOR: "#cccccc", STARTPAGE_BG_COLOR_USER_DEFINED: "#bfb8b0", STARTPAGE_IMAGE: "./../resources/bg.jpg", STARTPAGE_IMAGE_REPEAT: !1, STARTPAGE_IMAGE_STRETCH: !0, STARTPAGE_IMAGE_USER_DEFINED: "./../resources/bg.jpg", STARTPAGE_SHOW_IMAGE: !0, STARTUP_SESSION_URLS: [], SWITCH_TABS_AT_WINDOW_EDGE: !1, SYNC_SETTINGS: [{ id: 1, name: "Apps", selected: !1 }, { id: 2, name: "Autofill", selected: !1 }, { id: 3, name: "Bookmarks", selected: !1 }, { id: 4, name: "Extensions", selected: !1 }, { id: 5, name: "History", selected: !1 }, { id: 6, name: "Passwords", selected: !1 }, { id: 7, name: "Settings", selected: !1 }, { id: 8, name: "Themes", selected: !1 }, { id: 9, name: "Open tabs", selected: !1 }, { id: 10, name: "Notes", selected: !1 }], TABBAR_WIDTH: 180, TABCOLOR_BEHIND_TABS: !1, TAB_ACTIVATION_PREFER_RELATED: !0, TAB_CLICK_ACTIVE_OPENS_PREVIOUS: !1, TAB_CLONE_PLACEMENT: "rightofcurrent", TAB_CLOSEBUTTON_ENABLED: !0, TAB_CLOSE_ACTIVATION: "activation_order", TAB_CLOSE_ALIGN_NEXT: !0, TAB_COUNTER_DETECTION: !0, TAB_CYCLING_ORDER: "recently used", TAB_NEVER_CLOSE_LAST: !0, TAB_NEW_PLACEMENT: "rightofcurrent", TAB_POSITION: "top", TAB_SCROLLING: "off", TAB_SELECTION_ENABLED: !0, TAB_SELECTION_INCLUDE_ACTIVE: !0, TAB_STACKING: "on", TAB_STACKING_ALLOW_RENAME: !1, TAB_STACKING_OPEN_IN_CURRENT: !0, TAB_SWITCH_VISUAL: !1, TAB_THUMBNAILS_ENABLED: !0, TAB_UNREAD_ENABLED: !0, THEME_CURRENT: "Light", THEMES_SCHEDULE: [{ id: 0, minutes: 30, hours: 7, themeName: "Light", undeletable: !0 }, { id: 1, minutes: 0, hours: 20, themeName: "Dark", undeletable: !0 }], THEMES_SCHEDULE_ENABLED: !1, THEMES_SYSTEM: [{ version: .1, name: "Light", colors: { baseBg: "#ececec", baseFg: "#3b3b3b", highlightBg: "#006ed7", accentBg: "#c83838" }, settings: { accentFromPage: !0, accentOnWindow: !1, tabsTransparent: !1, borderRadius: 0 } }, { version: .1, name: "Subtle", colors: { baseBg: "#f6f6f6", baseFg: "#333333", highlightBg: "#006ed7", accentBg: "#cccccc" }, settings: { accentFromPage: !1, accentOnWindow: !0, tabsTransparent: !1, borderRadius: 0 } }, { version: .1, name: "Redmond", colors: { baseBg: "#f5f4f6", baseFg: "#1e1e1e", highlightBg: "#0070da", accentBg: "#0070da" }, settings: { accentFromPage: !0, accentOnWindow: !0, tabsTransparent: !1, borderRadius: 2 } }, { version: .1, name: "Hot Pink", colors: { baseBg: "#412d38", baseFg: "#f5dbef", highlightBg: "#ff368f", accentBg: "#b63e62" }, settings: { accentFromPage: !0, accentOnWindow: !0, tabsTransparent: !1, borderRadius: 4 } }, { version: .1, name: "Olive", colors: { baseBg: "#daded3", baseFg: "#192419", highlightBg: "#ff7700", accentBg: "#566e49" }, settings: { accentFromPage: !1, accentOnWindow: !0, tabsTransparent: !1, borderRadius: 5 } }, { version: .1, name: "Dark", colors: { baseBg: "#26272A", baseFg: "#ececec", highlightBg: "#006ed7", accentBg: "#c83838" }, settings: { accentFromPage: !0, accentOnWindow: !1, tabsTransparent: !1, borderRadius: 0 } }, { version: .1, name: "Human", colors: { baseBg: "#41403b", baseFg: "#e4e4dc", highlightBg: "#ed773d", accentBg: "#e95421" }, settings: { accentFromPage: !0, accentOnWindow: !0, tabsTransparent: !1, borderRadius: 0 } }, { version: .1, name: "Blueprint", colors: { baseBg: "#2e3a50", baseFg: "#ffffff", highlightBg: "#ffb608", accentBg: "#ffb608" }, settings: { accentFromPage: !0, accentOnWindow: !1, tabsTransparent: !1, borderRadius: 0 } }], THEMES_USER: [], URLBAR_SEARCH_DISABLED: !1, USE_ANIMATION: !0, USE_BUTTONS_IN_RANGE_CONTROLS: !1, USE_CLOSE_ON_DOUBLECLICK: !1, USE_NATIVE_WINDOW_DECORATIONS: !1, USE_SETTINGS_WINDOW_AS_TAB: !1, USE_TABCOLOR: !0, USE_TAB_TRANSPARENT_TABS: !1, USE_TOOLTIP: !0, VIVALDI_MENU_POSITION: "vivaldi", WEB_PANEL_UI: { showToolbar: !0, allControls: !1 }, SEARCH_ENGINES: [{ Id: 1, Name: "Bing", Keyword: "b", Url: "https://www.bing.com/search?pc=cosp&ptag=AD6C08C471A&form=CONBDF&conlogo=CT3210127&q=%s", FaviconUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAABR1BMVEUAgnIAgnEAfWwAf28AgXEIhnZAoZUVjH0Ae2oAfGsAgHAMiXnp9PPo9PKbzcdQp5wOiHgLiHji8O7////I5OAIhnXh8O7n8/EMiHgAe2sAfm4JhndHpJkmlYdltKr3+/q93tpls6kYjH0HhnYIhXbo9PPr9fSz2dRWq6AQiHkAeWiSycPj8e+l0sxJpJkKhXYwmo3J5OEMh3cCgXCt1tHt9vYQiXoAgXACgXFKpZq229bx+Pfn8/IPiXoAdGMdjX/D4t4NhnZ1u7Ls9vXs9fUQintaraLX6+nU6ucLhXbe7+xCopa02tX6/fyYzMUdjn8AgG/5/Py43Nc7nZAAemkAf27i8O/W6+hdrqMAfm0AfGwKh3ft9vV2u7INh3cAemoBgHBFopbB4d3+//8jkYMDgnJgr6XZ7eq939pAn5MSiXp8v7Zjs6nfb/V1AAAAAWJLR0QTDLtclgAAAAlwSFlzAAALEgAACxIB0t1+/AAAAP9JREFUOMtjYKAWYGRixivPwsrGzsHJhVsBFzcPLx+/AAtuBYJCwsLCIqIsuBWIARWIS3DhVyAmSAcFklKMeBVIy8hKcTDjUcAiJ6+gqMQkyYVLgbKKqrCwmrqGJid6qMLcoKUtDAI6unr6LFgVcBgIQ4GhERc2BczGJlAFpmZYFXCZW1haWYMU2NhiV8DAbGfvgEcBM4ejkzPYChdXbAoYmNzcoW7w8GTBVODl7QOV9vXzD8DizUCYH4OCQ0LRAypMGA7CIyKjMII62gYmHRMbF48l5SUkJoGlk/1SQrAnCs7UtHRh4YxMSSlcaYYlJCs7x4KTAQ8I4OBkYRgAAADZQSnp408zDAAAAABJRU5ErkJggg==", SuggestUrl: "https://www.bing.com/osjson.aspx?query=%s" }, { Id: 3, Name: "Yahoo!", Keyword: "y", Url: "https://us.search.yahoo.com/yhs/search?hspart=iry&hsimp=yhs-fullyhosted_009&type=dpp_vvldnu_00_00¶m1=1¶m2=pa%3Ddowncoll&p=%s", FaviconUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAABMEAYAAACXB41oAAAqaElEQVR4Ae2dB3hVRffuZ5%2BWTggl9B4g9Bp6Cb2G3ps0KUqRqiAgCCIgSBVCERAUBASkCwhSNfQOCaEEklASCOnllL3vb44crx%2Bf3%2F%2B79z43JNHM86wzu8yesuadd62ZXY7SdYMQe301TWSHbA2kgwYM4rIQ2vZ0yDk7y2wNoAGDOMbvwmxdZGsgfTRg0H6CwT5Nn8yzc83WgEHsQQkfZisiWwPpowGD2AGDjU6fzLNzzdaAQfsOJQzOVkS2BtJHAwaxEQbrmz6ZZ%2BearQGDWAvAOv0DFKG80UZn9g1IPsQF8URMiA6RaRMRC%2FIcSUESXu8TCblqmL1yKDXxX4NBW0Wa1v81XdZNUJ6q50I%2BABNnhbBNJwY46mmOAS7tPrKA7S3IPSQVsSH1kfxgTYKsL7gDcMol4hPERREvhDzFLSQGkelU5E0gc%2BifHJROrYT4oc%2FfYCVfdqyUKkhu%2BvpHgONBv59guynkNFSs0tUQIo8okc%2BlJNgZW6K%2BSxT714p96QKbuXl6jTRMJYsAnZcyF5wFJuyyrgE7nSMHp90W4lmFh3WTuwsRVezenZR9QiQfS3tlBYT6wlzTEjIcAPj%2B7MsmUQ8Jun844AzaIjoCRWW54DBTFag5DGWfrMAoFhjJ9ohDP%2BYb6zxPCL%2FOAbnz1hSiZvuAEO%2BeQhT9pOIF91oAqmeuAQY9wDhgHKCbQB5HlCWiOXjwILc25LdEe1fcAJwdbP5aaaxkQMJFG8ef3g0dnJxDiGtTj1R5QfqgAj90fh4hRIR3qFdSMoALJ4%2FqxL8Sc50WRN7PXmv3Hwg2pSMjb3tQFmSwBnRaASGsP9OJdWGor1w66Vg0btpr0PlCBiFafj68eRFXmGpVqbyuLMWoc9RYbSjgUy2fyk5XtigvlbawzjJ9P7GNvC4p9RUAiC%2BWz%2B6LddXStENcN1XdI%2FpRxgO1pzab9DX0AQqAMjQzHlFgtLilUe%2BZMbVnvL7v%2FKy3EAeuLZ33KEGIlyWf%2BaXCpiaYVPcO%2BToj1EukIdIE%2F0OC0iFSiG1JWQdgSkXAkVsIcyP6aYUQhdaWjnHHhxo4beHnZWGNSrmamXLTqdZPLTptMcAIsE3UutC3M5xW6Z5wTW3rOu0mwOj8vF7aWEzg9ciTacPw6bfF7LQ0J72XNl9bJ4TrRs9dBqMQXh8VfM85gNi9wH2nUgCmkvNZHXWwrElbq8JQ4r64LaI5vt25t66HEJHxwT8nXRBi0%2BqPgkNIf7XO0eUvNgphnAjQ2pF%2BNFIZge3sJpTo7xyUDiMAWJFMDDDHbA0zJ7wBFixgmyyEb8e6HvjZ4v1Wa0ZV2s4pvxLeLjCS%2BVLKNZVONDZy3qWD5ZKevOpn6SDE5eBD%2B6ODhTg3%2B8flz2G%2BR12ubkw4wuSwU8xA814AeSuto4avJllLPAaQ3YyzlCEALTBnS8MYIQrP863mPg%2BTq%2B840bsF8foO3vnWYordCrR2om7m3qlX1NVcd8G0SVnGvk%2BKReUe76alk71CfhPieINNh8Mx30YYTFeYMvoyUMoSSz%2Ftb8xoSsBzIb5vkkkBBriUOnQAszmzNFfHhfAZXr2%2BZy4hJlzb%2BrjqUSFybs7%2F2MkFgPhaumkwkeG0cbDyNRbvyIHAaDpwZ4v5ve9h0h4%2BvtYnXkdenyIX8ZE%2BpqMnkX839r8knonUYpu8pCnTApGbCGAT88HAK7YPIhuQUUIU%2FLnkRDcA06HkuG4lYKpGp%2FoYCgJk0ruKOPKqrfQRjABtqVZOXBViXdXR52%2FvEuKXAlvuRwBcE2XoAaJMK8zI3zQoATDY1oGZEGA50bgTHduETrqGa1TW%2B6VpthBTfffMqZkoRJGmFd73mAOwwsxRKmlgneXS7Oxs%2B%2FniewBnb9slyQ9Pcr3FVlLe0DcuB1CAROBzCl8EcNg7VyWW4U0H3MGcjuOSddyRO0gM5Q6V%2Fhl1A6iijxD%2Bk%2Fq2KwRQB6yat8S3GlWv4HbBkJdz4eKeRnrzmZTlKj7bgkPdllz%2BmWzG%2FtY3BhNrBOC69qS79Xu%2B%2F1YPDmflYNCmoaRCmbAJQdTpGXVrp3irK4Tofmza1z7eQhQbWXlmDkxUmiH5orQsuor6%2FQrg%2BVY%2F9UAw7dg%2FLXDrQ5xu0xLOAQLjPLDzknxuI8T2DnSARgLm%2FzZI4OWAfQCcso9tT8RNiGN9vjsQ%2Fg6u1Q9xba3Ue2TFNbsrwYLG5U6xui34%2BOs8mhguC9HfMC%2BqLIz22S8dDBdg5NRycVZrefI6hZwhLyviAD2bWT0o7RnR3y3PRAyWB5VipiyMehXfpWJsg9a5GwjxUaHdPn6zODdaeSRgCKO7UxNdHSEODf3qXNhZITY0%2BWjbbTrMmAKwMI1KLGlHIORjXzwlSpfgTK56BMdervqnYj5tmPMO60f2KBkOoJ5%2Fvsn3B4kbS1utEcwW55pHbxJi8%2B0pPe8cFmJPpWVd72PyTQPJRubxBIGh%2Fy5BaQflf7stEwHsHKqFAWxdlRXSNI4vvMmzOqavtm%2FnGfl7cbyRVWh0RMSK2%2F4JY4SYNapNv3NFYY7QuGaWuYALH0kpQx5PEa57aybHlbIMsGQYsfTz1hlGMb8Ukytv%2B7EmDFV1WYuReQGj7VfbWU0nRLTukXfyUSFmPGzm8dsCJhs%2BL5ebO1H%2FeKp8j%2BslPTvMNJtZNSjtOjCajmUCgKF0CQYrrMMSpyhywVfvHgyAGhx1qwdonLa6euqZgen9DGN1LC8EDnov9hoMd8ztuzmPYQynCZyjg%2BTiqHjxe15vDVwU90coyRZm09wbBp7OssmpBh3yxMHAll2X%2FPAhldo6k%2FIFTHvB6aGuhBArXIeUuvpQiJOB2%2B%2BH0w5TZdpxijzk4JDmMosHg%2FYRHQpFZ3iQDjEsYANgtmNCVLA2%2FCb3Nvzqcl55jXSWdaxlktYKcnN7cDCpK7PEMgfGP28IaZyn02A8eX9RwySJ9kjuDGzNa%2F%2FO2Jp61RQi2DvowEt3bnPeuLg3FlYqN7f%2Bs1x7OXdIGS8w7dVqtxqS11uIU3O2Tw1PoQ0MNA0mlEsy0tfL6sEgJtMgr0zQDGfqgGKVocSYt9K96sR4nWG7i5gmFyb1uwzbFFgqOPpsjZj3hIjtGWtIBWCm2piVu6SjM7X8xJkl4CeKYUxGbltttl8g1grHDdG0r0KuhoNyX2LAfGdZreFTlvCtEuxZjnnC%2B%2B5TjUxCUnImzrXiP%2BqYcconXewOfxY2lQYtkwBMa4cyd2LqKht%2B0VOn%2FC1LfuQGE9mmWsdpbVB4hP4zhfWiB59eqx0bhd4Z4eo7gOpXQFmLayOQBCSzhNeMrAykQgyU%2B7OvTY2tBLBWm%2BurDBBtpYgV%2FbGmQ7xrOsFkOccXjDV9wMJw4l1hXkmbWAKRdyzsa2QwX1YNdgazP86SUS3AJEhfSTuN%2BAGwSPdyujmYxh%2B9kox3OOah9hIzANMiLVHrjHO8MrxtMr6LMkB8LLZzrZwUjEEyG8Awi8JIPfEXRVcms7siBqeYYLTDKa5qQZh3gUtB3VLiIJeJegaWu8hd3AhrqS7IYBgb10UvXZdUJCsDTJtCJ2akD%2BYAmARTKEy1w%2FSuXIk3LOIphwcot4z4Ti4DqB%2BqNzX8qzSP5JJynUn4kN4faYncZD8aoUMzTXCiJgbElfr1g4hKpQyX905VJ%2Bt5NZDjh0RbHQyl1NHpxEGSJpj66GaSdpUYKh8A%2FcM3ZmKTpQFm98EkFWdUeA0wUR6llkSXY615VZxdW0NrUfVbKpVblJB11PXSbVfYN3m4bNclkTYfcobzp4ilOYpEpB%2BXWYIbFQHw2ofIRQBU3rmDMph2zDUUVGiruCbC5Oq9lk%2FtI5ZhOhMtFWxfcZw2aQnEt4llv2R1gNkZzJuGZFR4PesSrGVp89Dnh4m15IN8yfvjSlgAmvJxsXcE5kK3Q%2F9c%2BiS5qxQa6VwEJugpdqv4ZNoQzoVR%2BccI5iXTBAl62EvFkVd9eRrDUtDi1JoBst0lRH%2BXc4HcEX3FgrJ3mq9tI2urpWJHmy9z%2FGdEguwKIvslqwMMT0ZoBWhIBgcFMImZuBx1zSMsk1gU3%2Fa4RRJOcckW1QbktHCuIQ89F2bWtbDy7Jyr2G%2BOXKPuOREJxP7sZ4J2UIvfgwS7ASY%2BBMCYUZYYXDkyJ5MS4yjTBt1aGKuz5bF82Sa%2B7Yuu5h%2BYFXd8cj4VwHEX4rz02QTHtCfEKpKlZ5HTqH8hGpHRAcdXeKD4Uuh0uxChTy5UjqkjRL26nY8UPszxBLOXitkpd7He7DyzSdrLY5IJxac8T8hlWUfHfALI7pCHDZGdksFBe58K%2FASg9uoG63bwCJhXkwjvGKp2VOshRuHAPzCWl77m4%2Fm3jXEHAFq32BJpczl%2BQZxXfOiTqYjUSRYPBjlD04plglYw2uUbPbpAYn%2FWjTxPPYo6AYBuxP9iXSxnVMYtynQek1lWZqB7KAuUUS2%2FzzdUiBOldopHgMsZ%2F0a%2FgGsdDr%2FD9HLorYYilJYD0wfApA9Zbmf1j3M3Yq4yqtbWXG0ZKM%2FMenUJpvK4s1mPeb%2FifdTtWXuOh4htth60AcbT1yMPGOzv8ECiQZsJwErSmIwOEhAIDzAL5QHPb9W5kfzKS4gQj%2FOLXwCoyn2bVMsXRF2bq2vkDDJg9PtDSy%2FkHnPvQ2GRmBRzp%2BSBNsClG8710neBLeyvm72tdr2eNWq1KRBm0uVXkqSJ69hw7OOyeRgAhd03G2BiWyvLK20zj1TviVyXnMYdCbcjpqcNafdj6l2C9sHgWnHysCA2JIsHg5hDg3BCM0tQvqEmtfBtb1gP2hKYzY9Ym%2F%2FeQ56qGNP4jLc%2FOo%2B1hMv6lu7otzQXwOpSetwXvsy%2BNl3%2FTFy%2FzzoanauHKRRYT7RAkhAzkl7BQMY6RIJBo94qbLSINwHT%2Bkb6fEFTgtq3LvgueNmYOk0dgMm87XxR9xTmLb7lRVgUvqYW2SEBE2kCbPp48qDNWnrWlyLeZjBo2H37M%2BJvs9T%2Fg7LkbRMdZuJ8q5%2FqRDK6Ly48tOsJnVl7UkBq4fpgJjrV2TZDiE5tPljj%2Byt3l4o%2FGJ%2BA6TmyZ%2BuXD94DaDvpMBNAe4ZMpEDY5P%2FrSr8n%2BUnWOgggYNjUEWCsuhA12jYeVaAQDx7enWOtUolzH2hlxF7qUF23S75cEtc16mKaH%2B7ZmvWG%2B7FczwRAbCXdVeLhyG0kGvmbBKV5ASFWNcgET1O8qdAiHMCXsV7Cl2HEF85dulYOTOasufteNmG0e1XOX8UZU6MWsg3RnOncapaRaj6eCzN97HeVzj40%2FuudoTCIgqOtYHYNTADkozD2p1IBnh1s5ONgHrb%2BOkh2ksENkddJ0XMZLKuuon6JxLBk3bXtLhZJ4R2Bhsua1%2FJnEtI%2B123T95xvZDmmFqcOS5VLSmvi3rozYjf1q7Y27d5cITZ2n%2B55ZQIAi7ackV850pUjjTdlwMZyGSOrB6UZo2fl5EwIMKlZTI6ojRSGsYbRqXRM7bmtfy7M8Ynj1lep1xmTc9qlpZ4Rry1S9VpjOihE10d5wUsW%2FbbMfAgL7ri8aMwtABA5%2BsGchPmcpxPFMQAHq%2Bik38NMjTcif2cSBpv94UEJKlhJcL1WBfmKsk8R9ybGAZcr8XnW54twBbABl9%2Fz9e1G%2FM6IS2VgVP0Wk78umHQXLHNVTKPwE%2B0EZWCqX0lTraxQbirtwGlVl%2FF6mG6%2F28qrIQdw28wfz78MWLUEyzwxhbpVJS3ttgNN%2BpMySD81iwWlWV0hvjqYSQEmlSmVKsWK4N%2Bk4TPaDgvR2LfrxOKsNb3fZenPtWA6lyke7Y03SbbRbFEBg0lxbqp3wtc3Pg1NieR5q1479oXR1qAt%2B5eF9%2BFR%2Bc9u1YoHEMnbEiLM5GeronloSymDPOSTqbpK4ooCi7qMcJ1laMPN9%2BGll3l8AF5qt55VyJP3L3v37lSiHEtvo0vV9AjDx%2Foq7WsbPp%2F6TJ2iwUhMMp7an%2BnSs54vAesICcA2jSatUe4pHalnY5eZel%2BAVn9Vl5AvAVqnqepljmtPLTO0cdTDj7QlufgeAuCzGsiUpld46E3LxACTLCYDpknBNIkQlA9jmWcBiv0QT3RjjwI4xsNDF7Xyy8eb2%2FPLRXr6cP5pyhHbA9JPV%2FbI70wY9zq9px%2FE8ZMpBWw3%2BATApvCQpKI8X3bvYUDCbtah1kcvScOkacFae20klrSEV1Onany%2Bwq3YFLeTMi7e1%2F0XAOfr8cK4DSCr5s%2FkLS010lZQi4MRe5oi5GtyrM9%2FKf09237LQTWA8%2F3UI1pZjlcUjewfWqEI9qSJ%2Fh1ogcodpQPN83eZoa%2FEi7tTA5NCJvGkzsUpX146TuJDli6SOXVNEYAomVW%2BRJJVgKY0HQ7A2mZigMnO%2BHMwsiOB5ozg9Ju70pmYmlw3vZe4lGJW6Tb2vfIlmED%2BNqCCD23jSwB6EybIesxcR71Eh8fYKmmYUOWIbogSRlbjDD2URuznUD5VFpBnTu4HkLdWQbuiLSf9z7bHGqBWQ22u2nPSeekmyRmq4TNTOV1PmOto6nxbKyHOfr5n2%2BNwXg5a%2Fev1qB95Fj9iumtVynPb5VnIOIPyl1uaqwAdp76Z%2FY6D9gbQlimX7aazsctUfXUhDp9Yr4WO5o6SYeLcC59S%2FhFzf%2B0WIBtIHTDTDhOe2YGmNHUSYvm3WQhg6NYeFH6lMOolM9gqA4pFxHS2ulaI4t3KB3nBNE3695xQgo6t1ajt%2BcI5MXV5in%2FjMQXG2OFcTA%2FziE1KhOhGfEJsEA%2BJk3hOC19JNOZpLYAKIx2XjwLZplpuq5T18vzTiilLuEt16MSlp%2FN4z3Hk1sgHMOEtr9OfROGYp9YXU61wVMOEdobimLgPmgf2rMcEwWWpe17DWIA211JLBUCiOje7ChD%2Fb6DF2E3nIuU3pQ316%2BuyWo%2FJPXxv%2FbBQ9gOnT%2FQ6n0Q9tpq7aOcZGCNovj%2FX30UYMJkVaEoTlgKWO2VBgKHTP4I0Oh4Ig8VuQlG4tRxAw6yqZ%2BhDGCiHziPAuTHP%2BjeucN%2FTl9ffDpaNzvkKbKrFvnWPxSQG5BrFF3iErqMSouzCN%2Fs%2B4bClDH0XFHE2aSY%2B28XQRnE472Ftr9ePBWAxs6LdkkeRdwBlbsYEn%2BXayWx%2FSF83xFeU%2FiDOfL2qbUcVBZjjzqz%2Bvv5KgHbLfaSBSYL1Y4uvSh0BWgv7JOBNoC1QTslZp6m%2Fyyq5rne4yganUAC3KnbC%2BvOAS%2F3YXIGvZtjL1AFA2e4%2FljfkwMskQWnSS4hlE7I4wKQyJcj%2BHGAN%2B5LCc%2BJEOmQdSWA3%2BdkBtQLixb68ZhaAaIbY2J5NLFkrF%2BdII5YSV0VWcLw0AjAMX9OpYQinFRd%2BpNmDweyvmknmMyJ65AGCr2QHWkuAltjmYdFqAK3j6gL1SwG0eI9FRga3dbylmOpD2hqi5V8CbZ7yi0K9TWNddugxyUcabugaSh1Xbps4%2FZyB9rRIeyVNuX4m9elEPg6gZRKQKU2c0WPU3wBg6PZ%2FDLLTJSokKOgY%2B20kZqZywmBf7YfF7MdU4j8xopKHfQlWT0QyZBoiwWh5HRP9ZYA9ZTlaGDFMKb8xZsNRrxfYpl1RADY%2BaPW4%2Bt9QnWoe941MOqwDLa5qftL6iVaiELGD0RK5mjLxEA8qMJhpvssF%2FUiA1n3D16Hkv7LexGrnFpN3pbQQ9TOANp%2B0Pbg%2BFIHJMzoo%2Fr8AsFH%2FAIBllKYl0CS4HyOAOO0SYMJJrzuhdVxR%2FMbxtjWTG6Ty6Ng0D38j4LZ2t1jUnKT147uThYn%2FDDQYUvlE2SsZ17TY5Yp%2BLECbvtElFN9s1fhJ0ee43rYzZZ%2FamHTMaJWtXM8gkss7GRUU%2F2lCLEnNBli6d8BrRrM%2FeRsH0A4DhooArXHrqXagDVsT1GAoQNvsMdYIk1nbW2JVV2pVi8%2Fh%2FRlorychSnNlsOIDA571qG4sI8Tuhksm3nokxGqnj4qd2wx5Noew%2Fbne4ZuymRHBwCyJbwdkRNH%2F0DJfM5pTXohtqhC%2FLv5p7qNyENWtd4O1HHw1qOba6g3PAbTTHoeNdQCaZjmgRqCr2rzxWYT4Nq%2B5RHFtGUMLZQfrd4EvqqWGsT58KmjE80mc55jd5B8kxsfL6Nml4g%2BdLlmUzWB0xdsNDtP5nGKZhKQCCGtpGG1xqwlFuQU1IXJN%2FYY3AVrFHGWNgzlntnyqPoSZHhpb6mCllI2J3axLhFi8YGS1M5jesz%2FvfxC2ATcRcyhvg%2F2LWdTebtP%2BXJri7w%2FAFmcD7M9KeavbDqBJhzwZoG0BTDj5dbu28i56HaCFrGnY8DLLLAVzf%2BDEEkjCxldx5vEAa%2BaI%2FGdgsrMXDtQMw9eSX180%2FEYecqIgzWIG%2B17UwB6yAebQREbHRiogJwPMOOVsNhU%2FylqQWeeOVvHF5gkxtOrnL%2F2YzW54NSP54lreCxm7v0IYzOVUFGCd5RpvRM52MwmwqIk9GBwb2XEGa8BC%2BXL5g%2FU5uZTi3Bvg4HtdeHE4R%2FgRPlg3MMgj6kusaUhcgrk6wAJ8hpmklcDCd8tswKJG9qBzbGTHmUQDDqAxCZCMpAc8uvX47Z4Aqyb7TMoUZv72RdlMDCyHNrMB5tBEZosdQJMM5Q7IfgJY%2BFyiGCLXyTKZKaRGfxmyAfaXasmEB6X5zMAF0%2F9Xjbw9gEnlyOmydGTlfTJGpf3Wi9yW8t%2BCdGDljMvhDGdRhf%2B3Zv7bedlDUj%2BO%2BN8S%2FIcDjqUJfDX7bS7JenLhVh53nGMzvUP6A8wBrF5Aqga38PYxEGcxS%2BL%2BmXUnbV1EE48hcnotfQpHcADqPgeYwqcVJj2KsYTiC0uQduLltSrEBRDP17G8%2Fk0FOvZxnO3g9CGW%2Fo1j33GeQ%2Fbg2Jf3HeUUyJFe1kcec5yXsQzShMllgaJILsTRkSXZlvcx5Tnu9%2F5xHZv%2FEhz5ybRy0LE0IVf71fZcQu%2FYAIjamZj81B5IP47LdHcRaTJlmbJujnwc7ZL5cdyMjq1dEXSjHuBYN4Sb7nY2dLSB3fQK6Q8wqQw6hi%2FLuKsAo7Ffh2CfskL01o8pXOMog7ONrpD9wyf%2BpFvyp2Y%2BZzuR6xqgi6FCdDYN3V4lH6%2BDzehbRT5QyAsey7QIAIfSbC9Q5DLiEK6pjRRHJDhk6%2FyRMqQvTh%2FQIakA2voD%2B%2BQh9%2B1PQ5QidnRQTbaLcX4Bh6hn6irS7yFv1qe0TZyjLqIe25WJP6PcMZw7zQAIIt0lYtJY2xN%2FS8ztIOtx8vqctHIp4QEiZ4muiKybgsjyAKeVfXUX%2BfUlP67LsSbPeOdnPF603mdhrlrEtX1aeZnB64ncQ5xHkg5dWilfPhKkBpMHaez%2BGToV7KtTxGmtCM%2BlPQ7o6sOyR9l91Yp7TyfvQ5yTg1kOBAnGdA6ymekbpBIJfK%2F0mYYiX118WS75Kz7%2Bd3RunQZ0ZJ3Edv2Ko6g0gGSVo3EQUhcFwjI2WK7C53X7FKTDxmxZOtAfxSetidtiHkj6IqKtZLRK79TZVHAAj1VNaDi3CExoo5Ptj7%2BkkY%2BVbUArX9rI1TT%2FDbd1%2FIfR3h67fGexPyD%2FaDcJtBOcB0B29oRp5CDQ6CDPIbmDXPqR%2Fp0ezXw7Q7D5iy73eJ96wZq2DaTvr98uO7W2X4uZxb2F6HVpbETNr%2FkDjy%2FG3fHjfHeX9ytWI33ZBtXKe1MncwzXeZA3A0K%2BnOJgEvMFjg8DY8%2FLLvQazOM8%2FkuVJteEeKfl9Fe1B6KKQx0CSySD6Ukdhpd8F%2FWkfHKyTh8eZGz45dmm9fkrHWupxTl3k3958qF9agj5d2NMH3U%2FZmCQjh24pG0TBliTFT02lAFwFnRiQ7dCDioZp3OQ4zx9QyLZ09nG47hfjPQrx89q8qWLHzutevcarDPs1NwaDX7iDecXJ2qHz5aMkdDFQq2M24xT9P58b37q%2FJsNFvLSxvCdcfeK8eBpn%2F3G0Aaw%2F1antibiSePXVGjRFIWGuXgZNDrAUCV1cxxFJic7W0lvhTnUl8zqXcpU9izBV50DN99pw7AavbdJpR2beEbv7rPlCSchlLbUD2axBZC%2BP1%2FxUQu3kM%2FiTw%2FdNLnNRj7i275T5z20I9Yp3paylD%2BEyL82pBXlJHaPXZoGUA%2BU2VTh5mPuDarRjVNDsdynSwZ7%2FiLEu%2BM%2Bm1D%2FJu9s9Lp2PBrmW9twWpezPgDic9uvVjq%2BUnCdxELk9%2FGOjWmtaMeWngv6X2zFe5PVvj1yuznpYs0bbACYZyu6yEdwTN2dushHcgLyDLFUusifkJzZO7xjIR5l%2B77%2FR4fI71bXy2nPJkFQR10nugyByHc6VdHt5%2Bmdl1fKR2%2BANAG0IgfyfURF0jmg6nQOCvlLCUcYxcZKNJr97xot2HKhCUBplGOiCRD2ODpmWfXrdBBslspobNtrQIXyG7F2L8rvz71IiPWLZub59RwAKIFeuks3wj%2BoyFTyqmUYJz9UZ3U3l5cvgdTq22pQMVpl%2BZ60kRT9hHLn0lHDk1%2FKPzxI80v9UPoj5qLJwko9FEa0%2FCMH%2B7oSZkO%2B8iafzbcsTblog8nSxqeutlZlcb108ivp%2F42fu6RyUzOmqpRnXyfyWVBsZNzRGbhOa053j4QBw9cHe78C0Gf2H7TeTxJi3qR3449Sfqsn%2FeuXq8n38w3Doiv3pN5ppqn6jgyQ2YEnmh%2FkbSfjoZFhH%2FIV0T3r812lntoEc3%2BxC0ABLgkoU1HiLzm%2BL20Xj3OL72NX%2Bl%2B6QbmuZ9tEtuGW0vJVLZtXYKD9aKphQNcuM1ynmObQjoDU5%2FJ1v3uDrreJxjzqAZXuGO1NQCTLp3NIf4A5GpDKBp0pX49XaOiL3tHfJGpCbKz26YCgLgAsapxH9Vf4aHeajCxNhwz4dNrJ2nTU9uTF4y%2BTLuzhg7iY5wCUTtAHCtHmk4HvVCCfEx%2FunB3KiDx4e0PqLQDVrtvgCRWDUKJZlFVKU%2BYd5Blgq2UrKT9Nabtk2Sm%2F%2F5DimbTZcgkd00nWkQCOTrb1Ir7N%2FnucX5k821KY%2FXOpla1DwV%2FFou08awnRYHTHy6Xo7N0NAzde86QDX1hVmzsAgPUM%2B6hbdcoGiC7kayzJG%2BdtI1fFAcRTN3ZuvAdrdMg37Hol6lG7erPtxfPgW80pu8YLX%2B9o4tZcwWFcI3UkB8Z31HsgchmRg%2FM88ojjeuKVpFtPOgB4uOamyncor8yqao3zYh59F1d7mg8QueRyb2ZsyZvk%2Fi9mpIxBBd88nBaPydbHUr8D5IFO7UKUnuHtAczRiqNswAxON%2BkQQPfTqG%2FX3RnGx04q3Lr6Mhq%2FOX7XNwHN8LXyx8eYtzGik1eMusqI0zMKdYvpkIMlAqXPUfFo3aoFAMKxWVvrBv%2BGCd28Ky60Eq7FvCoD8m7hu2L1yi3PEwFYesN4dIzWT3MV35CHk%2F6kUgXfvnvHa6U%2B5u2jsC6Rvk74KNu7tClTjs%2BOTe7y1JfObHS8yz0frhOdxZcyfQG1%2BMQcAF%2FfX%2F9MNxDgxD%2BcED%2Be%2FYLkCVDtIHhFTOfaO%2B51rFRkn%2Fo%2BXBI84mUZJpbWgkPcv%2BaPGY41rFz4OAAelrJBMmtM%2FNNLSbPIj3PKZ1yDbv7y6zqyTjGUCQAl075YFX4x0YfB0cl2RvuAd5S9fETOjriUK%2FJcdKb9Dy7f1L8ozn30kLQYcwGuAdRSD28rvH2AKb83Tb50Kv%2BbJ%2FVo2hYLo37zgbkzzgMUl2HuU0yTMQE%2FLqxyaSc%2BT5W4EslX6Dc6XT0IABb28fOFlaJyhfdNaMKMvtjj5nGD2A9%2FeimRDnzsHjwwhlHe9oNBeSr8CMDwU9TFlBnPP3anEJfgyfXcHDtmPSz%2FdlndwFs668FEG8tNjbqpR81Ntd10WCPzIXU46YPEXS2MOCeLDi7EJhYdJItE8IruK2IZXrfp9503fm3sS7Z4qJ2SwGCmV9H%2BHf8m%2BFTUV5RX6tiXWkpi%2BGTnO4D1P%2BVJsj8e2S4r6ije7HfnLahqFBWkVZdf7M45Ot8kl4WYxnZXCrzw5zhgk38haF%2FaSCB%2BS%2BHtA8zRMEyIXO%2BR%2F86hewkB5Aut8KoGOAh96ZSCiQureWvnS0aybg%2F9h9nIkeKmuRQFYL59VviuY%2BS3T7knH2vpnzSxUS0jsy7rR5%2FXrgmgclrW2ABio%2Btd6%2FvMYrZY232Q60oUvFjrr8EUapqtrHZdiN%2BKHij0ECf9WPf950Ka8vrZzX3hd%2FfzyYHv998JGceqQty%2BhQ8AOGy7QprYpzFhk%2BMxNbbDtqoqx%2FOfLdEhx7vsS%2BCXJF1ZRHb0a%2BZyPElq%2F86sH77kwHILcl%2BDcQo9DUqEaa5%2BdWZSBOU4%2BbvUN9RiUnG1oLsbgJWfJpCfBbWvbcGs%2FxZKcSQvxQBOvr8t8voV%2FcC9K9agj8FZB3AerwhVXj1hNWSO90DX1ezPvPs4piV6DEePMJj9L3bi%2Fy3XdDuQcQCTI1TKKuQ0ChpmeipNoD7YEKTbio%2BR13RZn4iPdAKlD8CkNe1wtCQd4h7g%2BYNpGaZ078DIwy94rdFpTrdzQ4nXzD59%2FjD%2B%2FOyBz47Q8boo3TT56n8TtduSMmfJ46Vtk0pH6scaJuhgFJcDbgeNnhBSA8reQEePID7CPh1sgNGc27tVlC9jmCY75zec4uM8Fx8Hxv0K8Orve%2F9Bc17wHTqyZpUO1LOR%2FqXeHcBTV9t0WQ4dTzkpgNvihe%2B2o8DQHJj%2BRl90WecDY%2B%2F9NXDDDUzbuSPH0sIeMbBWhHzw6imTAOd%2BX5RvzTWwuQ1AyjUxjbrZ%2F3owPzHmWy5Gyz%2B412BFSzDbX%2BGLzhtoKA%2B4Q3dfSYnqzEtF7a9WivqUem8x9jfcp95fPCwbx8DTU5YiB4xkUylvKejeUjn%2FsRj%2BkMD%2BpWjDGOMPOka%2FIcZYXdcGhUQaB%2Bl2syZpNh41XRKiZ8T44Bqf8IjxxP3fPPySgTjxSbM4FGv7xlpVAyBqM2spFZBE%2FxidmPA1zv%2B7O8qHTuQT9X3GtKoKMPNMKlLaPRJA3DG11F2lA7a67jE8oGw6Tv4Xt8PM2T92MpfzXzj30NcBeC2c3zF8CyCLu601BvDfpSljLxwDyEm6%2BG5mmHSiz8o1zWey3NCjbqGCvfERC%2FtGeQGoBg3a%2FFRqFOcrBVZqPgdn%2FMCme7eXArAuX7e4cRemnZsWI9e%2FFv40suwx0tU63%2FJMsWasp20aGV0DJtOfcEnVrQa4gMQGc5pDiEejnxC3z%2BQnCvpdGlvcrw9f3rrd4GihzeRz9P3cx%2BhNa6plrm0bvu3p74y3jXxm49SDAwkzyA%2BmlX8U9gfDsvk2QsY9cKineSjEwmi05WOgFqrZKx%2BMsO7bC%2FF9XZh2V2uZfxcj9OrF0zsjYaza%2B5r%2FUAwlhX51dXd0ExTXJWJlwnUUdwxsSBaMQ1LJi7QStHlO5u%2FkhhNfNrZGy3zfYCq2By%2BJeQcAtC%2F7ysuJyeWEC6%2Be03Gxc6Kt8gVa3R3y8UL%2FdJrmxjJEA68aznsAzoV6fQpSn9DpV3pGwS7PDE8Kx8N8hkW6GP0WnPWgxnsLw5CFipSyeZ4iD5t%2Bq1z2sDZPK63e5I6O99UzUSnEVa7eeD6O65IoC6AqU5BQgHOFOg%2FHNdxT5mRumtBp1ft3Kt8mTZzuY%2FlnWVFfhYcnpHFiOJ85ri9fYi%2FyzGMA17VJ22LbxXrihpWWa21Z1tp93%2BcFeTZo1uxkKRP%2FkfrRh%2FNrruCP3z7qs%2BXQh6jnpxc5U4qSry%2Flor%2B3xWQZBzDJnQrKXUhb6ZA8loKD3WCepqE9d5RtiSmqtufMfQAUsetBldgv6Pi5yGIA9T2C4vUSEHQwf2jA6uLvedlZqCnbMJsK22lcJ9e8bAdIvwTJxX4b9rnWCBj0mCxdEPkAIAFL2l8tq0SMbydfttUq0pEct1lIP%2FL3PHRDST%2BEc3SiGMsAacF5f%2FYBhdaVc%2BEIjKXBllpfrllDGbMBljfxIK4pgFAn%2B4sZEjiNkdLUiwGifoesRrgmZ33P867kn%2BNi3knORvLarc2Rf80cfy76XAqDKnZw%2FMSUl%2BQPC8uPDNtnngHMIR6VHZsrnpX%2FBR0elOS6PbpVJ67nZ%2BwFJCZYOK7URdDH2zKTGQcw2mgPtfktjlKb02aVDoWlbHSi9LP0DVEeSlbeI82vCMq0fzfCSiw7x4YA0n8J2us9CQDJks4IipZrcPb0BmIJbtjOfsz8%2Bvib%2BTjSSfDJvGR5AO3fypXnZNoSiKQgT0SW%2BQxJQCKQVwht%2B8tOlfWVAmvab6YXJYZJ5Xdc5V%2FrqB2IZf7uv5%2FXHaHJ1FV%2BKEU5wbH7yAukOeJLEwuQvhNVbc02g82JASz%2FaVd%2B6VEuOIswJAZ5SyHjAeZQvActdkZQkv0zR1Jx0YhURjIiQfEmCDj0tw9vttkxgN5suAOoDj2WIQGsKVnPDnKHnt%2B8Lp335djI2OAAThLVkCxxCXn8pyo5zv%2Fp0D9q8z8B6k0lSCBKSUSkHmEt%2B%2BIvUUYG2X3ZIVsD6aaBbIClm2qzM5YayAZYNg7SVQPZAEtX9WZnng2wbAykqwayAZau6s3O%2FH8BsHhkmA5DmLIAAAAASUVORK5CYII%3D" }, { Id: 7, Name: "Startpage", Keyword: "s", Url: "https://www.startpage.com/rvd/search?query=%s&language=auto", FaviconUrl: "data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2jkj+9YtD/vWLQ/71i0P+9otD/vaLRP72i0T+9YtE/vWLRP72i0T+9otD/vaNRP72jUT+9otF/vaLRf73kkv+9Yc///WJP//1iT//9Yk///rAmf/94Mz/+sCa//aRTv/1iUH/9ok///aJP//2i0H/9otB//aJQv/2iUL/9otC//aNRP/2jUT/9o1E//aNRP/6wpv////////////96dr/95dQ//aNRP/2kET/9pBG//aQRv/2kEb/9pBG//aRR//3lEz/95BH//mueP/7xJ3/959g//efYf/4p23//vDm//3p2//3kEr/95FJ//aRSf/niFH/95FK//aRSv/2mE//95hS/vq4iP/////////////////81bj/95xZ//q4iP//////+bF+//eZT//njFT/PSqi/2xGjv/2mVD/951V/vedVv783cX///////vQrf/++PP///////748//+8uj///////m3gf/olFr/PSuj/w8Pt/9sSJD/951V//eeWf73oVv++8ul///////5sXf/+KRi//vRsf////////////3r3v/olF//Piyk/w8Pt/9sSJH/+J5Z//ieWv/3oV/++KZf/vihXP/97N7//vn0//zTs//6wJP/+bBy//q6iP/onW//Piyl/w8Pt/8fGbH/m2iB/+icY//4pGD/96hl/viqZf74pmD/+Kxr//3iy/////////n1//ivbP/onGj/Pi2m/w8Pt/8uJKz/fFeQ/x8Zsf8+Lqb/6J9r//ivbP74rm3++Klm//mpZv/5q2f/+bR9//m0e//poW7/Pi6n/w8Pt/9sTZj/+Ktp//ira/+rd4P/Dw+3/4xijv/5snH++LN1/vmvbf/5r23/+a5t//mvb//4r2//TTuk/w8Pt/8fGrL/6ah1//ivcP/4r3P/q3yI/w8Pt/+MZpP/+bN5/vm4ev75t3X/+bV1//m1df/5t3X/+Ld3/8qUhP98XZn/Hxqz/+mse//5t3f/2p+B/x8as/8PD7f/u4qK//m7fv76u4D++bl7//m3fP/5uXz/+bl8//m5fP/5t3z/+bl//x8as/9NPKf/fWCb/x8as/8PD7f/bVOh//q5f//6v4X++sGI/vm9g//5voX/+b6F//m9hf/6vYX/+r6F//nCh/+bepr/Hxu0/w8Pt/8PD7f/fWOh//q+hf/6wof/+saN/vrGjf75xIv/+ceL//nEi//5xIv/+sSL//rHi//6x43/+ceN/+m7kP+7lpj/6ruQ//rHkP/6x43/+seQ//rLlf76ypT++seR//rJkf/6yZH/+seR//rJkf/6yZH/+8mR//vJlP/7yZT/+smU//rJlP/6yZT/+8yV//rJlf/6zpn+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", SuggestUrl: "https://www.startpage.com/cgi-bin/csuggest?query=%s&limit=10&lang=english&format=json" }, { Id: 4, Name: "DuckDuckGo", Keyword: "d", Url: "https://duckduckgo.com/?q=%s&t=vivaldi", FaviconUrl: "data:image/png;base64,AAABAAQAQEAAAAEAIAAoQAAARgAAACAgAAABACAAKBAAAG5AAAAYGAAAAQAgACgJAACWUAAAEBAAAAEAIAAoBAAAvlkAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoSM8gKEXSYChE0YAlRNK/JUTSvydE0e8nRNH/J0TR/ydE0f8nRNH/J0TR7yVE0r8lRNK/KETRgChF0mAoSM8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJkPSUCZD0J8jQ9HfJ0TR/ydE0f8nRNH/J0TR/ydE0f8nRNH/J0TR/ydE0f8nRNH/J0TR/ydE0f8nRNH/J0TR/ydE0f8nRNH/J0TR/yND0d8mQ9CfJkPSUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAzxAoRtGAI0PS3ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8jQ9LfKEbRgCBAzxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEDPECZD0p8nRdL/J0XS/ydF0v8nRdL/J0XS/ydF0v8jQ9LfJkPSn3aI4K+ToemA6Or6j////4D///+A/v7+v/7+/r/+/v6//v7+v+3x/c+2wvC/lKLp30lk2r8jQ9LfJ0XS/ydF0v8nRdL/J0XS/ydF0v8nRdL/JkPSnyBAzxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEbTgCdF0u8nRdL/J0XS/ydF0v8nRdL/I0PS3ydG0o8lRdUw////UP/////////////////////////////////////////////////////////////////////+/v6/AAAAACVF1TAnRtKPI0PS3ydF0v8nRdL/J0XS/ydF0v8nRdLvKEbTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlRdUwJ0PRzydF0/8nRdP/J0XT/ydF0/8lRdK/JkbSUAAAAACvr68QtbW1YPHx8c/o9+z/gNCU/7rmxf/z+/X/////////////////////////////////////////////////uMHw7ydG0o8lRdUwAAAAAAAAAAAmRtJQJUXSvydF0/8nRdP/J0XT/ydF0/8nQ9HPJUXVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnR9RwJ0XT/ydF0/8nRdP/J0XT/yVF0r8oRNNAAAAAACBAzxAoRtOAUGPK37W1tf/6+vr/o92y/0a7ZP9Gu2T/Ur9u/6Pdsv/z+/X//////////////////////////////////////0Jd2f8nRdP/J0XT/yND1N8oRtOAIEDPEAAAAAAoRNNAJUXSvydF0/8nRdP/J0XT/ydF0/8nR9RwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmR9SfJ0bT/ydG0/8nRtP/J0bT7ydH1HAAAAAAIEDPECZH1J8nRtP/J0bT/25+xP++vr7//////3TMi/9Gu2T/Rrtk/0a7ZP9Gu2T/Ur9u/2e0aP9EoUP/RKFD/2ezZv+i0KH//////6667/8rVcX/NXmi/z6egP9Gu2T/Qqxy/ydG0/8mR9SfIEDPEAAAAAAnR9RwJ0bT7ydG0/8nRtP/J0bT/yZH1J8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAzxAlRdS/J0bU/ydG1P8nRtT/J0bRzyhI1yAAAAAAKEbTgCdG1O8nRtT/J0bU/ydG1P+Jkr//zMzM//////90zIv/Rrtk/0a7ZP9Gu2T/Rrtk/0a2Xv9EpEf/Rrli/0a7ZP9Gu2T/Rrli/4DPkv9OsXz/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP8nRtT/J0bU/ydG1O8oRtOAAAAAAChI1yAnRtHPJ0bU/ydG1P8nRtT/JUXUvyBAzxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAzxAnRtHPJ0bU/ydG1P8nRtT/JkfUnwAAAAAoSNcgJ0bRzydG1P8nRtT/J0bU/ydG1P8nRtT/o6e5/9ra2v//////aciB/0a7ZP9Gu2T/Rrtk/0a7ZP9GtVz/RahL/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/K1XG/ydG1P8nRtT/J0bU/ydG0c8oSNcgAAAAACZH1J8nRtT/J0bU/ydG1P8nRtHPIEDPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlRdS/J0bU/ydG1P8nRtT/KEXVYAAAAAAmRtZQJ0bU7ydG1P8nRtT/J0bU/ydG1P8nRtT/OVTQ/7W1tf/t7e3//////0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0WoS/9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/y9juP8nRtT/J0bU/ydG1P8nRtT/J0bU7yZG1lAAAAAAKEXVYCdG1P8nRtT/J0bU/yVF1L8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmR9WfJ0fV/ydH1f8nR9X/KEjVYAAAAAAoSNVgJ0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/1Npy/+1tbX///////////9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9FqEv/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP8tXcD/J0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/KEjVYAAAAAAoSNVgJ0fV/ydH1f8nR9X/JkfVnwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnR9ZwJ0fV/ydH1f8nR9X/KEjVYAAAAAAoSNVgJ0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/ydH1f9ufsX/w8PD////////////Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/aL51/1K/bv9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP9Gu2T/J0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/ydH1f8oSNVgAAAAAChI1WAnR9X/J0fV/ydH1f8nR9ZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlRdUwJ0fV/ydH1f8nR9X/JkfVnwAAAAAoSNVgJ0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/kpq9/9HR0f///////////0a7ZP9Gu2T/Rrtk/0a7ZP+A0JT/0e7Y///////z+/X/xerP/22vp/83gZ3/M3Or/ziIlf9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/ydH1f8nR9X/J0fV/yhI1WAAAAAAJkfVnydH1f8nR9X/J0fV/yVF1TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ0fWzydH1v8nR9b/J0fWzwAAAAAmRtZQJ0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/7W1tf/f39////////////+A0JT/dMyL/67hu//o9+z///////////////////////////9ddeD/J0fW/ydH1v8nR9b/L2S5/0Ktcv9Gu2T/Rrtk/0Clef8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/JkbWUAAAAAAnR9bPJ0fW/ydH1v8nR9bPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKEjVgCdH1v8nR9b/J0fW7yhI1yAoSNcgJ0fW7ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/0Fc0P+1tbX/8fHx///////////////////////////////////////////////////////k6Pr/J0fW/ydH1v8nR9b/J0fW/ydH1v8pT8//NoGd/0Ktcv82gZ3/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1v8nR9b/J0fW/ydH1u8oSNcgKEjXICdH1u8nR9b/J0fW/yhI1YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFDPECZH1u8mSNb/JkjW/ydJ1nAAAAAAJkfWzyZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v9cccr/tbW1////////////////////////////////////////////////////////////oK/t/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkjW/yZI1v8mSNb/JkfWzwAAAAAnSdZwJkjW/yZI1v8mR9bvIFDPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVH2I8mSNf/JkjX/yZH1s8AAAAAJ0nWcCZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/doXE/8jIyP///////////////////////////////////////////////////////////09q3v8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8nSdZwAAAAACZH1s8mSNf/JkjX/yVH2I8AAAAAAAAAAAAAAAAAAAAAAAAAACBQzxAmR9jvJkjX/yZI1/8oSNdAIFDPECZH2O8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/5qhu//V1dX///////////////////////////////////////////////////////H0/f8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkfY7yBQzxAoSNdAJkjX/yZI1/8mR9jvIFDPEAAAAAAAAAAAAAAAAAAAAAAmSNeAJkjX/yZI1/8lSNa/AAAAACZI1Z8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/+1tbX/6Ojo//////////////////////////////////////////////////////+7xvP/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNWfAAAAACVI1r8mSNf/JkjX/yZI14AAAAAAAAAAAAAAAAAAAAAAI0nY3yZJ2P8mSdj/JknWUCBQ3xAmSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P9KZM//tbW1//b29v//////////////////////////////////////////////////////k6Tr/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yBQ3xAmSdZQJknY/yZJ2P8jSdjfAAAAAAAAAAAAAAAAKEjXQCZJ2P8mSdj/I0nY3wAAAAAmSteAJknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/ZXjJ/7q6uv///////////////////////////////////////////////////////////3eN5/8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSteAAAAAACNJ2N8mSdj/JknY/yhI10AAAAAAAAAAACVJ2I8mSdj/JknY/yVJ2I8AAAAAI0nY3yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/3+Nwv/IyMj///////////////////////////////////////////////////////////9cd+L/JknY/yZJ2P8mSdj/JknY/x9r4f8Yjur/ELDz/wvJ+v8J0vz/CdL8/wnS/P8J0vz/ELDz/xiO6v8hY9//JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/I0nY3wAAAAAlSdiPJknY/yZJ2P8lSdiPAAAAAAAAAAAjSdjfJknY/yZJ2P8lStowJUraMCZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P+jqLn/2tra////////////////////////////////////////////////////////////aoLk/yZJ2P8ddOP/FJ/v/wvJ+v8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/xCw8/8fa+H/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8lStowJUraMCZJ2P8mSdj/I0nY3wAAAAAoSNcgJknZ/yZJ2f8jSdnfAAAAACZK2YAmSdn/JknZ/yZJ2f8mSdn/JknZ/yZJ2f8mSdn/JknZ/yZJ2f8mSdn/JknZ/yZJ2f8vUNf/tbW1/+3t7f///////////////////////////////////////////////////////////1vG9v8Lyfr/CdL8/wnS/P8J0vz/CdL8/wnS/P8QsPP/ELDz/xCw8/8OuPX/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/xt85v8mSdn/JknZ/yZJ2f8mSdn/JknZ/yZJ2f8mSdn/JkrZgAAAAAAjSdnfJknZ/yZJ2f8oSNcgJknZUCZK2f8mStn/JErZrwAAAAAlSdq/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/SmXQ/7W1tf/6+vr//////////////////////////////////////////////////////2Xj/f8J0vz/CdL8/wnS/P8J0vz/ELDz/x9s4v8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8hZOD/G33m/xaX7f8OufX/CdL8/wnS/P8SqPH/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yVJ2r8AAAAAJErZryZK2f8mStn/JknZUCZK2YAmStn/JkrZ/ydL2HAAAAAAJkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/26Ax/++vr7//////////////////////////////////////////////////////6Pu/v8J0vz/CdL8/wnS/P8J0vz/ELDz/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8hZOD/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/JkrZ/yZK2f8mStn/AAAAACdL2HAmStn/JkrZ/yZK2YAkStuvJkra/yZK2v8oTNtAJUraMCZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v+IlMH/zMzM//////////////////////////////////////////////////////9W4P3/CdL8/wnS/P8J0vz/CdL8/xSf7/8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yVK2jAoTNtAJkra/yZK2v8kStuvJUnavyZK2v8mStr/KEjXIChM20AmStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/o6i6/9ra2v//////////////////////////////////////////////////////R939/wnS/P8J0vz/CdL8/wnS/P8J0vz/GI7r/x115f8Yjuv/GI7r/xiO6/8Yjuv/H2zj/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Jkra/yZK2v8oTNtAKEjXICZK2v8mStr/JUnavyNL2t8mS9r/Jkva/wAAAAAnS9twJkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/OFjV/7W1tf/t7e3//////////////////////////////////////////////////////8L0/v8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8Lyvr/FJ/v/x115f8mS9r/Jkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/Jkva/yZL2v8mS9r/J0vbcAAAAAAmS9r/Jkva/yNL2t8mS9v/Jkvb/yZL2/8AAAAAJkzbgCZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/1Nsz/+1tbX/////////////////////////////////////////////////////////////////svH+/xjV/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/DcH4/xaX7f8iXN//Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZM24AAAAAAJkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/AAAAACZM24AmS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/9ugMj/w8PD///////////////////////////////////////////////////////////////////////w/P//ZeP9/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/xCw9P8ddeX/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mTNuAAAAAACZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/wAAAAAmTNuAJkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/kZu//9HR0f/////////////////////////////////////////////////////////////////////////////////w/P//wvT+/4Tp/v+E6f7/hOn+/1bg/f8o2Pz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/w3B+P8fbeP/Jkvb/yZL2/8mS9v/Jkvb/yZL2/8mS9v/JkzbgAAAAAAmS9v/Jkvb/yZL2/8mS9z/Jkvc/yZL3P8AAAAAJkzbgCZL3P8mS9z/Jkvc/yZL3P8mS9z/Jkvc/yZL3P8mS9z/Jkvc/yZL3P8mS9z/Jkvc/6yut//f39///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4Gr7/8bfuj/FJ/w/w3B+P8J0vz/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/CdL8/x9t5P8mS9z/Jkvc/yZL3P8mS9z/Jkvc/yZM24AAAAAAJkvc/yZL3P8mS9z/I0vc3yZM3P8mTNz/AAAAACdL3XAmTNz/Jkzc/yZM3P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/y9T2v+1tbX/7e3t//////////////////j08v+xhm7/qnth/9W9sP////////////////////////////////////////////////////////////////////////////////+Tpu7/Jkzc/yZM3P8mTNz/Il3g/xmH6v8SqPL/CdL8/wnS/P8J0vz/CdL8/wvK+v8hZeL/Jkzc/yZM3P8mTNz/Jkzc/yZM3P8nS91wAAAAACZM3P8mTNz/I0vc3yVM3L8mTNz/Jkzc/yVK2jAoTNtAJkzc/yZM3P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/yZM3P9KZtL/tbW1//////////////////////+xhm7/jk8s/45PLP+OTyz/6t7X///////////////////////////////////////////////////////j08r/6t7X////////////k6bu/yZM3P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/yJd4P8fbuT/H27k/x9u5P8mTNz/Jkzc/yZM3P8mTNz/Jkzc/yZM3P8mTNz/KEzbQCVK2jAmTNz/Jkzc/yVM3L8kStyvJkzd/yZM3f8oTNtAKFDfICZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/boHJ/76+vv//////////////////////lVo5/45PLP+qe2H/uJF7/86yo/////////////////////////////////////////////////+jcFT/jk8s/45PLP/cyL3//////5Om7v8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yhQ3yAoTNtAJkzd/yZM3f8kStyvJkzdgCZM3f8mTN3/JkzdgAAAAAAmTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/26Byf/IyMj//////////////////////7+ciP+OTyz/sYZu/86yo//x6eX/////////////////////////////////////////////////jk8s/45PLP+/nIj/x6eW//////9ceeb/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8AAAAAJkzdgCZM3f8mTN3/JkzdgCZN3FAmTd3/Jk3d/yRN3a8AAAAAJU3evyZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f9ugcn/1dXV////////////////////////////1b2w/8enlv/x6eX//////////////////////////////////////////////////////6NwVP+OTyz/3Mi9/9W9sP//////NFjf/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8lTd6/AAAAACRN3a8mTd3/Jk3d/yZN3FAgUN8QJk3d/yZN3f8mStrvAAAAACdN3XAmTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/boHJ/9ra2v/////////////////////////////////////////////////////////////////////////////////////////////////49PL/zrKj/+PTyv//////1t75/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/J03dcAAAAAAmStrvJk3d/yZN3f8gUN8QAAAAACZO3c8mTd7/Jk3e/yVK3zAlSt8wJk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/26Byv/a2tr////////////ly8P//////////////////////////////////////////////////////////////////////////////////////////////////////4Wb7P8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yVK3zAlSt8wJk3e/yZN3v8mTt3PAAAAAAAAAAAlTd2PJk3e/yZN3v8lTd2PAAAAACZO3c8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v9TbtH/2tra////////////zZ6Q/929tf////////////////////////////////////////////////////////////////////////////////////////////////9BY+L/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZO3c8AAAAAJU3djyZN3v8mTd7/JU3djwAAAAAAAAAAJUrfMCZN3v8mTd7/Jkrb7wAAAAAnTd9wJk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/L1Tb/8jIyP////////////Hk4P/DjH3/s25e/7h5bP/DjoP/////////////////////////////////////////////////6dTN/+PIwP/q1tL/4cfC/8+lnP+uvPP/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8nTd9wAAAAACZK2+8mTd7/Jk3e/yVK3zAAAAAAAAAAAAAAAAAjS9zfJk7f/yZO3/8lTd9gIFDfECZL3O8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/+Nmcf////////////////////////////////////////////////////////////////////////////////////////////Tq6D/v4V3/76Fef/t3dr/QWTj/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mS9zvIFDfECVN32AmTt//Jk7f/yNL3N8AAAAAAAAAAAAAAAAAAAAAJ03fcCZO3/8mTt//Jk7dzwAAAAAmTt+AJk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//SmjV/+jo6P//////////////////////////////////////////////////////////////////////////////////////////////////////oLLx/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7fgAAAAAAmTt3PJk7f/yZO3/8nTd9wAAAAAAAAAAAAAAAAAAAAACBQ3xAmS9zvJk7f/yZO3/8mTd9QIFDfECZL3O8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/+EltX/////////////////////////////////////////////////////////////////////////////////////////////////5On7/zRZ4f8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jkvc7yBQ3xAmTd9QJk7f/yZO3/8mS9zvIFDfEAAAAAAAAAAAAAAAAAAAAAAAAAAAJk7fgCZO4P8mTuD/I0vg3wAAAAAlTd9gJk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/5uq4f//////////////////////////////////////////////////////////////////////////////////////8fT9/09v5v8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yVN32AAAAAAI0vg3yZO4P8mTuD/Jk7fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBQ3xAmS+DvJk7g/yZO4P8mTt+AAAAAACVN4L8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/ZYHl/+Tp+///////////////////////////////////////////////////////////////////////8fT9/05v5v8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yVN4L8AAAAAJk7fgCZO4P8mTuD/Jkvg7yBQ3xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJVDfYCVP4P8lT+D/JU/g/yVQ3zAgUN8QJUzg7yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/d5Hs/7vI9f/x9P3////////////////////////////////////////////W3vn/hJzu/zNa4v8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVP4P8lT+D/JU/g/yVM4O8gUN8QJVDfMCVP4P8lT+D/JU/g/yVQ32AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlTeK/JU/h/yVP4f8iTuHPIFDfECVQ3zAlT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/W3XQ/0lp1v9Jadb/SWnW/22Cy/9tgsv/qLPX/+Tm7////////////////////////////+Tp+/8zWuP/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lUN8wIFDfECJO4c8lT+H/JU/h/yVN4r8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKFDfICVM4e8lT+H/JU/h/yNP4Z8AAAAAJVDiYCVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/7G51P/t7e3/7e3t/+3t7f/29vb//////////////////////////////////////9be+f8zWuP/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lUOJgAAAAACNP4Z8lT+H/JU/h/yVM4e8oUN8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlUOJgJU/h/yVP4f8lT+H/I0/hnwAAAAAlUOJgJU/h/yVP4f8lT+H/JU/h/yVP4f8uVd7/hJzu/9bb7f//////////////////////////////////////8fT9/4Sc7v8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lUOJgAAAAACNP4Z8lT+H/JU/h/yVP4f8lUOJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVQ4Y8lUOL/JVDi/yVQ4v8jUOKfAAAAACVQ4mAlUOL/JVDi/yVQ4v8lUOL/W3bR/6200P/x8fH////////////////////////////J0/j/d5Lt/zNb4/8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOJgAAAAACNQ4p8lUOL/JVDi/yVQ4v8lUOGPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI1DinyVQ4v8lUOL/JVDi/yNQ4p8AAAAAJVDkMCVQ4u8lUOL/JVDi/y5W3/9cfOn/kqjx/5Ko8f+SqPH/d5Lt/1x86f8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4u8lUOQwAAAAACNQ4p8lUOL/JVDi/yVQ4v8jUOKfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjUOKfJVDi/yVQ4v8lUOL/JFDgryBQ3xAgUN8QJFDgryVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yRQ4K8gUN8QIFDfECRQ4K8lUOL/JVDi/yVQ4v8jUOKfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNQ4p8lUOL/JVDi/yVQ4v8iUOHPJVDkMAAAAAAmUOJQI1Di3yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/I1Di3yZQ4lAAAAAAJVDkMCJQ4c8lUOL/JVDi/yVQ4v8jUOKfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJlDjgCVQ4/8lUOP/JVDj/yVQ4/8mUuOAIFDfECBQ3xAmUOOAJVDj7yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOP/JVDj/yVQ4/8lUOPvJlDjgCBQ3xAgUN8QJlLjgCVQ4/8lUOP/JVDj/yVQ4/8mUOOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmUOJQJVHj7yVR4/8lUeP/JVHj/yNR5N8lUOJgAAAAAAAAAAAlUOJgIlHhzyVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yJR4c8lUOJgAAAAAAAAAAAlUOJgI1Hk3yVR4/8lUeP/JVHj/yVR4+8mUOJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChQ3yAlUeK/JVHj/yVR4/8lUeP/JVHj/yNR5N8lUORgIFDfEAAAAAAoUN8gJFLkcCRS468jUeTfJVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yVR4/8lUeP/JVHj/yNR5N8kUuOvJFLkcChQ3yAAAAAAIFDfECVQ5GAjUeTfJVHj/yVR4/8lUeP/JVHj/yVR4r8oUN8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVQ5GAjUeTfJVHk/yVR5P8lUeT/JVHk/yVR5O8jUuSfJlDmUAAAAAAAAAAAAAAAACBQ3xAkUONAJFDjQCRS5HAmUuOAJlLjgCRS5HAkUONAJFDjQCBQ3xAAAAAAAAAAAAAAAAAmUOZQI1LknyVR5O8lUeT/JVHk/yVR5P8lUeT/I1Hk3yVQ5GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFDfECZS44AlUeTvJVHk/yVR5P8lUeT/JVHk/yVR5P8lUeT/JVHkvyZS44AlUORgJFDjQCBQ3xAAAAAAAAAAAAAAAAAAAAAAIFDfECRQ40AlUORgJlLjgCVR5L8lUeT/JVHk/yVR5P8lUeT/JVHk/yVR5P8lUeTvJlLjgCBQ3xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVQ5GAiU+HPJVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yVS5P8lUuT/JVLk/yJT4c8lUORgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChQ5yAkUuZwJVHmvyVS5f8lUuX/JVLl/yVS5f8lUuX/JVLl/yVS5f8lUuX/JVLl/yVS5f8lUuX/JVLl/yVS5f8lUuX/JVLl/yVS5f8lUea/JFLmcChQ5yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFTjQCRS5nAlUuSPJVHmvyVR5r8lUea/JVLl/yVS5f8lUea/JVHmvyVR5r8lUuSPJFLmcCRU40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoSM8gJ0TRcCdE0K8jQ9HfJ0TR/ydE0f8nRNH/J0TR/yND0d8nRNCvJ0TRcChIzyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoRNNAJUXSvydF0v8nRdL/J0XS/11z3f9dc93/eIvj/5Oi6f+Toun/a3/g/zVQ1f8nRdL/J0XS/yVF0r8oRNNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQM8QJ0TTrydF0/8nRdP/JUXSvyhF0mDr7vuv/v7+v/7+/r/9/f3P///////////+/v6/ydHzgChF0mAlRdK/J0XT/ydF0/8nRNOvIEDPEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUXVMCdG0+8nRtP/J0bRzyhE00AAAAAAx8fHQNrx4Z+U2KTf6Pfs//////////////////Dy/N8nRtKPJUXVMAAAAAAoRNNAJ0bRzydG0/8nRtPvJUXVMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAChF1WAnRtT/J0bU/yhG04AAAAAAJkbWUCND1N/IyMj/xerP/0a7ZP9Gu2T/f8iK/3O/ev+Ly5L/iaTX/zNyqv88lof/M3ik3yZG1lAAAAAAKEbTgCdG1P8nRtT/KEXVYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlRdUwJ0fV/ydH1f8oRdVgIEDPECdH068nR9X/QlvP/9ra2v+j3bL/Rrtk/0a7ZP9Fs1r/Rrtk/0a7ZP9Gu2T/Rrtk/0a7ZP8+noD/J0fV/ydH068gQM8QKEXVYCdH1f8nR9X/JUXVMAAAAAAAAAAAAAAAAAAAAAAAAAAAIEDPECdH1e8nR9X/KEjVYCBAzxAnR9XPJ0fV/ydH1f9ccMn/7e3t/6Pdsv9Gu2T/Rrtk/0WuVP9Gu2T/Rrtk/0a7ZP9Gu2T/Rrtk/z6egP8nR9X/J0fV/ydH1c8gQM8QKEjVYCdH1f8nR9XvIEDPEAAAAAAAAAAAAAAAAAAAAAAnR9avJ0fW/yhI1YAgUM8QJ0fWzydH1v8nR9b/J0fW/4CMwf/6+vr/o92y/0a7ZP9dxHf/otuv/67hu/8+noH/Pp6B/0a7ZP9Gu2T/OpCP/ydH1v8nR9b/J0fW/ydH1s8gUM8QKEjVgCdH1v8nR9avAAAAAAAAAAAAAAAAKEjXQCZI1v8mR9bPAAAAACRH1q8mSNb/JkjW/yZI1v8mSNb/o6rE///////o9+z/0e7Y////////////1t33/yZI1v8mSNb/LmW6/zyXiP8yc6z/JkjW/yZI1v8mSNb/JkjW/yRH1q8AAAAAJkfWzyZI1v8oSNdAAAAAAAAAAAAlSNa/JkjX/yhI10AmSdZQJkjX/yZI1/8mSNf/JkjX/yZI1//R0dH///////////////////////////+TpOv/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZI1/8mSNf/JkjX/yZJ1lAoSNdAJkjX/yVI1r8AAAAAKEjXICZJ2P8mR9jPAAAAACNJ2N8mSdj/JknY/yZJ2P8mSdj/SmTP/9/f3////////////////////////////1x34v8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/JknY/yZJ2P8mSdj/I0nY3wAAAAAmR9jPJknY/yhI1yAnSdhwJknY/yVI12AlStowJknY/yZJ2P8mSdj/JknY/yZJ2P9leMn/7e3t////////////////////////////XHfi/x104/8Un+//DcH4/wnS/P8J0vz/CdL8/xCw8/8bfOb/JknY/yZJ2P8mSdj/JUraMCVI12AmSdj/J0nYcCRK2a8mStn/KEjXICVJ2o8mStn/JkrZ/yZK2f8mStn/JkrZ/4iTwP///////////////////////////9H3/v8Y1fz/CdL8/w659f8Yjuv/GI7r/xiO6/8QsPP/C8r6/wnS/P8Zhej/JkrZ/yZK2f8lSdqPKEjXICZK2f8kStmvI0ra3yNK2d8AAAAAJUnavyZK2v8mStr/Jkra/yZK2v8mStr/sbbH////////////////////////////KNj8/wnS/P8Lyvr/Jkra/yZK2v8mStr/Jkra/yZK2v8mStr/Ilve/yZK2v8mStr/Jkra/yVJ2r8AAAAAI0rZ3yNK2t8mStr/JUnavwAAAAAmR9jvJkra/yZK2v8mStr/Jkra/y9R2P/R0dH///////////////////////////8o2Pz/CdL8/wnS/P8QsPT/ELD0/xCw9P8Un+//HXXl/yZK2v8mStr/Jkra/yZK2v8mStr/JkfY7wAAAAAlSdq/Jkra/yZL2/8lSdq/AAAAACZL2/8mS9v/Jkvb/yZL2/8mS9v/SmbS/+Pj4////////////////////////////+D5//9H3f3/CdL8/wnS/P8J0vz/CdL8/wnS/P8J0vz/C8r6/xaX7v8iXN//Jkvb/yZL2/8mS9v/AAAAACVJ2r8mS9v/Jkvc/yVJ3L8AAAAAJkvc/yZL3P8mS9z/Jkvc/yZL3P9ugMj/8fHx///////////////////////////////////////R9/7/wvT+/6Pu/v9n2vv/Drn2/wnS/P8J0vz/CdL8/wnS/P8Yj+z/Jkvc/yZL3P8AAAAAJUncvyZL3P8mTNz/JUzcvwAAAAAmSdnvJkzc/yZM3P8mTNz/Jkzc/4iUwf///////////6p7Yf+VWjn/8enl///////////////////////x6eX/8enl/8nS9v8mTNz/JFTe/xt+6P8SqPL/ELH0/x125v8mTNz/JknZ7wAAAAAlTNy/Jkzc/yNL3N8mSdrvAAAAACVM3r8mTN3/Jkzd/yZM3f8mTN3/n6nN////////////lVo5/7+ciP/q3tf//////////////////////45PLP+4kXv/ydL2/yZM3f8mTN3/Jkzd/yZM3f8mTN3/Jkzd/yZM3f8lTN6/AAAAACNL3N8jS9zfJE3dryZN3f8oUN8gJU3djyZN3f8mTd3/Jk3d/yZN3f+krdL////////////x6eX/6t7X////////////////////////////sYZu/+PTyv+gsfD/Jk3d/yZN3f8mTd3/Jk3d/yZN3f8mTd3/Jk3d/yVN3Y8oUN8gJk3d/yRN3a8nTd9wJk3e/ydN33AlSt8wJk3e/yZN3v8mTd7/Jk3e/6Su0v//////0qea/////////////////////////////////////////////////09u5P8mTd7/Jk3e/yZN3v8mTd7/Jk3e/yZN3v8mTd7/JUrfMCdN33AmTd7/J03fcChQ3yAmTt//Jk7dzwAAAAAlTd6/Jk7f/yZO3/8mTt//hJbV///////n0cr/0qmg/+fSzv//////////////////////2ret/7yAcv+xpcX/Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//Jk7f/yVN3r8AAAAAJk7dzyZO3/8oUN8gAAAAACRP3a8mTt//KFDfQChQ30AmTt//Jk7f/yZO3/84W9r/6Ov0/////////////////////////////////////////////////1x65/8mTt//Jk7f/yZO3/8mTt//Jk7f/yZO3/8mTt//KFDfQChQ30AmTt//JE/drwAAAAAAAAAAKFDfQCZO4P8mTuDPAAAAACZP4Z8mTuD/Jk7g/yZO4P9Ob+b/5On7//////////////////////////////////////93kez/Jk7g/yZO4P8mTuD/Jk7g/yZO4P8mTuD/Jk7g/yZP4Z8AAAAAJk7gzyZO4P8oUN9AAAAAAAAAAAAAAAAAI0/hnyVP4f8lTuGPIFDfECJO4M8lT+H/JU/h/0lp1v9Jadb/m6vh//Hx8f////////////////+gsvL/TnDm/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8iTuDPIFDfECVO4Y8lT+H/I0/hnwAAAAAAAAAAAAAAAAAAAAAgUN8QJUzh7yVP4f8lUOJgIFDfECJO4c8lT+H/pLTr///////////////////////x9P3/aYbq/yVP4f8lT+H/JU/h/yVP4f8lT+H/JU/h/yVP4f8lT+H/Ik7hzyBQ3xAlUOJgJU/h/yVM4e8gUN8QAAAAAAAAAAAAAAAAAAAAAAAAAAAlUN8wJVDi7yVQ4v8lUOJgIFDfECNQ4p+Jm9v/ydP4/8nT+P+tvfT/d5Lt/zNb5P8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yNQ4p8gUN8QJVDiYCVQ4v8lUOLvJVDfMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlUOQwJVDi7yVQ4v8lUOKPAAAAACRQ40AlUOK/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4v8lUOL/JVDi/yVQ4r8kUONAAAAAACVQ4o8lUOL/JVDi7yVQ5DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlUOQwI1Hk3yVR4/8jUeTfJFDjQAAAAAAlUOQwJlLjgCVR4r8jUeTfJVHj/yVR4/8jUeTfJVHivyZS44AlUOQwAAAAACRQ40AjUeTfJVHj/yNR5N8lUOQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgUN8QI1LknyVR5P8lUeT/I1Hk3yRS5HAoUOcgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKFDnICRS5HAjUeTfJVHk/yVR5P8jUuSfIFDfEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJFDjQCNS5J8lUuT/JVLk/yVS5P8lUuTvJVHkvyVR5L8lUeS/JVHkvyVS5O8lUuT/JVLk/yVS5P8kUuOvJFDjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBQ3xAlUuRgI1LlnyJT5c8lUuX/JVLl/yVS5f8lUuX/IlPlzyNS5Z8lUuRgIFDfEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVE0XslQNL8I0HS/yE/0v8gP9L/ID/R/yFA0f8jQtL/JT/P/SVE0XsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmRtRqJkTT/yRC0/8ePtSwFjbXOQAAAAAAAAAAAAAAAAAAAAAaN9U8Ij/UsiZD1P8nRNP/JkbUagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRG1MsnRtT/J0XTngAAAAAAAAAAxMvRztPyyf////////////////95gvB0AAAAAAAAAAAnRdWeJ0bU/yRG1MsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJ0bV5CdG1f8qR9UrAAAAABw+1Zk8UND/4PzL/yy9RP9SwF3/S7pO/53anP8wjIT/OZx8/yM83JoAAAAAKkfVKydG1f8nRtXkAAAAAAAAAAAAAAAAAAAAAAAAAAAlR9WxJ0fV/yBAzxArVdUGI0TV/xk61/9ib8f/z/vI/ya1Rf8qqz7/MrtM/z65UP9FzUv/Q7pj/yM74P8mRNj/K1XVBiBAzxAnR9X/JUfVsQAAAAAAAAAAAAAAACdJ2DsmSNb/JkjWSgAAAAAlR9b/IETW/xE31/+gosj/2PvT/2nMfv/h+d//wOq//yJesf9AtWT/QrBs/yM+3/8lRdj/JkjW/wAAAAAmSNZKJkjW/ydJ2DsAAAAAAAAAACZF1P0jSNXYAAAAACNE1PIlR9f/HkLX/wsy1v/W09H/////////////////qa33/xEr3/8gON//KU7N/yVA2/8mRdj/JkfX/yNE1PIAAAAAI0jV2CZF1P0AAAAAKErXJiZJ2P8oQ9cTJkrZZCZJ2P8kSNj/HEHY/w830//5893/////////////////T2Tg/xYx1v8jOdj/JzvY/yc+1/8nQtf/JkbX/yZI2P8mStlkKEPXEyZJ2P8oStcmJUnakCZJ2f8AAAAAJknW/iZI2f8jRtn/GD7Z/zNPyf////H/////////////////LD3W/xVQ2/8Ujez/EKny/xWY7v8hXN7/J0LX/yZG2P8mSNb+AAAAACZJ2f8lSdqQJkvZ2yZL2ZMAgP8CJkrZ/yVJ2f8iR9n/FDzY/1twv//////////////////z////AMH5/wC79/8Xf+f/GYTo/xOj7/8J0Pv/IGfh/ydG2P8mSdj/AID/AiZL2ZMmS9nbJkva/ydL204oS9tHJkva/yVK2v8gRtr/DznZ/6CoxP////////////////9q6P7/ANT+/wd75/8WZuD/H1jd/ysw0/8qNtT/KD/X/ydG2P8mStn/KEvbRydL204mS9r/Jkvb/ylL3CwnS9tpJkvb/yVK2/8eRdv/CjXa/9jWz///////////////////////O+D//wDV//8A3///AOr//wLe//8Tnu//I1Hd/ydD2f8mSNr/J0nbaSlL3CwmS9v/Jkzc/yRN2zInS91iJkzc/yRL3P8cRNz/FD3X//354///////28W3////////////////////////////MYLs/wqg8f8D4v//APf//yNa3/8mSdv/J0vdYiRN2zImTNz/Jkzd/yZM3F4kTd84Jkzd/yRK3f8bQ93/MVLP////9//jzLr/fDEI///+/v///////////3wxCP/wv5j/PVXj/x842v8nPdn/KEHa/ydG2/8mStz/JEnfOCZM3F4mTN3/Jk3eySZL3rAAAAAAJk3e/yRL3v8bRN7/NVbO//////////////78//////////////////Thz///+N3/DTfe/x5D3f8lSN3/Jkrd/yZL3f8mTN7/AAAAACZL3rAmTd7JJkzdciZN3v8AAAAAJk3c1iRL3v8cRd3/Fz/X////9f//7+L////////////////////////+6f+svfP/EDzd/yBI3f8lS93/Jkzd/yZM3v8mTdzWAAAAACZN3v8mTN1yAFX/AyZO3/8nTt9IKUvcLCVN3/8gSd//Djve/8HH3P////////////////////////////////8fSeD/GUTe/yNM3v8mTt//Jk7f/yZO3/8pS9wsJ07fSCZO3/8AVf8DAAAAACZM38UlT+D/AAAAACNP3rQhTOD/FELf/wY22v+Bldj/6ert////////////w83x/y5X4f8TQd7/H0vf/yRO4P8lT+D/JU/g/yNP3rQAAAAAJU/g/yZM38UAAAAAAAAAACRJ2wclT+H/Jk7howAAAAAhTd7dGEXh/5Kg0v////n//////////P9Wduj/Bzfd/xZC3/8fSuD/I03h/yRO4f8lT+H/IU7e3QAAAAAmTuGjJU/h/yRJ2wcAAAAAAAAAAAAAAAAkUONcJVDi/yRP4nEAAAAAHkvhtT1h3f9gfuf/Mlrk/wg53v8SQd//G0jh/yFN4f8jT+L/JFDi/yVQ4v8lUOG1AAAAACRP4nElUOL/JFDjXAAAAAAAAAAAAAAAAAAAAAAAAAAAI1DkgyVQ4/8kT+SeAAAAABxK4y0aR+PXGkfi/x1J4v8gTOL/I07j/yRP4/8lT+P/JE/j1ydO4y4AAAAAJVDjnSVQ4/8jUOSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVQ4mAlUeP/JFDj/yRQ40AAAAAAAAAAACJO4jQjT+JXJlLiVydT4jQAAAAAAAAAACRQ40AlUeP/JVHj/yVQ4mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnTusNJVHk0SVR5P8lUOT/JlHkqiRQ41wlT+M3JU/jNyRQ41wmUeSqJVHk/yVR5P8lUeTRJ07rDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRJ2wclUuR9JVDlziVS5f8lUuX/JVLl/yVS5f8lUOXOJVLkfSRJ2wcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdUYAC7OqAAm0PcAI9L/ACPS/wAn0PcALtGoADXVGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM8zeAjXS/6Cv8///////////////////////o7D7/wQ11/8AM9LeAAAAAAAAAAAAAAAAAAAAAAAAAAAAMs7zUnbg///////Iyv7/j/i3/yG0C/9e0Tz/id2P/8Dil///////WHrl/wAyzvMAAAAAAAAAAAAAAAAAMNPdaYjl//P1/f9RceT/cYbv/1jlmf9FvS7/S8I5/yfAQf8cgwD/W3Xy//Xz//9piOb/ADDT3QAAAAAHOtdGEUPX//////9Ga+D/ABnQ/7G99v///////////8K7//8AIdf/DD2m/wAj3P9Oa+P//////xJD1/8HOtdGADbVpK6/8v+kuPD/ACfS/wAd0f/v8P7///////////9/g+3/AEHi/wGE8P8Ba+f/ADDW/6e07/+uvfL/ADPVpAAy1v//////Ml7f/wAt1f8AMNf////////////8////AND+/wCm9f8FiOz/ALj3/wCd8P82Vtz//////wAx1f8AMdj//////wM62f8ALtf/OGTi////////////3v///wDQ//8Atfn/ALX3/wGW7/8GOtn/BCzX//////8AMNf/ADLZ//////8AMNn/ACzZ/5Cq8/////v/3MGx////////////0f///0XG/P8Azv3/APz//wB86P//////ADDY/wA12v//////L17i/wAp2v+Mqvf//+/U/41JIP/Yvq///////69kNP+wqM7/ASna/wIq2P83WeD//////wA02v8CO9rTrr/0/6a69P8AJdr/iaj2//+8lv/m1Mb//fv5////7v/1vp//jqfy/wAz3f8AL9r/q7v0/6+/9P8CO9rTC0HdQxBI4P//////Qm3n/wA54P//////////////////////0d///wAt4P8AMt7/Unjp//////8RSOD/C0HdQwAAAAADOuDzZors//f4//9pje3/5uz9////////////Qm/p/wAl3f8ALd7/a47t//////9oi+z/Azrg8wAAAAAAAAAAAAAAAAE94P9Kden//////9zk/P9zku7/ACrd/wAj3P84Z+f/scP2//////9Peer/Aj3g/wAAAAAAAAAAAAAAAAAAAAAAAAAABDzg8wVA4f+bs/P/+/3+/////////////////6a89P8LReL/BUHg8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALReVGA0DjpAA64/8AOOL/ADnj/wA85P8FQeOkD0XlRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", SuggestUrl: "https://ac.duckduckgo.com/ac/?q=%s&type=list" }, { Id: 2, Name: "Wikipedia", Keyword: "w", Url: "https://en.wikipedia.org/wiki/Special:Search?search=%s", FaviconUrl: "data:image/png;base64,AAABAAMAMDAQAAEABABoBgAANgAAACAgEAABAAQA6AIAAJ4GAAAQEBAAAQAEACgBAACGCQAAKAAAADAAAABgAAAAAQAEAAAAAAAABgAAAAAAAAAAAAAQAAAAAAAAAAEBAQAXFxcAMDAwAEdHRwBYWFgAZ2dnAHZ2dgCHh4cAlZWVAKmpqQC3t7cAx8fHANfX1wDo6OgA/v7+AAAAAAD////+7u7u7u7u7u7u7u7u7u7u7u///////+7u7u7u7u7u7u7u7u7u7u7u7u7u/////u7u7u7u7u7u7u7u7u7u7u7u7u7u7///7u7u7u7u7u7u7u7u7u7u7u7u7u7u7v/+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u/+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u/+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u/u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7sa+7u7u7u1b7u7u7u7u7u7u7u7u7u7u7p9u7u7u7ugG7u7u7u7u7u7u7u7u7u7u7TAa7u7u7tQBzu7u7u7u7u7u7u7u7u7u6wAF7u7u7pAAju7u7u7u7u7u7u7u7u7u1AAAru7u7U//Le7u7u7u7u7u7u7u7u7uz/8RPe7u6gAB+e7u7u7u7u7u7u7u7u7ubw94Ce7u1QAIIu7u7u7u7u7u7u7u7u7tH/G+Mt7usAAtcL7u7u7u7u7u7u7u7u7n8ATun47uQACO0T7u7u7u7u7u7u7u7u7hDxnu4x3sAPLO5Qzu7u7u7u7u7u7u7u6P/z7u6wXk/wfu7ATu7u7u7u7u7u7u7u4QAY7u7kCQADzu7kDO7u7u7u7u7u7u7uoA8u7u7sAAAG7u7r9e7u7u7u7u7u7u7uIPB+7u7uUAAs7u7uMd7u7u7u7u7u7u7rEAHe7u7uQABu7u7un37u7u7u7u7u7u7kAAXu7u7sAPHe7u7u4S3u7u7u7u7u7u7BAA3u7u7k8AHO7u7u6Aju7u7u7u7u7u5g/07u7u7B8BBe7u7u7RLu7u7u7u7u7u0v/87u7u5QAGQa7u7u7nCe7u7u7u7u7ugAA+7u7uwQ8dsE7u7u7rBO7u7u7u7u7tP/++7u7uYAB+5Qnu7u7tQa7u7u7u7u7pH/Lu7u7sLwHe6xPe7u7ur27u7u7u7u7V//ru7u7mAAju7n+e7u7u0yvu7u7u7u6h8C3u7u6yAB3u7rEs7u7u6Pfu7u7u7u1AAE7u7u5g/27u7tQG3u7u6QHO7u7u7tbwAB3u7ukfAH7u7sIAju7u5wA97u7utiAAAAF76lAA/wWeyDAA84zqUAABfO7uMiNERDIm4iNERDIrkiNEQybiI0RDJO7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u/+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u/+7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u//7u7u7u7u7u7u7u7u7u7u7u7u7u7u7v///u7u7u7u7u7u7u7u7u7u7u7u7u7u7////+7u7u7u7u7u7u7u7u7u7u7u7u7u///////+7u7u7u7u7u7u7u7u7u7u7u/////+AAAAAH8AAPAAAAAADwAA4AAAAAAHAADAAAAAAAMAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAwAAAAAADAADgAAAAAAcAAPAAAAAADwAA/gAAAAB/AAAoAAAAIAAAAEAAAAABAAQAAAAAAIACAAAAAAAAAAAAABAAAAAAAAAAAQEBABYWFgAnJycANTU1AEdHRwBZWVkAZWVlAHh4eACIiIgAmZmZAK6urgDMzMwA19fXAOnp6QD+/v4AAAAAAP//7u7u7u7u7u7u7u7u////7u7u7u7u7u7u7u7u7u7//u7u7u7u7u7u7u7u7u7u7/7u7u7u7u7u7u7u7u7u7u/u7u7u7u7u7u7u7u7u7u7u7u7u7u7X3u7u7I7u7u7u7u7u7u7uYF7u7uIK7u7u7u7u7u7u7QAM7u6vBO7u7u7u7u7u7ucABe7uMA/O7u7u7u7u7u7R8q/O6gCEbu7u7u7u7u7ukAnibuTx6g3u7u7u7u7u7hAe6gzP+O4Y7u7u7u7u7urwju4mXx7uge7u7u7u7u7jAd7uoACO7tCe7u7u7u7uoPfu7uEB3u7mPu7u7u7u7k8N7u7QBu7u6wru7u7u7uwAXu7ufwbu7u407u7u7u7lAM7u7RBQzu7ur87u7u7u0ATu7ucA0l7u7uFu7u7u7n/67u7RB+oL7u7nHe7u7u0fPu7ucA3uJO7u7Qju7u7o/67u7Q9u7q+u7u5R3u7u0Q/e7ub/vu7PLO7uX13u4w//Be4v/xnoH/+ekv//Xu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7+7u7u7u7u7u7u7u7u7u7v/u7u7u7u7u7u7u7u7u7u7//u7u7u7u7u7u7u7u7u7v///+7u7u7u7u7u7u7u7v//8AAAD8AAAAOAAAABgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGAAAABwAAAA/AAAA8oAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAABAAAAAAAAAAAQEBABcXFwAnJycAOzs7AElJSQBpaWkAeXl5AIaGhgCVlZUApqamALOzswDMzMwA2dnZAObm5gD+/v4AAAAAAP/u7u7u7u7//u7u7u7u7u/u7uzu7t7u7u7u4Y7lTu7u7u6QTtA77u7u7iaoctXu7u7qDOQZ5d7u7uRO5R7rbu7uv77iLu5O7u5D7pGn7pju7QrtKOTe4+6z+OT40z2RTO7u7u7u7u7u7u7u7u7u7u7+7u7u7u7u7//u7u7u7u7/wAMAD4ABAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA+AAQAPwAMADw==", SuggestUrl: "https://en.wikipedia.org/w/api.php?action=opensearch&search=%s" }, { Id: 0, Name: "Google", Keyword: "g", Url: "https://www.google.com/search?q=%s", FaviconUrl: "data:image/png;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAASCwAAEgsAAAAAAAAAAAAA9IVCSvSFQuf0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULk9IVCSvSFQub0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQuf0hUL/9IVC//SFQv/0hUL/9Y1O//rIq//+7+f//eXX//vUvf/7z7X/96Fu//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vYwv/97OH/9ZRZ//SFQv/0hUL/9IhG//zbx//3om7/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/97uX/+buW//SFQv/0hUL/9IVC//SFQv/5upT/+9O6//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+b6b//zezP/0iEf/9IVC//SFQv/1klf//ezh//vPtP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/3qXr/+siq//m8lv/5wqD//vTu//3t4//1klb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0h0b//vbx//zi0//1j1H/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/2nmn/+bmS/////v/4sIX/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/5uJH///v5//eoef/1jU//+82y//afav/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//vXw//vOs//0hUL/9IVC//ekcf/96+D/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//728v/4sIX/9IVC//SFQv/4s4n///v4//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/6yKn/+byX//SFQv/0hkT//eTV//vWv//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IZE//m6lP/5u5b//OHQ///+/f/6y6//96d3//SFQv/0hUL/9IVC//SFQv/0hULm9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULm9IVCSfSFQub0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULm9IVCSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAASCwAAEgsAAAAAAAAAAAAA9IVCAPSFQif0hUKt9IVC8vSFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQvL0hUKt9IVCJ/SFQgD0hUIo9IVC7/SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULv9IVCKPSFQq30hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUKt9IVC8fSFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQvP0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9YtL//i2jv/828f//vLr///7+P///Pv//vTu//3n2v/6zbH/96Nw//SFQ//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ekcv/+8+z////////////+9fD/+9K5//m9mf/4to7/+buV//vSuf/++PT//OPT//aYYP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/2l13///r3/////////fv/+b2Z//SIRv/0hUL/9IVC//SFQv/0hUL/9IVC//WNT//84M///vXv//aZYf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//vPtP////////////i0i//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//WQUv///Pr//OPU//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//eTV///////+9O7/9IVD//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//3m2P//////9ppi//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/718H///////3s4f/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL//vDn///////4soj/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//erff////////38//WTWP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//iziv////////////iwhf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//rMsP///////eXW//WSVv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/4sYb///z7/////////Pv/9ZFV//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ixhv/+8Of//vn1//rMsP/4rH//9plh//WQUv/1j1L/+s2x//////////////////m9mf/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SGQ//2nmn/+buW//vNsv/82sb//e3j/////////////////////v/5wZ//9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/83Mj////////////++fb/+K+C//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9ZRZ/////////////vTt//aaYv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/1lFr////////////6xqf/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//ehbf/70bj//end//3o2////v3///////3l1//0iEb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/5wqD////////////96t7/96Z2//WOUP/2nWf//NvH//zcyP/1i0z/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/96l6/////////////vLr//WPUf/0hUL/9IVC//SFQv/0h0b//end//3k1f/0iUn/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/8387////////////4sYf/9IVC//SFQv/0hUL/9IVC//SFQv/6w6L///////nBn//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC///69////////vj1//SIR//0hUL/9IVC//SFQv/0hUL/9IVC//m+mv///////e3j//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL///r3///////8387/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/+syw///////++fb/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/95NX///////vUvP/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/97OH///////7y6//0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//i2jv///////N/O//SFQv/0hUL/9IVC//SFQv/0hUL/96Nx////////////+s2x//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IdF//zh0P//+/j/9ZJW//SFQv/0hUL/9IVC//SKSv/96t7///////738v/1k1f/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9YxN//vUvf/96+D/96Z0//WNT//3om///ebY/////////Pv/+LKI//WVW//0h0X/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//agbP/7zbL//enc//749P////////////////////////////3r4P/3p3f/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hULx9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC8/SFQq30hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUKt9IVCJ/SFQu/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC7/SFQif0hUIA9IVCJfSFQq30hULx9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC//SFQv/0hUL/9IVC8fSFQq30hUIl9IVCAIAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAB" }], VALIDATION_URL: "http://validator.w3.org/check?uri=%s&charset=%28detect+automatically%29&doctype=Inline&group=0" } }, function(e, t, n) { // ========================= // Function_747 // ========================= "use strict"; var i = n(10), a = n(7), r = a.omit; e.exports = function(e, t) { return new Promise(function(n, a) { if (void 0 !== t.DEFAULT_HOME) { var s = { preferenceKey: "vivaldi.home_page", preferenceValue: { string: t.DEFAULT_HOME }, preferenceType: "string" }; i.settings.setPreference(s), e.remove(["DEFAULT_HOME"], n.bind(void 0, r(t, "DEFAULT_HOME"))) } else n(t) }) } }, function(e, t) { // ========================= // Function_748 // ========================= "use strict"; e.exports = function(e, t) { return new Promise(function(n, i) { var a = {}; "keep_relations" === t.TAB_CLOSE_ACTIVATION ? (a.TAB_CLOSE_ACTIVATION = "activation_order", a.TAB_ACTIVATION_PREFER_RELATED = !0) : "activation_order" === t.TAB_CLOSE_ACTIVATION && void 0 === t.TAB_ACTIVATION_PREFER_RELATED && (a.TAB_ACTIVATION_PREFER_RELATED = !1), Object.keys(a) ? e.set(a, n.bind(void 0, Object.assign({}, t, a))) : n(t) }) } }, function(e, t, n) { // ========================= // Function_749 // ========================= "use strict"; var i = n(7), a = i.keyBy; e.exports = function(e, t) { return new Promise(function(n, i) { var r = {}; t.SEARCH_ENGINES && Array.isArray(t.SEARCH_ENGINES) && t.SEARCH_ENGINES.length > 0 ? ! function() { var i = a(e.getDefault("SEARCH_ENGINES"), "Id"), s = !1, o = t.SEARCH_ENGINES.map(function(e) { var t = e.Id; return e.url === i.url && null == e.SuggestUrl && i[t] && i[t].SuggestUrl ? (s = !0, Object.assign({}, e, { SuggestUrl: i[t].SuggestUrl })) : e }); s === !0 ? (console.log("Migrating Search Engines from", t.SEARCH_ENGINES, "to", o), r.SEARCH_ENGINES = o, e.set(r, n.bind(void 0, Object.assign({}, t, r)))) : n(t) }() : n(t) }) } }, function(e, t) { // ========================= // Function_750 // ========================= "use strict"; function n(e, t) { var n = this; return new Promise(function(i, a) { var r = { "https://www.vivaldi.rocks/Results.aspx?gd=SY1000190&ctid=&ISID=1D83D349-F886-40D4-B0E0-D0186D90911A&SearchSource=58&UM=8&D=090215&q=%s": "https://www.bing.com/search?pc=cosp&ptag=A9AF7AAEA7E&form=CONBDF&conlogo=CT3210127&q=%s", "https://www.vivaldi.rocks/Results.aspx?gd=SY1000191&ctid=&ISID=6607C819-705B-493E-B85F-75D5FF8ECA5D&SearchSource=58&UM=8&D=091115&q=%s": "https://search.yahoo.com/search;?q=%s" }, s = !1, o = {}; t.SEARCH_ENGINES && (o = { SEARCH_ENGINES: t.SEARCH_ENGINES.map(function(e) { return r[e.Url] ? (s = !0, Object.assign({}, e, { Url: r[e.Url] })) : e }) }), s && Object.keys(o) ? e.set(o, i.bind(n, Object.assign({}, t, o))) : i(t) }) } e.exports = n }, function(e, t) { // ========================= // Function_751 // ========================= "use strict"; function n(e, t) { var n = this; return new Promise(function(i, a) { var r = { "https://www.bing.com/search?pc=cosp&ptag=A9AF7AAEA7E&form=CONBDF&conlogo=CT3210127&q=%s": "https://www.bing.com/search?pc=cosp&ptag=AD6C08C471A&form=CONBDF&conlogo=CT3210127&q=%s" }, s = !1, o = {}; t.SEARCH_ENGINES && (o = { SEARCH_ENGINES: t.SEARCH_ENGINES.map(function(e) { return r[e.Url] ? (s = !0, Object.assign({}, e, { Url: r[e.Url] })) : e }) }), s && Object.keys(o) ? e.set(o, i.bind(n, Object.assign({}, t, o))) : i(t) }) } e.exports = n }, function(e, t) { // ========================= // Function_752 // ========================= "use strict"; function n(e, t) { var n = this; return new Promise(function(i, a) { var r = !1, s = {}; "on" === t.TABCOLOR_BEHIND_TABS ? (r = !0, s = { TABCOLOR_BEHIND_TABS: !0 }) : "off" === t.TABCOLOR_BEHIND_TABS && (r = !0, s = { TABCOLOR_BEHIND_TABS: !1 }), r && Object.keys(s).length > 0 ? e.set(s, i.bind(n, Object.assign({}, t, s))) : i(t) }) } e.exports = n }, function(e, t, n) { // ========================= // Function_753 // ========================= "use strict"; function i(e, t, n) { return t in e ? Object.defineProperty(e, t, { value: n, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = n, e } function a(e, t) { var n = t[r] || 0; return Object.keys(s).filter(function(e) { return e > n }).sort(function(e, t) { return e - t }).reduce(function(t, n) { return t.then(s[n].bind(null, e)) }, Promise.resolve(t)).then(function(t) { return e.set(i({}, r, Object.keys(s).length)), t }) } var r = "SETTINGS_MIGRATION_VERSION", s = { 1: n(747), 2: n(748), 3: n(749), 4: n(750), 5: n(751), 6: n(752), 7: n(381), 8: n(381) }; e.exports = a }, function(e, t) { // ========================= // Function_754 // ========================= "use strict"; e.exports = { COMMAND_ADD_BOOKMARK: { shortcut: ["meta+d"], showInQC: !0 }, COMMAND_CLIPBOARD_PASTE_AS_PLAIN_TEXT_OR_PASTE_AND_GO: { shortcut: ["shift+meta+v"], showInQC: !0 }, COMMAND_CLOSE_TAB: { shortcut: ["meta+w"], gestures: ["20"], showInQC: !0 }, COMMAND_COPY_SELECTION_TO_NOTE: { shortcut: ["shift+meta+c"], showInQC: !0 }, COMMAND_MOVE_TAB_TO_NEW_WINDOW: { showInQC: !0 }, COMMAND_DEVELOPER_TOOLS: { shortcut: ["shift+meta+i", "f12"], showInQC: !0 }, COMMAND_EXIT: { shortcut: ["meta+q"], showInQC: !0 }, COMMAND_FIND_IN_PAGE: { shortcut: ["meta+f", "."], showInQC: !0 }, COMMAND_FIND_NEXT_IN_PAGE: { shortcut: ["f3", "meta+g"], showInQC: !0 }, COMMAND_FIND_PREVIOUS_IN_PAGE: { shortcut: ["shift+f3", "shift+meta+g"], showInQC: !0 }, COMMAND_FOCUS_ADDRESSFIELD: { shortcut: ["meta+l", "f8"], showInQC: !0 }, COMMAND_FOCUS_SEARCHFIELD: { shortcut: ["meta+k"], showInQC: !0 }, COMMAND_FULLSCREEN: { shortcut: ["ctrl+meta+f", "f11"], showInQC: !1 }, COMMAND_MAIL_MARK_SELECTED_UNREAD: { shortcut: ["shift+k"], showInQC: !1 }, COMMAND_MAIN_ZOOM_IN: { shortcut: ["meta+=", "meta++", "0", "+"], showInQC: !0 }, COMMAND_MAIN_ZOOM_OUT: { shortcut: ["meta+-", "9", "-"], showInQC: !0 }, COMMAND_MAIN_ZOOM_RESET: { shortcut: ["meta+0", "6", "*"], showInQC: !0 }, COMMAND_MAIN_TOGGLE_UI: { shortcut: ["meta+f11"], showInQC: !0 }, COMMAND_SHOW_KEYBOARDSHORTCUTS: { shortcut: ["meta+f1"], showInQC: !0 }, COMMAND_NEW_TAB: { shortcut: ["meta+t"], gestures: ["2"], showInQC: !0 }, COMMAND_NEW_WINDOW: { shortcut: ["meta+n"], showInQC: !0 }, COMMAND_NEW_PRIVATE_WINDOW: { shortcut: ["shift+meta+n"], showInQC: !0 }, COMMAND_CLOSE_WINDOW: { shortcut: ["shift+meta+w"], showInQC: !0 }, COMMAND_OPEN_PAGE: { shortcut: ["meta+o"], showInQC: !0 }, COMMAND_STOP_PAGE: { shortcut: ["esc", "meta+."], gestures: ["6"], showInQC: !0 }, COMMAND_PAGE_BACK: { shortcut: ["backspace", "meta+left", "z"], gestures: ["4"], showInQC: !0 }, COMMAND_PAGE_FORWARD: { shortcut: ["meta+right", "x"], gestures: ["0"], showInQC: !0 }, COMMAND_PAGE_REFRESH: { shortcut: ["meta+r", "f5"], gestures: ["62"], showInQC: !0 }, COMMAND_PAGE_RELOAD_NOCACHE: { shortcut: ["shift+meta+r", "meta+f5"], showInQC: !0 }, COMMAND_PRINT_PAGE: { shortcut: ["meta+p"], showInQC: !0 }, COMMAND_SAVE_PAGE: { shortcut: ["meta+s"], showInQC: !0 }, COMMAND_SHOW_BOOKMARK_BAR: { shortcut: ["shift+meta+b"], showInQC: !0 }, COMMAND_SHOW_BOOKMARK_PANEL: { shortcut: ["alt+meta+b"], showInQC: !0 }, COMMAND_SHOW_CONTACTS_PANEL: { shortcut: ["alt+meta+t"], showInQC: !0 }, COMMAND_SHOW_DOWNLOADS_PANEL: { shortcut: ["alt+meta+l"], showInQC: !0 }, COMMAND_SHOW_MAIL_PANEL: { shortcut: ["alt+meta+m"], showInQC: !0 }, COMMAND_SHOW_NOTES_PANEL: { shortcut: ["alt+meta+n"], showInQC: !0 }, COMMAND_SHOW_EXTENSIONS: { shortcut: ["ctrl+meta+e"], showInQC: !0 }, COMMAND_SHOW_HELP: { shortcut: ["shift+meta+?"], showInQC: !0 }, COMMAND_SHOW_HISTORY: { shortcut: ["meta+y"], showInQC: !0 }, COMMAND_SHOW_BOOKMARKS: { shortcut: ["ctrl+meta+b"], showInQC: !0 }, COMMAND_SHOW_CLEAR_PRIVATE_DATA: { shortcut: ["shift+meta+del"], showInQC: !0 }, COMMAND_SHOW_QUICK_COMMANDS: { shortcut: ["meta+e", "f2"], showInQC: !1 }, COMMAND_SHOW_SETTINGS: { shortcut: ["meta+,"], showInQC: !0 }, COMMAND_SHOW_HOMEPAGE: { shortcut: ["shift+meta+h"], showInQC: !0 }, COMMAND_TAB_REOPEN_RECENTLY_CLOSED: { shortcut: ["meta+z", "shift+meta+t"], gestures: ["60"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_GRID: { shortcut: ["meta+f7"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_HORIZONTAL: { shortcut: ["meta+f8"], showInQC: !0 }, COMMAND_TAB_STACK_TILE_VERTICAL: { shortcut: ["meta+f9"], showInQC: !0 }, COMMAND_TAB_STACK_UNTILE: { shortcut: ["meta+f6"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_HISTORY: { shortcut: ["3", "numpad3"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_ORDER: { shortcut: ["shift+meta+]", "2"], showInQC: !0 }, COMMAND_TAB_SWITCH_BACK_SETTING: { shortcut: ["ctrl+tab", "shift+meta+right"], showInQC: !1 }, COMMAND_TAB_SWITCH_FORWARD_HISTORY: { shortcut: ["4", "numpad4"], showInQC: !0 }, COMMAND_TAB_SWITCH_FORWARD_ORDER: { shortcut: ["shift+meta+[", "1"], showInQC: !0 }, COMMAND_TAB_SWITCH_FORWARD_SETTING: { shortcut: ["ctrl+shift+tab", "shift+meta+left"], showInQC: !1 }, COMMAND_TAB_SWITCH_1: { shortcut: ["meta+1"], showInQC: !1 }, COMMAND_TAB_SWITCH_2: { shortcut: ["meta+2"], showInQC: !1 }, COMMAND_TAB_SWITCH_3: { shortcut: ["meta+3"], showInQC: !1 }, COMMAND_TAB_SWITCH_4: { shortcut: ["meta+4"], showInQC: !1 }, COMMAND_TAB_SWITCH_5: { shortcut: ["meta+5"], showInQC: !1 }, COMMAND_TAB_SWITCH_6: { shortcut: ["meta+6"], showInQC: !1 }, COMMAND_TAB_SWITCH_7: { shortcut: ["meta+7"], showInQC: !1 }, COMMAND_TAB_SWITCH_8: { shortcut: ["meta+8"], showInQC: !1 }, COMMAND_TAB_SWITCH_LAST: { shortcut: ["meta+9"], showInQC: !1 }, COMMAND_TAB_VIEW_PAGE_SOURCE: { shortcut: ["meta+u"], showInQC: !0 }, COMMAND_TASK_MANAGER: { showInQC: !0 }, COMMAND_TOGGLE_FOOTER: { shortcut: ["meta+/"], showInQC: !0 }, COMMAND_TOGGLE_MENU_POSITION: { showInQC: !1 }, COMMAND_TOGGLE_PANEL: { shortcut: ["alt+meta+p", "f4"], showInQC: !0 }, COMMAND_SHOW_NEXT_PANEL: { shortcut: ["alt+meta+down"], showInQC: !0 }, COMMAND_SHOW_PREVIOUS_PANEL: { shortcut: ["alt+meta+up"], showInQC: !0 }, DIM_BLURRED: !0, TAB_NEVER_CLOSE_LAST: !1 } }, function(e, t) { // ========================= // Function_755 // ========================= "use strict"; e.exports = { COMMAND_CLOSE_WINDOW: { shortcut: ["ctrl+shift+w"], showInQC: !0 }, COMMAND_EXIT: { shortcut: ["ctrl+q"], showInQC: !0 } } }, function(e, t) { // ========================= // Function_756 // ========================= "use strict"; e.exports = { COMMAND_EXIT: { showInQC: !0 } } }, function(e, t, n) { // ========================= // Function_757 // ========================= "use strict"; var i = n(4), a = n(3), r = n(54), s = "en-US", o = "./default-bookmarks/", l = function() { var e = i.i18n.getUILanguage(); return ["be", "de", "en-GB", "en-US", "es", "fr", "is", "it", "ja", "nb", "nn", "pl", "ru", "sv", "tr", "uk"].indexOf(e) === -1 ? s : e }, c = function(e, t, n) { if (e && e.length) { var a = e[0]; i.bookmarks.create({ title: a.title, url: a.url, thumbnail: a.thumbnail, description: a.description, speeddial: Boolean(a.speeddial), parentId: t }, function(i) { c(a.children, i.id, function() { c(e.slice(1), t, n) }) }) } else "function" == typeof n && n() }, u = function(e, t) { var n = o + e + ".json"; fetch(n, { method: "GET" }).then(function(e) { return e.json() }).then(function(e) { return c(e, "1", t) }).catch(function(e) { console.log("Error loading default bookmarks: ", e), t() }) }; e.exports = function() { return new Promise(function(e, t) { var n = l(); a.get("VIVALDI_FIRSTRUN_DONE", function(t) { t !== !0 ? (r.disableBookmarkMutationHandlers(), u(n, function() { r.enableBookmarkMutationHandlers(), e() }), a.set({ VIVALDI_FIRSTRUN_DONE: !0 })) : e() }) }) } }, function(e, t, n) { // ========================= // Function_758 // ========================= (function(t) { "use strict"; e.exports = function() { if (Boolean(t.env.ENABLE_LIVERELOAD)) { var e = n(4); ! function() { var t = "localhost:", n = 35729, i = new WebSocket("ws://" + t + n + "/livereload"); i.onerror = function(e) { console.log("reload connection got error" + JSON.stringify(e)) }, i.onmessage = function(t) { if (t.data) { var n = JSON.parse(t.data); n && n.path && !n.path.match(/\.css$/) && "reload" === n.command && e.runtime.reload() } } }() } } }).call(t, n(16)) }, , function(e, t, n) { // ========================= // Function_760 // ========================= "use strict"; function i() { a.declarativeWebRequest.onRequest.removeRules(), a.declarativeWebRequest.onRequest.addRules(s) } Object.defineProperty(t, "__esModule", { value: !0 }), t.loadUASpoof = i; var a = n(4), r = n(383), s = r.uaspoofRules }, function(e, t, n) { // ========================= // Function_761 // ========================= "use strict"; function i() { "function" == typeof s.bookmarksPrivate.updateSpeedDialsForWindowsJumplist && (o(), r.addChangeListener(o)) } function a() { "function" == typeof s.bookmarksPrivate.updateSpeedDialsForWindowsJumplist && r.removeChangeListener(o) } var r = n(51), s = n(10), o = function() { var e = "function" == typeof s.bookmarksPrivate.updateSpeedDialsForWindowsJumplist; if (e) { var t = r.getSpeeddialNodes(); if (t && 0 !== t.length && t[0].children) { var n = t[0].children, i = n.filter(function(e) { return e.url }).map(function(e) { return { title: e.title, url: e.url } }); s.bookmarksPrivate.updateSpeedDialsForWindowsJumplist(i) } } }; e.exports = { start: i, stop: a } }, function(e, t, n) { // ========================= // Function_762 // ========================= "use strict"; function i() { return a.register(function(e) { var t = e.action, n = new Date, i = n.toLocaleString("is") + ": "; switch (t.actionType) { case r.STATUS_SET_STATUS: l.push(i + t.status); break; case r.MAIL_ADD_MESSAGES: case r.MAIL_REMOVE_MESSAGES: case r.MAIL_UPDATE_MESSAGES: case r.MAIL_CHECK_NEW_DELETED_MODIFIED: case r.MAIL_RESCAN_UNREAD_FLAGS: l.push(i + " " + t.actionType + ": " + t.accountId + ", " + t.path); break; case r.MAIL_MARK_SEEN: l.push(i + t.actionType + ": " + t.sle.accountId + ", " + t.sle.path); break; case r.MAIL_ADD_FILTER: case r.MAIL_REMOVE_FILTER: case r.MAIL_ADD_FOLDERS: case r.MAIL_SELECT_FOLDER: case r.MAIL_REPLACE_FOLDERS: case r.MAIL_SEARCH_SET_OPTIONS: case r.MAIL_FILTERS_INIT: case r.MAIL_MESSAGES_INIT: case r.MAIL_CONNECT_IMAP_CLIENTS: case r.MAIL_DISCONNECT_IMAP_CLIENTS: case r.CONTACT_INITIALIZE: case r.CONTACT_SAVE_CONTACT: case r.CONTACT_ADD_CONTACTS: case r.CONTACT_SELECT_CONTACT: case r.CONTACT_DELETE_CONTACT: l.push(i + t.actionType); break; default: l.push(i + t.actionType) } c.emitChange() }) } var a = n(8), r = n(6), s = n(18).EventEmitter, o = "change", l = [], c = Object.assign({}, s.prototype, { id: 0, getAction: function() { for (; l.length > 500;) l.shift(); return l.join("\r\n") }, clear: function() { l = [], this.emitChange() }, emitChange: function(e) { this.emit(o, e) }, addChangeListener: function(e) { 0 === this.listeners(o).length && (this.id = i()), this.on(o, e) }, removeChangeListener: function(e) { 1 === this.listeners(o).length && a.unregister(this.id), this.removeListener(o, e) } }); e.exports = c }, function(e, t, n) { // ========================= // Function_763 // ========================= "use strict"; var i = n(18).EventEmitter, a = n(8), r = n(6), s = "change", o = void 0, l = Object.assign({}, i.prototype, { getActiveMessage: function() { return o && o.state.message }, emitChange: function() { this.emit(s) }, addChangeListener: function(e, t) { this.on(s, e) }, removeChangeListener: function(e) { this.removeListener(s, e) } }); a.register(function(e) { var t = e.action; switch (t.actionType) { case r.MAIL_SET_ACTIVE_MESSAGE: o !== t.mailDetail && (o = t.mailDetail, l.emitChange()); break; case r.MAIL_CLEAR_IF_ACTIVE: o === t.mailDetail && (o = void 0, l.emitChange()) } }), e.exports = l }, function(e, t, n) { // ========================= // Function_764 // ========================= "use strict"; function i(e) { return e && e.__esModule ? e : { default: e } } function a(e) { d.emitChangeParam("browsingDataRemoved", e) } var r = n(18), s = i(r), o = n(8), l = i(o), c = n(6), u = i(c), A = "change", d = Object.assign({}, s.default.prototype, { emitChangeParam: function(e, t) { this.emit(A, e, t) }, addChangeListener: function(e) { this.on(A, e) }, removeChangeListener: function(e) { this.removeListener(A, e) } }); l.default.register(function(e) { var t = e.action; switch (t.actionType) { case u.default.BROWSING_DATA_REMOVED: a(t); break; default: return !0 } }), e.exports = d }, function(e, t, n) { // ========================= // Function_765 // ========================= "use strict"; var i = n(8), a = n(6), r = n(18).EventEmitter, s = "change", o = void 0, l = Object.assign({}, r.prototype, { getSelected: function() { return o }, emitChange: function(e) { this.emit(s, e) }, addChangeListener: function(e) { this.on(s, e) }, removeChangeListener: function(e) { this.removeListener(s, e) } }), c = function(e) { o = e, l.emitChange() }; i.register(function(e) { var t = e.action; switch (t.actionType) { case a.CONTACT_SELECT_CONTACT: c(t.contact) } }), e.exports = l }, function(e, t, n) { // ========================= // Function_766 // ========================= "use strict"; var i = n(8), a = n(6), r = n(388), s = n(765), o = n(18).EventEmitter, l = "change", c = {}, u = void 0, A = "", d = Object.assign({}, o.prototype, { getOptions: function() { return c }, getOptionsFilter: function() { if (c.toggleFromMessage) { var e = c.toggleFromMessage; u = !u && e && e.from.length > 0 ? e.from[0].address : void 0, delete c.toggleFromMessage } else c.fromContact && (u = s.getSelected().address); return c.hasOwnProperty("from") && (u = c.from), c.hasOwnProperty("subject") && (A = c.subject), function(e) { return (!u || e.from.length > 0 && e.from[0].address.startsWith(u)) && (!A || e.subject.length > 0 && e.subject.toLowerCase().startsWith(A)) } }, getOptionsQuery: function() { return c.query || "" }, emitChange: function(e) { this.emit(l, e) }, addChangeListener: function(e) { this.on(l, e) }, addOneTimeChangeListener: function(e) { this.once(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }); d.dispatchToken = i.register(function(e) { var t = e.action; switch (t.actionType) { case a.MAIL_SELECT_FOLDER: i.waitFor([r.dispatchToken]), c = {}, u = void 0, d.emitChange(); break; case a.MAIL_SEARCH_SET_OPTIONS: c = t.options, c.clearFrom && (u = void 0), d.emitChange() } }), e.exports = d }, function(e, t, n) { // ========================= // Function_767 // ========================= "use strict"; function i() { c = "", u.emitChange() } function a(e) { c = e, u.emitChange() } var r = n(18).EventEmitter, s = n(8), o = n(6), l = "change", c = "", u = Object.assign({}, r.prototype, { getStatus: function(e) { return c }, emitChange: function() { this.emit(l) }, addChangeListener: function(e) { this.on(l, e) }, removeChangeListener: function(e) { this.removeListener(l, e) } }); s.register(function(e) { var t = e.action; switch (t.actionType) { case o.STATUS_SET_STATUS: a(t.status, t.timeout); break; case o.STATUS_CLEAR_STATUS: i(); break; default: return !0 } }), e.exports = u }, function(e, t, n) { // ========================= // Function_768 // ========================= "use strict"; function i() { u = {}, A.emitChange() } function a(e, t) { u[e] = t, A.emitChange() } function r(e) { var t = ["focusSearchField", "focusAddressField"]; t.indexOf(e.action) > -1 && i() } var s = n(8), o = n(6), l = n(18).EventEmitter, c = "change", u = {}, A = Object.assign({}, l.prototype, { allHidden: function() { return 0 === Object.keys(u).filter(function(e) { return Boolean(u[e]) }).length }, getShowTooltip: function(e) { return Boolean(u[e]) }, emitChange: function() { this.emit(c) }, addChangeListener: function(e) { this.on(c, e) }, removeChangeListener: function(e) { this.removeListener(c, e) } }); s.register(function(e) { var t = e.action; switch (t.actionType) { case o.PAGE_CLOSE: case o.TOOLTIP_CLEAR: case o.URLFIELD_SET_STATE: i(); break; case o.WEBPAGEVIEW_ACTIONS: r(t.action); break; case o.TOOLTIP_SHOW: a(t.id, !0); break; case o.TOOLTIP_HIDE: a(t.id, !1); break; default: return !0 } }), e.exports = window.TooltipStore = A }, function(e, t, n) { // ========================= // Function_769 // ========================= "use strict"; var i = n(3), a = { setStartpageBackgroundFromUrl: function(e) { var t = new XMLHttpRequest, n = new FileReader; t.open("GET", e, !0), t.responseType = "blob", t.addEventListener("load", function() { 200 === t.status && (n.onload = function(e) { i.set({ STARTPAGE_IMAGE_USER_DEFINED: e.target.result, STARTPAGE_IMAGE: "user_defined", STARTPAGE_SHOW_IMAGE: !0 }) }, n.readAsDataURL(t.response)) }, !1), t.send() } }; e.exports = a }, function(e, t) { // ========================= // Function_770 // ========================= "use strict"; var n = function(e, t, n) { var i = {}; for (var a in e) e.hasOwnProperty(a) && Array.prototype.indexOf.call(arguments, a, 1) === -1 && (i[a] = e[a]); return i }; e.exports = n }, function(e, t) { // ========================= // Function_771 // ========================= "use strict"; function n(e) { return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&") } e.exports = n }, function(e, t, n) { // ========================= // Function_772 // ========================= "use strict"; function i(e) { if ("string" != typeof e) throw new TypeError("Paramter `path` must be a string"); var t = o.resolve(e).replace(/\\/g, "/"); return "/" !== t[0] && (t = "/" + t), encodeURI("file://" + t) } function a(e) { return 1 === e.indexOf(":") && e.match(/^[a-z]/gi) || 0 === e.indexOf("/") || 0 === e.indexOf("\\") } function r(e) { return 0 === e.indexOf("/") } function s(e, t) { if ("string" != typeof e) throw new TypeError("Paramter `path` must be a string"); return t ? a(e) : r(e) } var o = n(938); t.isPath = s, t.win32PathToFileUrl = i }, function(e, t, n) { // ========================= // Function_773 // ========================= (function(t) { "use strict"; function i(e, t) { for (var n = t.length - 1; n >= 0; n--) { if (t[t[n]]) { var i = t[t[n]].replace(o, "$1" + s); t[t[n]] = i } t[t[n]] && e.push(t[n] + ":" + t[t[n]] + ";") } } function a(e, t) { for (var n = t.length - 1; n >= 0; n--) { var r = t[n]; if (1 === r.type && r.selectorText) e.push(r.selectorText + "{"), r.style && i(e, r.style), e.push("}"); else if (r.type === r.MEDIA_RULE) e.push("@media " + r.media.mediaText + "{"), a(e, r.cssRules), e.push("}"); else if (r.type === r.FONT_FACE_RULE) e.push("@font-face {"), r.style && i(e, r.style), e.push("}"); else if (r.type === r.KEYFRAMES_RULE) { e.push("@keyframes " + r.name + "{"); for (var s = r.cssRules.length - 1; s >= 0; s--) { var o = r.cssRules[s]; 8 === o.type && o.keyText && (e.push(o.keyText + "{"), o.style && i(e, o.style), e.push("}")) } e.push("}") } } } var r = n(805), s = "https://240.0.0.0/?url=", o = /(url\("?)(?!data:)/gim, l = function(e, t) { if ("style" === t.tagName) { var n = []; a(n, e.sheet.cssRules), e.textContent = n.join("\n") } }, c = ["action", "background", "poster", "src"], u = !1, A = function(e) { if (c.forEach(function(t) { e.hasAttribute(t) && !/^data:image\//.test(e.getAttribute(t)) && (u = !0, e.removeAttribute(t)) }), e.hasAttribute("style")) { for (var t = e.style, n = [], i = t.length - 1; i >= 0; i--) { if (e.style[t[i]] && o.test(e.style[t[i]])) { var a = e.style[t[i]].replace(o, "$1" + s); e.style[t[i]] = a } n.push(t[i] + ":" + e.style[t[i]] + ";") } n.length ? e.setAttribute("style", n.join("")) : e.removeAttribute("style") } }, d = function(e) { "target" in e && e.setAttribute("target", "_blank"), e.hasAttribute("target") || !e.hasAttribute("xlink:href") && !e.hasAttribute("href") || e.setAttribute("xlink:show", "new") }, h = function(e, n) { var i = e[n.src]; if (i) { var a = new t(i.content.buffer).toString("base64"); n.setAttribute("src", "data:" + i.mimeType + ";base64," + a) } }; e.exports = { sanitize: function(e, t) { var n = t && t.attachments || {}, i = !0; t && t.hasOwnProperty("blockHTTPLeaks") && (i = t.blockHTTPLeaks), r.addHook("afterSanitizeAttributes", d), r.addHook("afterSanitizeAttributes", h.bind(void 0, n)), i && (r.addHook("afterSanitizeAttributes", A), r.addHook("uponSanitizeElement", l)), u = !1; var a = r.sanitize(e, { ALLOW_UNKNOWN_PROTOCOLS: !0, FORBID_TAGS: i ? ["svg"] : [], WHOLE_DOCUMENT: !0 }); return r.removeHooks("afterSanitizeAttributes"), r.removeHooks("uponSanitizeElement"), { sanitized: a, leakPrevented: u } }, htmlToText: function(e) { return r.sanitize(e, { ALLOWED_TAGS: [] }).replace(/( {2})+/g, "").replace(/\n\n+/g, "\n\n").replace(/ /g, "\t").trim() } } }).call(t, n(252).Buffer) }, function(e, t) { // ========================= // Function_774 // ========================= "use strict"; function n(e, t) { return t = t.replace(/^https?\:\/\/(www+\.)?/, ""), 0 === t.indexOf(e) } e.exports = n }, function(e, t, n) { // ========================= // Function_775 // ========================= "use strict"; var i = n(52), a = n(59), r = n(10), s = "", o = "", l = function(e, t) { for (var n = 0; n < t.length; n++) { var i = t.charAt(n).toUpperCase(); if (" " !== i && "-" !== i) { var a = e.indexOf(i); if (a === -1) return n } } return -1 }, c = function e(t) { for (var n = "", i = 0; i < t.length; i++) { var a = t[i]; if ("---" !== a.name && a.mnemonic !== !1) { var r = a.name.indexOf("&"); r !== -1 && r + 1 < a.name.length ? (a.nameWithMnemonic = a.name, n += a.name.charAt(r + 1).toUpperCase()) : a.nameWithMnemonic = void 0 } else if (a.mnemonic === !1) { var s = a.name.indexOf("&"); s !== -1 && (a.nameWithMnemonic = a.name.replace(/\&/g, "&&")) } } for (var o = 0; o < t.length; o++) { var c = t[o]; if ("---" !== c.name && c.mnemonic !== !1) { if (void 0 === c.nameWithMnemonic) { var u = l(n, c.name); u >= 0 && (n += c.name.charAt(u).toUpperCase(), c.nameWithMnemonic = c.name.slice(0, u) + "&" + c.name.slice(u)); } c.items && e(c.items) } } }, u = function(e) { var t = 0, l = {}, u = function(e, t) { "function" == typeof l[t] && l[t].call(this, e) }, A = function e(a) { if (!a) return null; 0 === s.length && (s = btoa(n(406))), 0 === o.length && (o = btoa(n(405))); var r; a.items && a.bookmarkFolder === !0 ? r = s : a.url ? r = o : a.iconName && (r = i.getIconByName(a.iconName)); var c = a.visible !== !1; "function" == typeof a.testVisibility && (c = a.testVisibility()); var u = void 0 !== a.tag ? a.tag : t++, A = a.nameWithMnemonic ? a.nameWithMnemonic : a.name; return l[u] = a.handler, { id: u, name: void 0 === A ? "" : A, visible: c, items: a.items ? a.items.map(e) : null, type: a.type ? a.type : "normal", checked: !!a.checked && a.checked, emphasized: a.emphasized, shortcut: a.shortcut, parameter: a.parameter, url: a.url, icon: r } }; return function(t) { var n = "function" == typeof e ? e() : e, i = a(); "mac" !== i && c(n), r.showMenu.create({ mode: t, left: -1, top: -1, items: n.map(A) }, u.bind(this, event)) } }; e.exports = u }, function(e, t, n) { // ========================= // Function_776 // ========================= "use strict"; function i(e) { return e && e.id ? void u.runtime.sendMessage({ getNavigationState: { tabId: e.id } }, function(t) { void 0 !== t && ! function() { var n = r.tabToPage({ id: e.id }); s.copyFastForwardState(n, t.fastForwardState), l.setNavigationState(n, new d(t.navigationState)), l.setSSLState(n, t.sslInfo.state, t.sslInfo.issuer), t.blockedPopups.forEach(function(e) { return l.addBlockedPopupEvent(n, e) }) }() }) : void console.warn("Need a tab to sync") } function a(e, t, n) { var i = r.tabToPage({ id: e }); u.runtime.sendMessage({ setNavigationState: { blockedPopups: c.getBlockedPopups(i), fastForwardState: o.getState(i), navigationState: c.getNavigationInfo(i), sslInfo: c.getSSLInfo(i), tabId: e } }) } var r = n(73), s = n(129), o = n(173), l = n(95), c = n(112), u = n(4), A = n(27), d = A.Map; t.syncDetachedTabInformation = i, t.storeDetachedTabInformation = a }, function(e, t, n) { // ========================= // Function_777 // ========================= "use strict"; var i = n(45), a = n(396), r = a.modifierIsUp, s = function() { var e = !1; return function(t, n, a) { function s(t) { t.keyCode === i.KEY_ESCAPE && (e = !1, n.call(this, !0), document.removeEventListener("keydown", s), document.removeEventListener("keyup", o), document.removeEventListener("mouseup", l)) } function o(a) { (a.keyCode === i.KEY_RETURN || a.keyCode === i.KEY_ENTER || r(t, a)) && (e = !1, n.call(this, !1), document.removeEventListener("keydown", s), document.removeEventListener("keyup", o), document.removeEventListener("mouseup", l)) } function l(t) { 2 !== t.button && (0 !== t.button || 0 !== t.buttons && 2 !== t.buttons) || (e = !1, n.call(this, !1), document.removeEventListener("keydown", s), document.removeEventListener("keyup", o), document.removeEventListener("mouseup", l)) } if (a = a || null, "keydown" === t.type) { if (!t.ctrlKey || t.altKey) return } else { if ("wheel" !== t.type) return; if (!t.altKey && (0 !== t.button || 2 !== t.buttons)) return } e !== !0 && (e = !0, document.addEventListener("keydown", s), document.addEventListener("keyup", o), document.addEventListener("mouseup", l)) } }(); t.tabSwitcherListener = s }, function(e, t) { // ========================= // Function_778 // ========================= "use strict"; var n = function(e) { return e.FaviconUrl ? Object.assign(e, { Image: e.FaviconUrl }) : e }, i = function(e) { return e.map(n) }; e.exports = i }, function(e, t, n) { // ========================= // Function_779 // ========================= (function(t) { "use strict"; function n(e) { var n = e.match(/^(data:)(.*?)?(;charset=.*?)?(;base64)?,(.*)$/); if (!n) return e; for (var i = n[2], a = n[5], r = new t(a, "base64").toString("binary"), s = new Array(r.length), o = 0; o < r.length; o++) s[o] = r.charCodeAt(o); var l = new Uint8Array(s), c = new Blob([l], { type: i }); return window.URL.createObjectURL(c) } e.exports = n }).call(t, n(252).Buffer) }, function(e, t, n) { // ========================= // Function_780 // ========================= "use strict"; function i(e) { return new Promise(function(e, t) { return s.init(e) }) } var a = n(4), r = n(7), s = { init: function(e) { this.cb = e, this.pageactionFiles = [], a.runtime.getPackageDirectoryEntry(this.gotPackageDirectory.bind(this)) }, fireCallback: function() { this.cb(this.pageactionFiles) }, gotPackageDirectory: function(e) { var t = e.createReader(); t.readEntries(this.gotPackageEntries.bind(this)) }, gotPackageEntries: function(e) { var t = this; e.forEach(function(e) { if ("user_files" === e.name && e.isDirectory) { var n = e.createReader(); n.readEntries(t.findPageActionFiles.bind(t)) } }) }, findPageActionFiles: function(e) { var t = this; this.executeWhenAllEntriesLoaded = r.after(e.length, function() { t.fireCallback() }), e.forEach(function(e, t) { var n = function(t) { this.pushNewEntry(t, e.name) }.bind(this); e.file(n) }.bind(this)) }, pushNewEntry: function(e, t) { var n = new FileReader, i = t.lastIndexOf("."), a = "style"; i !== -1 && ("css" === t.substr(i + 1) ? a = "style" : "js" === t.substr(i + 1) && (a = "script")), t = t.substr(0, i), n.type = a, n.filename = t.replace(/_/g, " "), n.onload = this.onFileRead.bind(this), n.readAsText(e) }, onFileRead: function(e) { var t = { name: e.target.filename, type: e.target.type, code: e.target.result }; "string" == typeof e.target.filename && e.target.filename.length && this.pageactionFiles.push(t), "function" == typeof this.executeWhenAllEntriesLoaded && this.executeWhenAllEntriesLoaded() } }; e.exports = i }, function(e, t, n) { // ========================= // Function_781 // ========================= "use strict"; var i = n(4), a = n(454), r = a(function() { return i.i18n.getUILanguage() }); e.exports = r }, function(e, t) { // ========================= // Function_782 // ========================= "use strict"; var n = function(e, t) { switch (e) { case "onCreated": case "onActivated": return t[0].windowId; case "onUpdated": return t[2].windowId; case "onRemoved": case "onMoved": return t[1].windowId; case "onDetached": return t[1].oldWindowId; case "onAttached": return t[1].newWindowId; default: return } }; e.exports = n }, , function(e, t) { // ========================= // Function_784 // ========================= "use strict"; var n = function() { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return new Promise(function(t) { return window.requestIdleCallbackPromise ? window.requestIdleCallback(t, e) : t() }) }; e.exports = n }, function(e, t) { // ========================= // Function_785 // ========================= "use strict"; function n(e, t) { if (!t || !e || "string" != typeof t.url || "string" != typeof e.url) throw TypeError("Needs both target and current"); if (t.score === e.score) { var n = t.url.length, i = e.url.length; return n <= i } return (t.score || 0) > (e.score || 0) } e.exports = n }, , , function(e, t) { // ========================= // Function_788 // ========================= "use strict"; e.exports = function(e, t) { return Math.max(0, Math.min(e.left + e.width, t.left + t.width) - Math.max(e.left, t.left)) * Math.max(0, Math.min(e.top + e.height, t.top + t.height) - Math.max(e.top, t.top)) } }, function(e, t, n) { // ========================= // Function_789 // ========================= "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.combineLists = t.rotateList = t.moveToStart = t.moveToEnd = void 0; n(27), t.moveToEnd = function(e, t) { var n = e.indexOf(t); return (n === -1 ? e : e.delete(n)).push(t) }, t.moveToStart = function(e, t) { var n = e.indexOf(t); return (n === -1 ? e : e.delete(n)).unshift(t) }, t.rotateList = function(e) { var t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; return t === !0 ? e.shift().push(e.first()) : e.pop().unshift(e.last()) }, t.combineLists = function(e, t) { var n = t.asMutable(); return n = e.reduce(function(e, t) { return e.contains(t) ? e : e.push(t) }, n), n = n.reduce(function(t, n) { return e.contains(n) ? t : t.filter(function(e) { return e !== n }) }, n), n.asImmutable() } }, function(e, t) { // ========================= // Function_790 // ========================= "use strict"; function n(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } function i(e) { var t = e.data, n = t.id, i = t.results, o = t.batch, l = t.total, c = t.index, u = t.error; if ("undefined" == typeof n) throw new Error("Invalid message, missing id: " + JSON.stringify(e.data)); "undefined" != typeof u ? s(n, u) : "undefined" != typeof o ? r(n, o, l, c) : a(n, i) } function a(e, t) { var n = l[e].resolve; n(t), delete l[e] } function r(e, t, n, i) { var a = l[e]; if (a.batches || (a.batches = [], a.received = 0), a.batches[i] = t, a.received++, a.received === n) { var r = a.batches.reduce(function(e, t) { return e.concat(t) }, []); a.resolve(r), delete l[e] } } function s(e, t) { var n = l[e].reject; n(t), delete l[e] } var o = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), l = {}, c = 0, u = function() { function e(t) { var a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : ["worker"]; n(this, e), this.workers = a.reduce(function(e, n) { var a = new t; return a.onmessage = i, a.onerror = console.error, e[n] = a, e }, {}) } return o(e, [{ key: "work", value: function(e, t) { var n = this, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "worker"; if (!this.workers[i]) throw new Error("Invalid workerId " + i); return new Promise(function(a, r) { var s = c; c += 1, l[s] = { resolve: a, reject: r }, n.workers[i].postMessage({ id: s, func: e, args: t }) }) } }]), e }(); e.exports = u }, function(e, t, n) { // ========================= // Function_791 // ========================= "use strict"; function i(e) { if (Array.isArray(e)) { for (var t = 0, n = Array(e.length); t < e.length; t++) n[t] = e[t]; return n } return Array.from(e) } function a(e, t) { if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") } var r = function() { function e(e, t) { for (var n = 0; n < t.length; n++) { var i = t[n]; i.enumerable = i.enumerable || !1, i.configurable = !0, "value" in i && (i.writable = !0), Object.defineProperty(e, i.key, i) } } return function(t, n, i) { return n && e(t.prototype, n), i && e(t, i), t } }(), s = n(361); e.exports = function() { function e() { a(this, e) } return r(e, [{ key: "postMessage", value: function(e) { var t = this, n = e.id, a = e.func, r = e.args; s[a].apply(s, i(r)).then(function(e) { t.onmessage({ data: { id: n, results: e } }) }) } }]), e }() }, function(e, t) { // ========================= // Function_792 // ========================= "use strict"; e.exports = function() { var e = window.location, t = e.protocol, n = e.origin; return !!t && !!n && "chrome-extension" === t && n.replace(t + "//", "").length > 0 } }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t) { // ========================= // Function_946 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_947 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_948 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_949 // ========================= e.exports = '\n\t\n\n' }, function(e, t) { // ========================= // Function_950 // ========================= e.exports = '\n\n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_951 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_952 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_953 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_954 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_955 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_956 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_957 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_958 // ========================= e.exports = '\n\t\n' }, function(e, t) { // ========================= // Function_959 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_960 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_961 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_962 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_963 // ========================= e.exports = '\n\n \n\n \n \n \n \n \n \n \n\n\n' }, function(e, t) { // ========================= // Function_964 // ========================= e.exports = '\n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_965 // ========================= e.exports = '\n\n \n\n \n \n \n \n \n \n \n \n \n \n\n\n' }, function(e, t) { // ========================= // Function_966 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_967 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_968 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_969 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_970 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_971 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_972 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_973 // ========================= e.exports = '\n \n'; }, function(e, t) { // ========================= // Function_974 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_975 // ========================= e.exports = '\n' }, function(e, t) { // ========================= // Function_976 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_977 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_978 // ========================= e.exports = '\n \n \n \n\n' }, function(e, t) { // ========================= // Function_979 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_980 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_981 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_982 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_983 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_984 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_985 // ========================= e.exports = '\n permission-camera\n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_986 // ========================= e.exports = '\n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_987 // ========================= e.exports = '\n permission-location\n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_988 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_989 // ========================= e.exports = '\n permission-popup\n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_990 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_991 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_992 // ========================= e.exports = '\n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_993 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_994 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_995 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_996 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_997 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_998 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_999 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1000 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1001 // ========================= e.exports = '\n \n \n \n\n' }, function(e, t) { // ========================= // Function_1002 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1003 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1004 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1005 // ========================= e.exports = '\n \n \n\n' }, function(e, t) { // ========================= // Function_1006 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1007 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1008 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1009 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1010 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1011 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1012 // ========================= e.exports = '\n \n \n' }, function(e, t) { // ========================= // Function_1013 // ========================= e.exports = '\n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1014 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1015 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1016 // ========================= e.exports = '\n \n \n \n' }, function(e, t) { // ========================= // Function_1017 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1018 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1019 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1020 // ========================= e.exports = '\n \n \n' }, function(e, t) { // ========================= // Function_1021 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1022 // ========================= e.exports = '\n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1023 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1024 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1025 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n' }, function(e, t) { // ========================= // Function_1026 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1027 // ========================= e.exports = '\n\n\n\n\n\n' }, function(e, t) { // ========================= // Function_1028 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1029 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n \n\n\n' }, function(e, t) { // ========================= // Function_1030 // ========================= e.exports = '\n \n \n \n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1031 // ========================= e.exports = '\n \n \n \n \n \n \n\n' }, function(e, t) { // ========================= // Function_1032 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1033 // ========================= e.exports = '\n\n \n \n \n\n \n \n \n\n' }, function(e, t) { // ========================= // Function_1034 // ========================= e.exports = '\n \n' }, function(e, t) { // ========================= // Function_1035 // ========================= e.exports = '\n \n\n' }, function(e, t) { // ========================= // Function_1036 // ========================= e.exports = '\n\n \n \n \n\n \n \n \n\n' }, function(e, t) { // ========================= // Function_1037 // ========================= e.exports = '\n \n\n' }, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , function(e, t, n) { // ========================= // Function_1286 // ========================= e.exports = function() { return new Worker(n.p + "m3dao-worker-bundle.js") } }]);