From 1b2c4cb487748a25cb536fae0c23be0883509742 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Sat, 6 Aug 2016 19:17:36 +0200 Subject: [PATCH] Added preference to control rng type. --- ...sBlocker@kkapsner.de-0.3.1-Development.xpi | Bin 16379 -> 17467 bytes lib/askForPermission.js | 2 +- lib/callingStack.js | 2 +- lib/intercept.js | 16 ++- lib/modifiedAPI.js | 27 ++-- lib/randomSupplies.js | 68 +++++++++++ locale/de-DE.json | 113 +++++++++-------- locale/en-US.json | 115 ++++++++++-------- package.json | 16 +++ 9 files changed, 233 insertions(+), 126 deletions(-) create mode 100644 lib/randomSupplies.js diff --git a/CanvasBlocker@kkapsner.de-0.3.1-Development.xpi b/CanvasBlocker@kkapsner.de-0.3.1-Development.xpi index 4b2bd09c861e1d2bc3fde54709d1d33e92db6789..561b71beaa9f0d94f7d6b87b0e541112ff014d13 100644 GIT binary patch delta 9883 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 Z!`$sJ6~My%9uD{Qcl~NO?Bc(l{tFjy delta 8758 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 diff --git a/lib/askForPermission.js b/lib/askForPermission.js index bff6546..d9b40bd 100644 --- a/lib/askForPermission.js +++ b/lib/askForPermission.js @@ -14,7 +14,7 @@ if (context){ var nodeName; try { - nodeName = context.nodeName + nodeName = context.nodeName; } catch (e){} if (nodeName === "CANVAS"){ diff --git a/lib/callingStack.js b/lib/callingStack.js index 6cb9ce4..a3d7831 100644 --- a/lib/callingStack.js +++ b/lib/callingStack.js @@ -1,4 +1,4 @@ -/* global console,exports */ +/* global exports */ /* jslint moz: true */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/lib/intercept.js b/lib/intercept.js index 0a415d5..71ba69f 100644 --- a/lib/intercept.js +++ b/lib/intercept.js @@ -5,10 +5,22 @@ (function(){ "use strict"; - const {changedFunctions} = require("./modifiedAPI"); + const {changedFunctions, setRandomSupply} = require("./modifiedAPI"); + const randomSupplies = require("./randomSupplies"); + setRandomSupply(randomSupplies.nonPersistent); var apiNames = Object.keys(changedFunctions); var undef; + function setRandomSupplyByType(type){ + switch (type){ + case "persistent": + setRandomSupply(randomSupplies.persistent); + break; + default: + setRandomSupply(randomSupplies.nonPersistent); + } + } + exports.setRandomSupplyByType = setRandomSupplyByType; exports.intercept = function intercept({subject: window}, {check, ask, notify, prefs}){ apiNames.forEach(function(name){ var changedFunction = changedFunctions[name]; @@ -34,8 +46,8 @@ case "allow": return original; case "fake": + setRandomSupplyByType(prefs("rng")); if (changedFunction.fake){ - return changedFunction.fake; } else { diff --git a/lib/modifiedAPI.js b/lib/modifiedAPI.js index e4a3855..3b1c1b9 100644 --- a/lib/modifiedAPI.js +++ b/lib/modifiedAPI.js @@ -1,20 +1,13 @@ -/* jslint moz: true, bitwise: true */ +/* jslint moz: true */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ (function(){ "use strict"; - const rnd = {}; + var randomSupply = null; + function getFakeCanvas(window, original){ - var domain = window.document.location.host; - if (!rnd[domain]){ - rnd[domain] = new Uint8Array(128); - for (var i = 0; i < rnd[domain].length; i += 1){ - rnd[domain][i] = Math.floor(Math.random() * 0xFF); - } - console.log("created new rnd for domain", domain); - } var context = window.HTMLCanvasElement.prototype.getContext.call(original, "2d"); var imageData, data, source; if (context){ @@ -38,14 +31,10 @@ } data = imageData.data; var l = data.length; + var rng = randomSupply.getRng(l, window); for (var i = 0; i < l; i += 1){ - var value = source[i]; - var index = value & 0x7F; - var bitIndex = ((i & 0x03) << 1) | (value >>> 7); - var bit = (rnd[domain][index] >>> bitIndex) & 0x01; - if (bitIndex % 2) console.log(rnd[domain][index], index, bitIndex, bit); - data[i] = value ^ bit; + data[i] = rng(source[i], i); } var canvas = original.cloneNode(true); context = window.HTMLCanvasElement.prototype.getContext.call(canvas, "2d"); @@ -55,6 +44,10 @@ function getWindow(canvas){ return canvas.ownerDocument.defaultView; } + + exports.setRandomSupply = function(supply){ + randomSupply = supply; + }; // changed functions and their fakes exports.changedFunctions = { getContext: { @@ -111,7 +104,7 @@ imageData.data[i] = data[i]; } return imageData; - } + }; } }, readPixels: { diff --git a/lib/randomSupplies.js b/lib/randomSupplies.js new file mode 100644 index 0000000..4b9c062 --- /dev/null +++ b/lib/randomSupplies.js @@ -0,0 +1,68 @@ +/* jslint moz: true, bitwise: true */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +(function(){ + "use strict"; + + const persistentRnd = {}; + exports.persistent = { + getRng: function(length, window){ + var domain = window.document.location.host; + if (!persistentRnd[domain]){ + persistentRnd[domain] = new Uint8Array(128); + for (var i = 0; i < persistentRnd[domain].length; i += 1){ + persistentRnd[domain][i] = Math.floor(Math.random() * 0xFF); + } + } + var bitSet = persistentRnd[domain]; + + return function(value, i){ + var index = value & 0x7F; + var bitIndex = ((i & 0x03) << 1) | (value >>> 7); + var bit = (bitSet[index] >>> bitIndex) & 0x01; + return value ^ bit; + }; + } + }; + + exports.nonPersistent = { + getRng: function(length, window){ + var randomI = 65536; + // var randomOffset = 0; + var randomNumbers = new Uint8Array(Math.min(65536, length)); + + return function(value, i){ + if (randomI >= randomNumbers.length){ + randomI = 0; + // randomOffset += randomNumbers.length; + if (length - i < 65536){ + randomNumbers = new Uint8Array(length - i); + } + window.crypto.getRandomValues(randomNumbers); + } + var rnd = randomNumbers[randomI]; + if (value >= 0x80){ + value = value ^ (rnd & 0x1F); + } + else if (value >= 0x40){ + value = value ^ (rnd & 0x0F); + } + else if (value >= 0x20){ + value = value ^ (rnd & 0x07); + } + else if (value >= 0x10){ + value = value ^ (rnd & 0x03); + } + else if (value >= 0x08){ + value = value ^ (rnd & 0x01); + } + // else if (value >= 0x04){ + // value = value ^ (rnd * 0x00); + // } + randomI += 1; + return value; + }; + } + }; +}()); \ No newline at end of file diff --git a/locale/de-DE.json b/locale/de-DE.json index 858b8ec..c55587f 100644 --- a/locale/de-DE.json +++ b/locale/de-DE.json @@ -1,54 +1,63 @@ { - "allowPDFCanvas_description": "Die native pdf.js verwendet um den Inhalt von PDFs anzuzeigen. Wenn viele Nachfragedialoge erscheinen oder die PDF-Ansicht nicht funktioniert, müssen diese erlaubt werden.", - "allowPDFCanvas_title": " in PDFs erlauben", - "askForInvisiblePermission": "Wollen Sie unsichtbare erlauben?", - "askForInvisibleReadoutPermission": "Wollen Sie das Auslesen von unsichtbaren erlauben?", - "askForPermission": "Wollen Sie erlauben?", - "askForReadoutPermission": "Wollen Sie das Auslesen von erlauben?", - "askForVisiblePermission": "Wollen Sie das rot umrandete erlauben?", - "askForVisibleReadoutPermission": "Wollen Sie das Auslesen des rot umrandeten erlauben?", - "askOnlyOnce_description": "Wenn der Blockiermodus des Canvas Blockers auf \"um Erlaubnis fragen\" oder \"bei Auslese-API um Erlaubnis fragen\" gesetzt ist, erscheint jedes mal ein Abfragedialog, wenn eine Seite versucht, die (Auslese-)API aufzurufen. Diese Einstellung versucht diese Abfrage nur einmal pro Seite anzuzeigen, unabhängig davon wie oft die API aufgerufen wird. Es können trotzdem mehrere Dialoge pro Seite erscheinen.", - "askOnlyOnce_title": "Nur einmal nachfragen", - "blackList_description": "Domänen oder URLs, die die -API niemals verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt werden.", - "blackList_title": "Blacklist", - "blockMode_description": "", - "blockMode_options.allow everything": "alles erlauben", - "blockMode_options.allow only white list": "nur Einträge der Whitelist erlauben", - "blockMode_options.ask for permission": "um Erlaubnis fragen", - "blockMode_options.ask for readout API permission": "bei Auslese-API um Erlaubnis fragen", - "blockMode_options.block everything": "alles blockieren", - "blockMode_options.block only black list": "nur Einträge der Blacklist blockieren", - "blockMode_options.block readout API": "Auslese-API blockieren", - "blockMode_options.fake readout API": "Auslese-API vortäuschen", - "blockMode_title": "Blockiermodus", - "maxFakeSize_description": "Maximale Vortäuschgröße", - "maxFakeSize_": "Canvas, die eine größe Fläche als die hier angegeben Zahl haben, werden nicht vorgetäuscht. (Null eingeben, um es zu deaktivieren.)", - "disableNotifications": "Benachrichtigungen deaktivieren", - "displayCallingStack": "Aufrufestack anzeigen", - "displayFullURL": "URL anzeigen", - "enableStackList_description": "", - "enableStackList_title": "Dateispezifische Whitelist verwenden", - "fakedReadout": "Auslese vorgetäuscht auf {url}", - "ignoreList_description": "Domänen oder URLs, bei denen keine Benachrichtigung angezeigt werden. Mehrere Einträge müssen durch ein Komma getrennt werden.", - "ignoreList_title": "Ignorierliste", - "ignorelistDomain": "verschweige Domain", - "ignorelistURL": "ignoriere URL", - "inputIgnoreDomain": "Geben Sie die Domain ein, die zur Ignorierliste hinzugefügt werden soll:", - "inputWhitelistDomain": "Geben Sie die URL RegExp ein, die erlaubt werden soll:", - "inputWhitelistURL": "Geben Sie die Domain ein, die erlaubt werden soll:", - "settings": "Einstellungen", - "showCallingFile_description": "", - "showCallingFile_title": "Aufrufende Datei anzeigen", - "showCompleteCallingStack_description": "", - "showCompleteCallingStack_title": "Kompletten Aufrufestack anzeigen", - "showNotifications_description": "Benachrichtigungen anzeigen, wenn der Blockiermodus auf \"Auslese-API vortäuschen\" gesetzt ist.", - "showNotifications_title": "Benachrichtigungen anzeigen", - "sourceOutput": "Aufrufende Datei", - "stackEntryOutput": "{url} Zeile {line} Spalte {column}", - "stackList_description": "JS-Dateien, die die -API verwenden dürfen. Die Angabe muss hier im JSON-Format vorliegen. Beispiel: [{\"url\": \"http://domain/datei1.js\"}, {\"url\": \"http://domain/datei2.js\", \"line\": 1, \"column\": 4, \"stackPosition\": -3}]", - "stackList_title": "Dateispezifische Whitelist", - "whiteList_description": "Domänen oder URLs, die die -API verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt werden.", - "whiteList_title": "Whitelist", - "whitelistDomain": "erlaube Domain", - "whitelistURL": "erlaube URL" + "allowPDFCanvas_description": "Die native pdf.js verwendet um den Inhalt von PDFs anzuzeigen. Wenn viele Nachfragedialoge erscheinen oder die PDF-Ansicht nicht funktioniert, müssen diese erlaubt werden.", + "allowPDFCanvas_title": " in PDFs erlauben", + "askForInvisiblePermission": "Wollen Sie unsichtbare erlauben?", + "askForInvisibleReadoutPermission": "Wollen Sie das Auslesen von unsichtbaren erlauben?", + "askForPermission": "Wollen Sie erlauben?", + "askForReadoutPermission": "Wollen Sie das Auslesen von erlauben?", + "askForVisiblePermission": "Wollen Sie das rot umrandete erlauben?", + "askForVisibleReadoutPermission": "Wollen Sie das Auslesen des rot umrandeten erlauben?", + "askOnlyOnce_description": "Wenn der Blockiermodus des Canvas Blockers auf \"um Erlaubnis fragen\" oder \"bei Auslese-API um Erlaubnis fragen\" gesetzt ist, erscheint jedes mal ein Abfragedialog, wenn eine Seite versucht, die (Auslese-)API aufzurufen. Diese Einstellung versucht diese Abfrage nur einmal pro Seite anzuzeigen, unabhängig davon wie oft die API aufgerufen wird. Es können trotzdem mehrere Dialoge pro Seite erscheinen.", + "askOnlyOnce_title": "Nur einmal nachfragen", + "blackList_description": "Domänen oder URLs, die die -API niemals verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt werden.", + "blackList_title": "Blacklist", + + "blockMode_description": "", + "blockMode_options.allow everything": "alles erlauben", + "blockMode_options.allow only white list": "nur Einträge der Whitelist erlauben", + "blockMode_options.ask for permission": "um Erlaubnis fragen", + "blockMode_options.ask for readout API permission": "bei Auslese-API um Erlaubnis fragen", + "blockMode_options.block everything": "alles blockieren", + "blockMode_options.block only black list": "nur Einträge der Blacklist blockieren", + "blockMode_options.block readout API": "Auslese-API blockieren", + "blockMode_options.fake readout API": "Auslese-API vortäuschen", + "blockMode_title": "Blockiermodus", + + "maxFakeSize_description": "Canvas, die eine größe Fläche als die hier angegeben Zahl haben, werden nicht vorgetäuscht. (Null eingeben, um es zu deaktivieren.)", + "maxFakeSize_title": "Maximale Vortäuschgröße", + + "rng_description": "", + "rng_options.persistent": "persistent", + "rng_options.non persistent": "nicht persistent", + "rng_title": "Zufallszahlengenerator", + + "disableNotifications": "Benachrichtigungen deaktivieren", + "displayCallingStack": "Aufrufestack anzeigen", + "displayFullURL": "URL anzeigen", + "enableStackList_description": "", + "enableStackList_title": "Dateispezifische Whitelist verwenden", + + "fakedReadout": "Auslese vorgetäuscht auf {url}", + "ignoreList_description": "Domänen oder URLs, bei denen keine Benachrichtigung angezeigt werden. Mehrere Einträge müssen durch ein Komma getrennt werden.", + "ignoreList_title": "Ignorierliste", + "ignorelistDomain": "verschweige Domain", + "ignorelistURL": "ignoriere URL", + "inputIgnoreDomain": "Geben Sie die Domain ein, die zur Ignorierliste hinzugefügt werden soll:", + "inputWhitelistDomain": "Geben Sie die URL RegExp ein, die erlaubt werden soll:", + "inputWhitelistURL": "Geben Sie die Domain ein, die erlaubt werden soll:", + "settings": "Einstellungen", + "showCallingFile_description": "", + "showCallingFile_title": "Aufrufende Datei anzeigen", + "showCompleteCallingStack_description": "", + "showCompleteCallingStack_title": "Kompletten Aufrufestack anzeigen", + "showNotifications_description": "Benachrichtigungen anzeigen, wenn der Blockiermodus auf \"Auslese-API vortäuschen\" gesetzt ist.", + "showNotifications_title": "Benachrichtigungen anzeigen", + "sourceOutput": "Aufrufende Datei", + "stackEntryOutput": "{url} Zeile {line} Spalte {column}", + "stackList_description": "JS-Dateien, die die -API verwenden dürfen. Die Angabe muss hier im JSON-Format vorliegen. Beispiel: [{\"url\": \"http://domain/datei1.js\"}, {\"url\": \"http://domain/datei2.js\", \"line\": 1, \"column\": 4, \"stackPosition\": -3}]", + "stackList_title": "Dateispezifische Whitelist", + "whiteList_description": "Domänen oder URLs, die die -API verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt werden.", + "whiteList_title": "Whitelist", + "whitelistDomain": "erlaube Domain", + "whitelistURL": "erlaube URL" } \ No newline at end of file diff --git a/locale/en-US.json b/locale/en-US.json index a611bf9..6020a90 100644 --- a/locale/en-US.json +++ b/locale/en-US.json @@ -1,55 +1,64 @@ { - "allowPDFCanvas_description": "Firefox's native PDF reader uses the API to display PDF content. If too many ask dialogs appear or the PDF reader does not work at all, these have to be allowed.", - "allowPDFCanvas_title": "Allow canvas in PDFs", - "askForInvisiblePermission": "Do you want to allow invisible ?", - "askForInvisibleReadoutPermission": "Do you want to allow invisible readout?", - "askForPermission": "Do you want to allow ?", - "askForReadoutPermission": "Do you want to allow readout?", - "askForVisiblePermission": "Do you want to allow the red bordered ?", - "askForVisibleReadoutPermission": "Do you want to allow the readout of the red bordered ?", - "askOnlyOnce_description": "When Canvas Blocker's Block mode is set to 'ask permission' or 'ask permission for readout API', a confirm message will appear every time a page tries to access the API or readout API. This setting tries to display the confirm message only once for each page regardless of how many times the page tries to access the API. Nevertheless, multiple confirm messages may still be displayed on some pages.", - "askOnlyOnce_title": "Ask only once", - "blackList_description": "Domains or URLs where the -API should always be blocked. To add multiple entries, separate them by commas.", - "blackList_title": "Black list", - "blockMode_description": "", - "blockMode_options.allow everything": "allow everything", - "blockMode_options.allow only white list": "allow only white list", - "blockMode_options.ask for permission": "ask for permission", - "blockMode_options.ask for readout API permission": "ask for readout API permission", - "blockMode_options.block everything": "block everything", - "blockMode_options.block only black list": "block only black list", - "blockMode_options.block readout API": "block readout API", - "blockMode_options.fake readout API": "fake readout API", - "blockMode_title": "Block mode", - "maxFakeSize_description": "Maximal fake size", - "maxFakeSize_": "Canvas with a bigger area than this number will not be faked. (Enter zero to disable.)", - "disableNotifications": "disable notifications", - "displayCallingStack": "display calling stack", - "displayFullURL": "display full URL", - "enableStackList_description": "", - "enableStackList_title": "Use file specific white list", - "fakedReadout": "Faked readout on {url}", - "ignoreList_description": "Domains or URLs where no notification will be shown. To add multiple entries, separate them by commas.", - "ignoreList_title": "Ignore list", - "ignorelistDomain": "silence domain", - "ignorelistURL": "ignore URL", - "inputIgnoreDomain": "Input domain to add to ignore list:", - "inputWhitelistDomain": "Input URL RegExp to add to white list:", - "inputWhitelistURL": "Input domain to add to white list:", - "settings": "settings", - "showCallingFile_description": "", - "showCallingFile_title": "Show calling file", - "showCompleteCallingStack_description": "", - "showCompleteCallingStack_title": "Display complete calling stack", - "showNotifications_description": "Show a notification when the block mode is set to \"fake readout API\".", - "showNotifications_title": "Show notifications", - "sourceOutput": "Calling file", - "stackEntryOutput": "{url} line {line} column {column}", - "stackList_description": "JS files which are allowed to use the -API. The input has to be in JSON format. Example: [{\"url\": \"http://domain/file1.js\"}, {\"url\": \"http://domain/file2.js\", \"line\": 1, \"column\": 4, \"stackPosition\": -3}]", - "stackList_title": "File specific white list", - "whilteList_title": "White list", - "whiteList_description": "Domains or URLs where the -API should not be blocked. To add multiple entries, separate them by commas.", - "whitelist": "whitelist", - "whitelistDomain": "whitelist domain", - "whitelistURL": "whitelist URL" + "allowPDFCanvas_description": "Firefox's native PDF reader uses the API to display PDF content. If too many ask dialogs appear or the PDF reader does not work at all, these have to be allowed.", + "allowPDFCanvas_title": "Allow canvas in PDFs", + "askForInvisiblePermission": "Do you want to allow invisible ?", + "askForInvisibleReadoutPermission": "Do you want to allow invisible readout?", + "askForPermission": "Do you want to allow ?", + "askForReadoutPermission": "Do you want to allow readout?", + "askForVisiblePermission": "Do you want to allow the red bordered ?", + "askForVisibleReadoutPermission": "Do you want to allow the readout of the red bordered ?", + "askOnlyOnce_description": "When Canvas Blocker's Block mode is set to 'ask permission' or 'ask permission for readout API', a confirm message will appear every time a page tries to access the API or readout API. This setting tries to display the confirm message only once for each page regardless of how many times the page tries to access the API. Nevertheless, multiple confirm messages may still be displayed on some pages.", + "askOnlyOnce_title": "Ask only once", + "blackList_description": "Domains or URLs where the -API should always be blocked. To add multiple entries, separate them by commas.", + "blackList_title": "Black list", + + "blockMode_description": "", + "blockMode_options.allow everything": "allow everything", + "blockMode_options.allow only white list": "allow only white list", + "blockMode_options.ask for permission": "ask for permission", + "blockMode_options.ask for readout API permission": "ask for readout API permission", + "blockMode_options.block everything": "block everything", + "blockMode_options.block only black list": "block only black list", + "blockMode_options.block readout API": "block readout API", + "blockMode_options.fake readout API": "fake readout API", + "blockMode_title": "Block mode", + + "maxFakeSize_description": "Canvas with a bigger area than this number will not be faked. (Enter zero to disable.)", + "maxFakeSize_title": "Maximal fake size", + + "rng_description": "", + "rng_options.persistent": "persistent", + "rng.non persistent": "non persistent", + "rng_title": "Random number generator", + + "disableNotifications": "disable notifications", + "displayCallingStack": "display calling stack", + "displayFullURL": "display full URL", + "enableStackList_description": "", + "enableStackList_title": "Use file specific white list", + + "fakedReadout": "Faked readout on {url}", + "ignoreList_description": "Domains or URLs where no notification will be shown. To add multiple entries, separate them by commas.", + "ignoreList_title": "Ignore list", + "ignorelistDomain": "silence domain", + "ignorelistURL": "ignore URL", + "inputIgnoreDomain": "Input domain to add to ignore list:", + "inputWhitelistDomain": "Input URL RegExp to add to white list:", + "inputWhitelistURL": "Input domain to add to white list:", + "settings": "settings", + "showCallingFile_description": "", + "showCallingFile_title": "Show calling file", + "showCompleteCallingStack_description": "", + "showCompleteCallingStack_title": "Display complete calling stack", + "showNotifications_description": "Show a notification when the block mode is set to \"fake readout API\".", + "showNotifications_title": "Show notifications", + "sourceOutput": "Calling file", + "stackEntryOutput": "{url} line {line} column {column}", + "stackList_description": "JS files which are allowed to use the -API. The input has to be in JSON format. Example: [{\"url\": \"http://domain/file1.js\"}, {\"url\": \"http://domain/file2.js\", \"line\": 1, \"column\": 4, \"stackPosition\": -3}]", + "stackList_title": "File specific white list", + "whilteList_title": "White list", + "whiteList_description": "Domains or URLs where the -API should not be blocked. To add multiple entries, separate them by commas.", + "whitelist": "whitelist", + "whitelistDomain": "whitelist domain", + "whitelistURL": "whitelist URL" } \ No newline at end of file diff --git a/package.json b/package.json index 6fab15c..30fc647 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,22 @@ "type": "integer", "value": 0 }, + { + "name": "rng", + "title": "Random number generator", + "type": "menulist", + "value": "nonPersistent", + "options": [ + { + "value": "nonPersistent", + "label": "non persistent" + }, + { + "value": "persistent", + "label": "persistent" + } + ] + }, { "name": "askOnlyOnce", "title": "Ask only once",